用户工具

站点工具


open:js_sdk_vod

JS-SDK点播接入指南

一、更新记录

日期 版本号 更新内容
2017-08-14 1.0.0 支持点播上传功能

二、简介

本文档指导开发者通过引用JS的方式,开发自己PC网页及H5来对接微吼直播平台,默认读者了解前端开发技术且拥有JavaScript基础,如需在移动端使用视频模块,要求开发者了解HTML5 Video标签及Media标签的使用。

目前支持的功能:

分类 功能 描述
点播上传 视频上传 支持单视频上传
点播上传 断点续传 支持中途暂停之后,可以从上次上传完成的Part的位置继续上传
点播上传 视频显示 支持显示文件名称、上传进度条及百分比
点播上传 视频格式 支持rmvb、mp4、avi、wmv、mkv、flv、mp3、wav、mov
点播上传 视频状态 支持“准备中”、“上传中”、“上传成功”“上传错误”状态

三、向微吼申请开通权限

请点击API&SDK权限申请 ,客户经理会在线上与您直接联系。审核通过后,可以生成开发应用所需的App_Key 请立即查看

四、SDK引入、初始化并注入权限验证

1.依赖库

本SDK依赖于JQuery库,请在需要引入JQuery的页面,按以下代码示例进行引入,对JQuery版本没有要求:

<script src="http://cnstatic01.e.vhall.com/3rdlibs/jquery/1.11.2/jquery.min.js" type="text/javascript"></script>

2.引入JS文件

在需要调用SDK的页面插入以下代码引入JS文件:

<script type="text/javascript" src="http://cnstatic01.e.vhall.com/demand-upload-jssdk/dist/1.0.0/vhallDemandSDK.js"></script>

注:支持使用AMD/CMD标准模块加载规范加载。支持https。

3.初始化及权限验证

请使用以下的方法和参数进行SDK的初始化以及权限的验证:

VHALL_SDK.init({
   account : '',//必填,唯一用户id,与使用第三方创建用户接口所传的third_user_id需一致)
   email : '',//参数必填,值可为空,用于与嵌入视频区用户同步
   username : '',//必填,用户昵称用以在各模块中显示
   roomid :'',//必填,当前聊天所在活动id
   app_key :'',//必填,启用服务唯一验证,API/SDK权限申请后生成,此参数名在1.0.0版本中为appkey,使用当前版本时请更新
   signedat :'',//必填,启用服务唯一验证,unix时间戳
   sign :'',//必填,启用服务唯一验证,有效期一小时,见下面的生成规则
   facedom :'',//可选,当使用微吼表情时必填,呼出表情弹窗dom属性 如('#id','.class'等)
   textdom : '',//可选,当使用微吼表情时必填,插入表情文本dom属性 如('#id','.class'等)
   videoContent : '',//【新】可选,当需要使用视频模块时,插入视频dom属性 如('#id','.class'等)
   docContent: '',//【新】可选,当需要使用文档模块时,插入视频dom属性 如('#id','.class'等)
});

注:如使用了网页嵌入,为确保嵌入页面的用户与SDK各模块中的用户是同一个用户,请尽量传入与视频区嵌入相同的email参数,否则会被统计成两个不同的用户。

以上参数sign由PHP生成,其生成规则如下:

将account、email、username、roomid、app_key以及signedat这些参数:

1按参数名升序排列
2然后按参数名1+参数值+参数名2+参数值拼接
3在首尾各加上secret_key
4计算md5作为sign

示例如下:

<?php
$secret_key = "f145b675f441cc00dd3e55746a0f4780";
$params = [
    "roomid"=> "123456789",
    "account"=> "12345",
    "email"=> "zhangsan@vhall.com",
    "username"=> "zhangsan",
    "app_key"=> "3eb72619af748d73f7fda1e6b0c692a9",
    "signedat"=> "1484620708"
];
// 按参数名升序排列
ksort($params);
// 将键值组合
array_walk($params,function(&$value,$key){
	$value = $key . $value;
});
// 拼接,在首尾各加上$secret_key,计算MD5值
$sign = md5($secret_key . implode('',$params) . $secret_key);
// 结果形如
// $sign=md5("f145b675f441cc00dd3e55746a0f4780account12345app_key3eb72619af748d73f7fda1e6b0c692a9emailzhangsan@vhall.comroomid123456789signedat1484620708usernamezhangsanf145b675f441cc00dd3e55746a0f4780");
// 计算结果
// $sign = '92eec52c58b9bddc0ba663c75a3c1f7f'; //签名有效期只有一个小时 

VHALL_SDK初始化时服务端返回的错误码:

错误码 说明
1001 活动不存在
1002 用户昵称不能空
1003 用户id不能空
1004 appkey不存在
1005 签名验证超时
1006 签名错误
1007 当前活动不是该appkey下所属活动

对上述内容中所提appkey、app_key以及secret_key三个参数的说明:

  • appkey和app_key均表示添加应用后所得到的AppKey列对应的值
  • secret_key表示添加应用后所得到的SecretKey列对应的值(注意与AppSecretKey区分

五、详细功能说明

1.点播上传功能

1.1初始化

    /** 
     * 1、初始化dom
     */
    <input type="file" id="upload"/> 

1.2权限验证

    /** 
     * 该代码为服务端代码 仅供参考
     */ 
        function sign(appKey, secretKey) {
            var param = {};
            return {
                doSign :function(){
                    param.auth_type = 2;
                    param.app_key = appKey;
                    param.signed_at = new Date().getTime().toString().substr(0, 10);
                    var paramArray = getArray(param);
                    var signStr = secretKey;

                    for(var i =0; i < paramArray.length; i ++) {
                        signStr += paramArray[i];
                    }

                    signStr += secretKey;

                    return {
                        str : hex_md5(signStr), /* 用MD5加密得到最终sign */
                        time : param.signed_at /* 获取到sign的时间戳 */
                    }
                }
            }

            function getArray(paramObj) {
                var paramArray = [];
                var length = 0;
                for (var i in paramObj) {
                    paramArray[length] = i + paramObj[i];
                    length += 1;
                }
                paramArray.length = length;
                return paramArray.sort();
            }
        }  

1.3调用方法

    /** 
     * 3、调用 vhallDemandSDK 方法
     */
         vhallDemandSDK('#upload',{
            params: {
                sign:sign,  /**sign**/
                signed_at:time, /**获取sign的时间戳**/
                app_key:appKey
            },
            ready: function() {
                /**
                  * 初始化完成的回调函数
                **/
            },
            beforeUpload:function() {
                /**
                  * 准备中...(文件进行MD5转换过程)
                **/
            },
            progress:function(percent, file){
               /**
                 * 上传中...'
                 * 'percent 上传进度百分比'
                 * 'file 上传文档具体信息
               **/
            },
            uploadSuccess: function(res){
               /**
                 * 上传成功!'
                 * 'res 成功返回的回放ID records_id 和 活动ID webinar_id
               **/
            },
            error: function(msg,file,e){
                /**
                  * 上传出错'
                  * 'msg 错误返回的状态码信息'
                **/
            }
        })

1.4错误状态码

错误码 说明
10000 当前浏览器不支持断点上传
10001 请传入类似于”#id”选择器
10003 当前传入的dom不是input file
10004 不支持该文件格式
10005 上传文件大于10GB
10006 获取上传临时授权失败
10007 当前账号无上传权限

1.5DEMO

地址:http://cnstatic01.e.vhall.com/demand-upload-jssdk/dist/1.0.0/index.html?appKey=appKey&secretKey=secretKey

需要将获取到的 appKey 和 secretKey 以URL传参的方式拼接到URL中即可使用

1.6其他说明 为保证本SDK能够正常使用请尽量在高版本浏览器下使用本SDK产品(Chrome58及以上版本)

open/js_sdk_vod.txt · 最后更改: 2017/08/24 16:22 由 xiaojiong