• 首页
  • 教育培训
    • 双师课堂
    • 直播网校
    • 大班课堂
    • 小班课堂
  • 互动直播
    • 财经直播
    • 网络互动直播
    • 企业培训
    • 年会直播
    • 移动直播
    • 营销直播
    • 网络研讨会
    • 网络市场活动
    • 企业级网络会议
  • 关于我们
    • 公司新闻
    • 关于我们
    • 荣誉资质
    • 联系我们
    • 人才招聘
  • 帮助与下载
    • 工具下载
    • app下载
    • 视频教程
    • FAQ
    • 开发者
    • 开发文档(新)
    • 功能说明
    • SDK下载
  • 销售热线:4006-010-263
  • 免费试用
English
  • 接口使用指引
  • Web接口开发指南
    • Webcast API接口
      • Webcast Json API
      • Webcast URL API
    • Training API接口
      • Training Json API
      • Training URL API
    • Web Flash SDK
      • 直播 SDK
      • 点播 SDK
    • Web H5 SDK
      • 桌面端点播SDK
      • 移动端点播SDK
      • 移动端直播SDK
      • 桌面端直播SDK
  • 实时系统回调接口
  • APP SDK开发指南
    • SDK 快速选择指南
    • Ios 接口开发
      • IOS-VOD SDK
      • IOS-RT SDK
      • IOS-Player SDK
      • IOS-Fast SDK
    • Android 接口开发
      • Android 接口FAQ
      • Android -VOD SDK
      • Android -RT SDK
      • Android-Player SDK
      • Android-Fast SDK
  • 微信小程序接口
    • 微信小程序 SDK
      • 微信小程序 点播SDK
      • 微信小程序 直播SDK

移动端直播SDK

1  文档介绍

1.1文档目的

众多客户希望能拥有更多的播放器设计能力,特别是对于拥有UI, 开发人员资源的公司。为此,特提供web端播放器集成SDK,以便客户可以针对自己的业务场景设计最符合自己业务场景的播放器。

1.2术语与缩写解释

编号

术语

解释

  1.  

SDK

Software Development Kit

  1.  

Widget

部件,能展现特定功能的html片段。目前仅提供视频部件和文档部件

  1.  

Webcast服务

Gensee提供的直播服务,见http://www.gensee.com/live.php

  1.  

Training服务

Gensee提供的教育培训服务,见http://www.gensee.com/train.php

  1.  

站点(Site)

Gensee的一个客户,拥有一个站点。通常站点的标示是域名,比如test.gensee.com

  1.  

 

 

  1.  

 

 

  1.  

 

 

  1.  

 

 

 

2 SDK使用介绍

2.1需要引入的javascript

<script type="text/javascript" src="http://static.gensee.com/webcast/static/sdk/js/gssdk-1.3.js"></script>

注意:如果直接引用,在sdk内容更新时可能存在未下载最新sdk而使用浏览器中缓存的版本,在用户不清空缓存时会存在代码不一致导致异常的报错。建议对sdk添加时间戳,保证gssdk-1.3.js引入时是服务器最新版本。
例:
<script type="text/javascript">
(function(){ 
     var randomh=Math.random();
     var e = document.getElementsByTagName("script")[0];
     var d = document.createElement("script");
     d.src = "//site.com/js.js©x="+randomh+"";
     d.type = "text/javascript"; 
     d.async = true;
     d.defer = true;
     e.parentNode.insertBefore(d,e);
 })();
document.write("<script type='text/javascript' src='//static.gensee.com/webcast/static/sdk/js/gssdk-1.3.js©v=" + Date.now() + "'></script>");
</script>

2.2Html命名空间

<html xmlns:gs="http://www.gensee.com/ec">

 

2.3Video Widget (必选)

 

注意:一场直播在一个页面上请保证只有一个VideoWidget!

 

网页html的body内,任意地方可以插入如下代码:

 

<gs:video-live id="videoComponent" site="192.168.0.168" ctx="webcast" ownerid="f8625298d18042fbbba7a8" uid="55831" uname="user5623" authcode="333333"/>

 

必填属性说明:

  • site:  站点域名 (必填)Example:www.gensee.com
  • ownerid: webcast服务下,表示为直播ID;training服务下,表示为课堂ID (必填)
  • authcode: (可选)校验码。对应直播(课堂)的web端口令。若直播(课堂)要求输入口令,则此属性必填。否则不需要。

可选属性说明

  • id: html的元素ID。(可选)用户可自行指定。SDK将以此ID作为Widget ID。
  • ctx: 服务选项。可选值为webcast或training。无此属性说明默认使用webcast服务。
  • uid: 用户ID (数字型,可选)。若无此属性,系统会自动生成随机UID。为了避免uid跟Gensee系统的内部用户ID冲突,该uid要求必须大于1000000000 小于9007199254740992。
  • uname: 用户名称(可选)。若无此属性,系统自动生成英文随机名称。若直播(课堂)要求登录,则用户名称必须是系统的登录账号。注:登录方式无论是账号密码或手机动态密码,接口只能使用账户登录。
  • encodetype: 指定authcode的编码方式。值若为md5,则authcode必须经过MD5的32位小写编码过。不写该属性或者值为空,则authcode为明文。
  • password: (可选)若直播(课堂)要求登录,此属性表示登录账号的密码。
  • group: 分组名称。(可选) 适用于不同直播(课堂)的Widget放在同一个页面中的情况。Group用来标示哪些Video和Doc Widget属于同一个组。相同组内的Widget可以共享通讯信息。若不填,SDK会自动将Widget归属到默认组。
  • k: 若直播开启第三方认证功能,则需要k值验证。关于第三方认证,请参看Gensee_URL_API_SPEC。
  • lang: 指定语言。中文是zh_CN, 英文是 en,日文是ja。
  • bgimg: 设置背景图案,图片URL地址。
  • completed: video widget创建之后调用的回调函数名称。若指定回调函数名称,则在widget生成后,会传递指定数据给该回调函数(说明见Part6 可扩展实时数据调用)
  • video:设置实时是否使用音频还是视频,值为:true或者false,true表示视频,false表示音频,默认情况true。
  • btnimg:设置播放按钮图案,图片url地址。
  • stream: 设置移动端初始化码流。值为:0 – 标清,1 – 原始。默认为1。
  • embednetsettings:设置内置优选网络是否开放,值为true或者false。默认开放。
  • gsver:采用何种技术的播放器(H5\ Flash\H5 RTMP)。可选值为2、3或者其他(2:HLS,3:RTMP)。默认值为空(即Flash播放器)
  • post  k值认证方式,get请求或post请求。可选值为true或者false。默认值为true。(可选)
  • groupCode:分组code用于不同分组的聊天信息进行分组过滤
  • userdata:用户自定义参数(格式:key=value&key1=value)

2.4Doc Widget(可选)

网页html的body内,任意地方可以插入如下代码:

 

<gs:doc id="docComponent" site="192.168.0.168" ownerid=" f8625298d18042fbbba7a8" />

 

属性说明:

  • id: html的element id。(可选)
  • site: 站点域名(必填)
  • ownerid:  直播ID。(必填)
  • group: 分组名称。作用同Video Widget的Group属性。(可选)
  • bgimg: 设置背景图案,图片URL地址。
  • ctx: 服务选项。可选值为webcast或training。无此属性说明默认使用webcast服务。(可选)

2.5Channel (可选)

Channel是SDK提供的基于组(group)的数据通讯通道。相同组(group)的Widget和Channel共享通讯方式和数据。

通讯分两种形式:

  • 监听事件
  • 提交数据

根据不同类型,把对应的API罗列在下文中。事件API,见第四章节;提交API,见第五章节。

所有事件的参数都是一个js对象,方便内部以JSON格式传递。

用户可以根据需求决定是否使用Channel。

通过如下js代码可以创建Channel:

 

GS.createChannel(groupName);

 

2.6样例代码

<!DOCTYPE html>

<html xmlns:gs="http://www.gensee.com/ec">

<head>

    <meta charset="utf-8"/>

    <title>Example Page</title>

    <script type="text/javascript" src="http://static.gensee.com/webcast/static/sdk/js/gssdk.js"></script>

    <link href="http://static.gensee.com/webcast/static/sdk/css/bootstrap.css" type="text/css" rel="stylesheet">

    <style type="text/css">

        .videoDiv {

            height: 400px;

        }

 

        .docDiv {

            height: 198px;

            padding: 1px;

        }

    </style>

    <script type="text/javascript">

        //1. 根据组获得通讯通道

        var channel = GS.createChannel();

        //2. 通过通道监听点名事件

        channel.bind("onRollcall", function (event) {

            alert(event.data.timeout);

        });

        //2. 通过通道监听问答事件

        channel.bind("onQA", function (event) {

            alert(event.data.question);

        });

        //3.通过通道提问,提问,私聊,公聊的提交可以设置回调函数,同时resultInfo的格式为//{result:true|false,data:data},data即为提交的数据

        channel.send("submitRollcall", {

            "id" : 23534677685687

        },function(resultInfo){

});

      // 4.通过通道提交点名信息

channel.send("submitQuestion", {

            "content" : "what's your name?"

        });

 

    </script>

</head>

<body>

<h2 align="center">Test Page</h2><br>

 

<div class="container">

    <div class="row-fluid">

        <div class="span6 videoDiv">

            <!-- Video Widget -->

            <gs:video-live site="www.gensee.com" ownerid="f8625298d18042fbbba7a8d4f75555ca"

                           authcode="333333" />

        </div>

        <div class="span6">

            <div class="docDiv">

                <!-- Doc Widget -->

                <gs:doc site="www.gensee.com" ownerid="f8625298d18042fbbba7a8d4f75555ca" />

            </div>

        </div>

    </div>

</div>

</body>

</html>

2.7Widget加载错误提示

有时候,由于用户在使用widget时,填入了错误参数,会导致widget加载失败。以下罗列所有的失败提示:

  • param_error:必填参数未填写
  • login_fail:要求登录,登录失败
  • not_assign:直播未与该用户关联,该用户不能观看
  • auth_fail:口令错误或第三方认证失败
  • not_found:直播不存在
  • service_disabled:服务(直播,教育培训等)已禁止
  • required_client_join:要求使用客户端,web端不可用
  • ipad_not_support:当前不支持移动平台
  • api_disabled:SDK功能未开启

2.8SDK调试工具

Gensee为每个客户(Site)均提供了独立的直播服务Web Player SDK调试页面,以辅助客户(Site)的开发人员调试直播服务SDK接口。

测试页面的URL规则如下:

  • http://{站点域名}/sdk/site/test/simple?ownerid={直播ID}&authcode={直播的普通参加者口令}&ctx={可选值为webcast或training。无此属性说明默认使用webcast服务}&gsver={可选值为2或者其他。无此属性说明默认使用SDK1.0版本}

URL格式范例:

  • http://test.gensee.com/sdk/site/test/simple?ownerid=abcd&authcode=123456&gsver=2
  • 工具截图

2.9SDK演示效果

Gensee为每个客户(Site)均提供了独立的直播服务Web Player SDK演示页面入口:

http://{站点域名}/sdk/

如图:

 

页面下方有场景选择,如图:

点击演播厅场景,进入演示效果页面,如下图:

 

点击剧场场景,进入演示效果,如图:

2.10手机iframe 嵌入原始链接测试工具

Gensee为每个客户(Site)均提供了独立的iframe嵌入原始链接调试页面,手机iframe下翻转会存在很多问题,尤其微信下,现提供解决方案,使用以下代码解决横竖屏问题

测试页面的URL规则如下:

  • http://{站点域名}/sdk/site/test/iframe?testUrl={原始访问链接 }

URL格式范例:

  • webcast:http://test.gensee.com/sdk/site/test/iframe?testUrl=http://test.gensee.com/webcast/site /entry/join-ea7825821b894a899ce509021cb3317d
  • training:http://test.gensee.com/sdk/site/test/iframe?testUrl=http://test.gensee.com/training /training/site/s/25100250

 

代码如下注意红色字体

<!doctype html>

<html>

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">

<script src=" jquery-2.1.4.min.js" type="text/javascript"></script>

<title>直播详情</title>

<style>

* {

         padding:0px;

         margin:0px;

}

html, body{

         width: 100%;

         height: 100%;

         border:0px;

         overflow:hidden;

}

</style>

</head>

<body>

<iframe name="ifm" id="ifm" src="http://192.168.1.106/webcast/site/entry/join-0e8d26fa83ec47fab0ace21e6bbc558d?nickName=oldold&token=111111" scrolling="yes" width="100%" height="100%" frameborder="0"></iframe>

<script type="text/javascript">

function f_load(){

         document.getElementById("ifm").height = window.innerHeight + "px";//高度(获取目标网页的高度自适应)

         document.getElementById("ifm").width = window.innerWidth + "px";//宽度(获取目标网页的宽度自适应)});

}

/*横竖屏*/

var gschi=0;//翻转屏hash数

function createOrientationChangeProxy(fn, scope) { 

    return function() { 

 

        clearTimeout(scope.orientationChangedTimeout); 

        var args = Array.prototype.slice.call(arguments, 0); 

        scope.orientationChangedTimeout = setTimeout($.proxy(function() { 

 

            var ori = window.orientation; 

            if (ori != scope.lastOrientation) { 

                fn.apply(scope, args); // 这里才是真正执行回调函数 

            } 

            scope.lastOrientation = ori; 

        }, scope), 200); 

    }; 

}

window.addEventListener("onorientationchange" in window ? "orientationchange" : "resize", createOrientationChangeProxy(function() { 

         setTimeout(function(){

                   //获取iframeurl

                   var src=$('#ifm').attr('src');

                   if(src.indexOf("#")){

                            var a=src.split("#"),

                            src=a[0];

                   }

                   //翻转数自增

                   gschi+=1;

                   //iframe加上hash重新传值src

                   $('#ifm').attr('src',src+'#gsorientationchange='+gschi);

                   f_load();

         },0);

}, window), false);

 

$(function(){

         f_load();

         setInterval(function(){

                   if($(window).scrollTop()!=0){

                            $(window).scrollTop(0);

                   }

         },100);

});

</script>

</body>

</html>

2.11DEMO与源码

为了方便客户方开发人员快速实现页面播放器的开发,我们提供了完全基于SDK接口制作 的网页DEMO播放器,并开放所有源码。

点击此处,下载DEMO播放器及源码

 

DEMO播放器包括2种:

  • PC端直播播放器
  • 移动端直播播放器

 

DEMO源码的使用:

  • 替换site="product.gensee.com"里的值为自己站点的域名
  • 替换ownerid="qnYvtuDg1R"为当前直播的sdk id
  • 如果设置密码请设置authcode=""的值为直播密码
  • 最后添加属性gsver="2"

 

DEMO播放器功能:

DEMO播放器中包括大部分的直播功能(并非全部),如需DEMO未包括的功能,仍然需要开发人员阅读本文档中的接口说明自行开发。

以下为主要功能

  • 直播播放器功能:

分类

功能说明

状态

直播状态

音视频

直播视频的显示

桌面共享的显示

插播视频的显示

文档

文档的显示

标注的显示

聊天

支持公聊

聊天的接收和发送

支持表情

问答

显示发布的问答

支持提问

问卷

显示发布的问卷

显示发布的问卷结果

提交问卷

点名

支持点名的响应

支持签到

系统消息

显示广播消息

优选网络

支持切换CDN线路

3监听事件API

注意:所有事件触发,将收到event对象。其中data属性即数据参数。本文档中均以json格式来表达数据参数

3.1onUrlOpen -- 打开第三方投票地址

备注:如果在移动端直接打开第三方连接,会把当前页刷掉,请妥善使用

参数:

{

"url": "http://www.google.com"

}

参数

说明

url

第三方投票URL,同时支持协同浏览

3.2onDocChange -- 文档翻页

参数:

{

"width": 800,

"height":600,

}

参数

说明

width

页宽

height

页高

3.3onDataReady -- SDK加载完毕,所有API生效

参数:

{

“minInterval”:0

“supportRTMP” : [ true | false ],

}

参数

说明

minInterval

聊天提问发言提交间隔,单位s,默认为0

 

3.4onVideoConfig -- 视频配置更改通知

参数:

{

"hasVideo":[true|false],

"width":320,

"height":240,

"type":["video"|"share"]

}

参数

说明

hasVideo

是否有视频数据, true 或者 false

width

流宽度

height

流高度

type

video – 当前Video Widget显示视频流;

share start – Video Widget显示共享流;

share stop – Video Widget 停止显示共享流

 

3.5onQA -- 收到问答消息

参数:

{

    "id": "abcd-efg-hi",

    "question": "how are you?",

    "submitor": "Tom",

    "answer": "fine, thank you.",

    "answerBy": "Jack",

    "submitTime": 9654123,

"answerTime": 8795623

"qaownerId": 8735466234

}

参数

说明

id

问答UUID

question

问题

submitor

提问者名称

answer

回复

answerBy

回复者名称

submitTime

提问时间,单位秒

answerTime

回复时间,单位秒

qaownerId

提问者ID

 

3.6onQARemove -- 清除某条问答

参数:

{

    "id": "abcd-efg-hi",

}

参数

说明

id

问答UUID

 

3.7onQAList -- 收到问答历史记录

参数:

{

       

"list": [

{

"id": "abcd-efg-hi",

"question": "how are you?",

"submitor": "Tom",

"answer": "fine, thank you.",

"answerBy": "Jack",

"submitTime": 9654123,

"answerTime": 8795623

"qaownerId": 8735466234

},

{

"id": "abcd-efg-hi",

"question": "how are you?",

"submitor": "Tom",

"answer": "fine, thank you.",

"answerBy": "Jack",

"submitTime": 9654123,

"answerTime": 8795623

"qaownerId": 8735462542

 

}

]

}

参数

说明

list

问答列表,列表中每个对象都是问答对象。问答对象参数说明见onQA

 

3.8onSetting -- 功能配置更改通知

参数:

{

" enable":[true | false],

" target":["all" | "self"],

"option":["question" | "onlineuser" | "userlist" | "chat" | "multistream"]

}

参数

说明

enable

true说明启用

false 说明禁用

target

all – 对全体生效

self – 仅对自己生效

option

question 提问

onlineuser显示在线人数

userlist 用户列表

chat 聊天

multistream 多码流

 

3.9onMessage -- 收到系统消息

参数:

{

"content":"通知。。。。"

"time":"8795623000”

}

参数

说明

content

系统消息内容

time

系统消息发出的时间(秒)

 

3.10onKickOut -- 被踢出

参数:

{

"reason":[0|1]

}

参数

说明

reason

0-被会议组织者踢出;1-其他情况

 

3.11onRollcall -- 收到点名通知

参数:

{

"timeout":15

"id":"23534677685687"

}

参数

说明

id

点名ID

timeout

超时时间,单位秒

 

3.12onTextWebcast -- 文字直播

参数:

{

"time":123456,

"lang":"zh_CN",

“content”:”hi…”

}

参数

说明

time

文字提交的时间,单位毫秒

content

文字直播内容

lang

语言

 

3.13onFile -- 文件下载

备注:如果在移动端直接打开第三方连接,会把当前页刷掉,请妥善使用

参数:

{

"name":"1.txt",

"url":"http://www.test.com/1.txt",

"action":["add"|"remove"]

}

参数

说明

name

文件名

url

文件下载URL

action

add新增文件下载点

remove 删除文件下载点

 

3.14onLottery -- 抽奖

参数:

{

"action":["start"|"stop"|"abort"],

"user":"Tom"

}

参数

说明

action

start 开始抽奖

stop 抽奖结束

abort 抽奖中途终止

user

当抽奖结束时候,告诉中奖用户名称

 

3.15onUserList -- 用户列表

参数:

{

"list": [

{"id":"1","name":"Tom","chatid":1,"role":"1,2"},

{"id":"2","name":"Jason","chatid":2,"role":"4"}

]

}

参数

说明

list

用户列表

id

用户ID

name

用户名称

chatid

仅用于聊天列表的聊天ID

role

用户角色以组合的形式出现,可能是单个角色,可能是多个角色,多个角色用逗号分隔,角色对应含义如下:

组织者 = 1

主讲    = 2

嘉宾    = 4

普通参加者 = 8

Web参加者 = 16

 

3.16onUserJoin -- 用户加入

参数:

{

"list": [

{"id":"1","name":"Tom","chatid":1,"role":"1"},

{"id":"2","name":"Jason","chatid":2,"role":"4"}

]

}

参数

说明

list

用户列表

id

用户ID

name

用户名称

chatid

仅用于聊天列表的聊天ID

role

用户角色以组合的形式出现,可能是单个角色,可能是多个角色,多个角色用逗号分隔,角色对应含义如下:

组织者 = 1

主讲    = 2

嘉宾    = 4

普通参加者 = 8

Web参加者 = 16

 

3.17onUserLeave -- 用户离开

参数:

{

"list": [

{"id":"1","name":"Tom","chatid":1,"role":"1"},

{"id":"2","name":"Jason","chatid":2,"role":"4"}

]

}

参数

说明

list

用户列表

id

用户ID

name

用户名称

chatid

仅用于聊天列表的聊天ID

senderRole

用户角色以组合的形式出现,可能是单个角色,可能是多个角色,多个角色用逗号分隔,角色对应含义如下:

组织者 = 1

主讲    = 2

嘉宾    = 4

普通参加者 = 8

Web参加者 = 16

 

3.18onUserUpdate -- 用户信息更改

参数:

{

"list": [

{"id":"1","name":"Tom","chatid":1,"role":"1"},

{"id":"2","name":"Jason","chatid":2,"role":"4"}

]

}

参数

说明

list

用户列表

id

用户ID

name

用户名称

chatid

仅用于聊天列表的聊天ID

role

用户角色以组合的形式出现,可能是单个角色,可能是多个角色,多个角色用逗号分隔,角色对应含义如下:

组织者 = 1

主讲    = 2

嘉宾    = 4

普通参加者 = 8

Web参加者 = 16

 

3.19onUserOnline -- 用户在线人数

参数:

{

 "count":500

}

参数

说明

count

当前并发数(非实时数据)

 

3.20onStart -- 直播开启通知

参数:

{

}

参数

说明

 

 

 

3.21onPause -- 直播暂停通知

参数:

{

}

参数

说明

 

 

 

3.22onPlay -- 直播恢复通知

参数:

{

}

参数

说明

 

 

 

3.23onStop -- 直播停止通知

参数:

{

}

参数

说明

 

 

 

3.24onVote -- 收到调查问卷

参数:

{

    "id": "abcd-efg-hi",

    "skip": ["true"|"false"],

    "subject": "test vote",

    "questions": [

        {

            "id": "uuid",

            "subject": "first question",

            "type": ["single"|"multi"|"text"],

            "answer": "1,3",

               "text":””,

               "score":"5",

            "items": [

                {

                    "id": "uuid",

                    "correct": ["true"|"false"],

                    "option": "answer1",

               "selected":"false"

                },

                {

                    "id": "uuid",

                    "correct": ["true"|"false"],

                    "option": "answer2",

                "selected":"false"

                }

            ]

        }

    ]

}

参数

说明

id

投票ID; 问题ID;选项(答案)ID

skip

false表明是强制投票

subject

投票主题;问题

questions

问题列表

type

single 单选题

multi 多选题

text 文字题

answer

Single或者multi类型时候,表明哪些选项是正确答案。多选时候,用数组表达。

text

默认为空。预留给submitVote这个API使用

items

选项(答案)列表

option

选项(答案)

correct

是否为正确答案,与answer属性作用相同

selected

默认为false。表明用户没有选择该项。预留给submitVote这个API使用。

score

分数

 

3.25onVoteResult -- 发布调查结果

参数:

{

    "id": "abcd-efg-hi",

    "total": 2,

    "subject": "test vote",

    "questions": [

        {

            "id": "uuid",

            "subject": "first question",

            "type": "single",

            "total": 2,

            "items": [

                {

                    "id": "uuid",

                    "total": 1,

                    "option": "answer1",

                },

                {

                    "id": "uuid",

                    "total": 1,

                    "option": "answer2"

                }

            ]

        }

    ]

}

参数

说明

id

参考onVote接口

total

投票人数

 

3.26onAnswerSheet - 收到答题卡

参数:

{

      "id": "abcd-efg-hi",

      "skip": ["true"|"false"],

      "questions": [{

                         "id": "uuid",

                         "type": ["single"|"multi"],

                         "items": [{

                                  "id": "uuid",

                                  "option": "answer1",

                                  "selected":"false"

                                  },

                                  {

                                  "id": "uuid",

                                  "option": "answer2",

                                  "selected":"false"

                                  }]

               }]

}

参数

说明

id

答题卡ID; 问题ID;选项(答案)ID

skip

false表明是强制操作

questions

问题列表

type

single 单选题

multi 多选题

items

选项(答案)列表

option

选项(答案)

selected

选项是否选中

 

3.27onAnswerSheetAnswer - 发布答题卡答案

参数:

{

      "id": "abcd-efg-hi",

      "questions": [{

                         "id": "uuid",

                         "type": ["single"|"multi"],

                         "total":"100",

                         "items": [{

                                  "id": "uuid",

                                  "total":"20",

                                  "correct":["true"|"false"],

                                  "option": "answer1",

                                  },

                                  {

                                  "id": "uuid",

                                  "total":"20",

                                  "correct":["true"|"false"],

                                  "option": "answer2",

                                  }]

               }]

}

参数

说明

id

答题卡答案ID; 问题ID;选项(答案)ID

questions

问题列表

type

single 单选题

multi 多选题

total

100 该题目分数 ;该选项分数

items

选项(答案)列表

option

选项(答案)

correct

是否为正确答案

 

3.28onModuleFocus -- web端布局改变通知

参数:

{

"focus":[0 | 1 | 2 | 3]

}

参数

说明

focus

0 -- 文档为主 ;

1 -- 视频最大化;

2 -- 文档最大化;

3 -- 视频为主

3.29onStatus -- SDK状态通知

参数:

{

"type":[1 | 2 | 3 | 4 | 5] ,

"explain":”license not enough”

}

参数

说明

type

类型

1 - License不足;

2 - 直播未开始;

4 – 服务器拒绝,加入失败

5 – 连接服务器中

6 – 加入失败,该用户已用客户端形式登录

7 – 直播上锁,拒绝加入

8 – 该用户已被封,加入失败

9 - 视频第一次缓冲播放开始

explain

说明

 

3.30onAPIError -- API错误通知

参数:

{

"api":"submitQuestion",

"param":{……},

“explain”:”format error”,

“type”:1

}

参数

说明

api

API名称

param

API所提交的原始参数

explain

说明

type

错误类型

0 – API名称错误

1 – 参数校验错误;

2 – 必填项缺失;

3.31onPublicChat – 收到公聊消息

参数:

{

        "id":"123456",

"sender":"vincent",

"senderId":2,

"senderUid":3467734,

“content”:”hi, how are you”,

“richtext”:”…..”,

"senderRole":"1,2"

“utctime”:”1595838886”

}

参数

说明

id

聊天消息id

sender

发送者名称

senderId

发送者聊天ID

senderUid

发送者用户ID

content

聊天内容

richtext

聊天内容带有富文本内容(满足HTML格式)

senderRole

用户角色以组合的形式出现,可能是单个角色,可能是多个角色,多个角色用逗号分隔,角色对应含义如下:

组织者 = 1

主讲    = 2

嘉宾    = 4

普通参加者 = 8

Web参加者 = 为空

utctime

聊天的服务器时间戳(秒)

3.32onPriChat – 收到私聊消息

参数:

{

"sender":"vincent",

"senderId":2,

"senderUid":3467734,

“content”:”hi, how are you”,

“richtext”:”…..,

"senderRole":"4"

“utctime”:”1595838886”

}

参数

说明

sender

发送者名称

senderId

发送者聊天ID

senderUid

发送者用户ID

content

聊天内容

richtext

聊天内容带有富文本内容(满足HTML格式)

senderRole

用户角色以组合的形式出现,可能是单个角色,可能是多个角色,多个角色用逗号分隔,角色对应含义如下:

组织者 = 1

主讲    = 2

嘉宾    = 4

普通参加者 = 8

Web参加者 = 为空

utctime

聊天的服务器时间戳(秒)

3.33onNetSettings -- 获取优选网络信息

事件说明:优选网络信息, 是requireNetSettings请求的回调事件

参数:

{

      "list":[

{

  "label":"浙江电信",

"selected":["true"|"false"],

}]

}

参数

说明

label

可选网络内容

selected

当前已选中网络

3.34onQAHighlight -- 当前正在被语音回复的某问题

参数:

{

"id":"354-475685-23543",

}

参数

说明

id

当前正在被语音回复的问题ID

3.35onCancelHighlight -- 该问题已经语音回复结束

参数:

{

"id":"354-475685-23543",

}

参数

说明

id

已经语音回复结束的问题ID

3.36onTagAudio -- 该问题已经进入语音回复列表

参数:

{

"id":"354-475685-23543",

}

参数

说明

id

已经进入语音回复列表的问题ID

3.37onVideoShow -- 直播视频是否开启的状态通知

参数:

{

"show":["true"|"false"],

}

参数

说明

show

当前是否开启视频

 

3.38onThirdPartChat – 收到第三方聊天消息

参数:

{

"sender":"vincent",

“content”:”hi, how are you”,

“richtext”:”…..”,

}

参数

说明

sender

发送者名称

content

聊天内容

richtext

聊天内容带有富文本内容(满足HTML格式)

 

3.39onLiveDemandStart– 收到插播状态

事件说明:插播是否开启的状态

参数:

{

"show":["true"|"false"]

}

参数

说明

show

当前是否开启插播

 

3.40onRoleStatus– 收到用户角色变化通知

事件说明:用户角色变化通知

参数:

{

"hostid":"xxxx",

"hostname":"xxxx",

"presid":"xxxx",

"presname":"xxxx",

}

参数

说明

hostid

组织者id

hostname

组织者用户名

presid

主讲人id

presname

主讲人用户名

3.41onHongbaoInfo - 收到红包信息

事件说明:红包消息通知

参数:

{

      "hbid ": "string",

      "username": "string",

      "sum":100

      "type":[0|1|2]

     "comment": "string",

 }

参数

说明

hbid

红包ID

username

红包发起者昵称

sum

红包总金额

type

红包类型 0.随机红包 1.定额红包 2定向红包(需要抢) 3定向红包(自动抢)

comment

红包留言

 

3.42onGetHongbaoGrabInfo – 红包争抢情况列表

事件说明:抢得红包的用户和金额列表 与getHongbaoGrabInfo 接口搭配使用

参数:

{

      "status":[0|-1|-2],

      "username":"string",

      "comment":"string",

      "list": [{

             "amount": 0,

             "time": 0,

             "best": true,

             "username": "string"

     }]

}

 

参数

说明

status

状态 0:接口正常 -1:红包功能未开启 -2:网络异常

username

发红包用户昵称

comment

红包留言

list

红包争抢情况列表

amount

抢得红包金额

time

抢得红包时间

best

是否手气最佳

username

抢得红包用户的用户昵称

 

3.43onGetUserGrabInfo – 用户在直播中抢得红包列表

事件说明:用户在直播中抢得的红包列表 与 getUserGrabInfo 接口搭配使用

参数:

{

      "status":[0|-1|-2]

      "sum":58,

      "count":5,

      "bests":2,

      "list":[ {

                         "amount": 0,

                         "time": 0,

                         "susername": "string",

               }]

}

参数

说明

status

状态 0:接口正常 -1:红包功能未开启 -2:网络异常

sum

红包总金额

count

红包个数

bests

手气最佳次数

list

红包数据列表

amount

抢得红包金额

time

抢得红包时间

susername

红包发起者昵称

 

3.44onGrabHongbao – 争抢红包结果

事件说明:争抢红包结果 与 grabHongbao 接口搭配使用

成功参数:

{

      "hbid":"string"

      "status":[0|-1|-2|-3]

      "amount":100

      "code":"10104"

      "msg":"重复争抢"

}

参数

说明

hbid

红包ID

status

状态 0:接口正常 -1:红包功能未启用 -2:网络异常 -3:红包争抢失败

amount

抢得的红包金额

code

异常代码

msg

争抢失败消息   10104:重复争抢,10105:红包已空,10106:红包超时,10107:定向红包,不允许争抢

 

3.45onCloseHongbao – 关闭红包争抢页面

事件说明:发生异常情况时关闭红包争抢页面,避免导致数据异常

参数:

{

      "code":"10100"

      "msg":"用户离开直播室"

}

3.46onGrabHongbaoMsg – 争抢红包消息

事件说明:争抢红包消息推送

成功参数:

{

      "hbid":"string",

      "amount":100

      "username":"string"

      "type":"[0|1]"

}

参数

说明

hbid

红包ID

amount

抢得的红包金额

username

抢得红包用户的用户昵称

type

0非定向红包 1定向红包

3.47onRewardResponse – 打赏订单响应

事件说明:打赏订单响应 与 submitReward 接口搭配使用

成功参数:

{

      " returnCode": [0|-1|-2|-3],

      " returnMsg":"live not start."

      " codeUrl":"weixin://wxpay/bizpayurl?pr=8oWfCsK"

      " userId":9960407372

      " amount":1

      " payType":0

}

参数

说明

returnCode

0 订单生成成功 -1 网络异常,数据提交失败 -2 直播未开始,无法打赏 -3 打赏金额异常应为正整数 -4 未开通服务  其他非0 数值都是不同错误

returnMsg

状态描述

userId

用户id 参数回传

amount

打赏金额 参数回传

payType

支付类型 0 微信 1支付宝

3.48onRewardMessage – 打赏通知

事件说明:打赏消息推送

成功参数:

{

      " id":"1025122"

      " userid":"9960407372"

      " username":"userName"

      " amount":0.01

}

参数

说明

id

打赏操作id

userid

打赏用户id

username

打赏用户昵称

amount

打赏金额

3.49onChatRemove - 聊天移除

事件说明:删除特定聊天数据

成功参数:

{

      "censorList":[{

  "type":"user|chat",

"id":"123456",

},{

 "type":"user|chat",

"id":"123456",

}]

}

参数

说明

censorList

审核删除的聊天数据列表

type

删除聊天类型  user该用户的聊天消息  chat单条聊天消息

id

删除消息id 根据type类型来确定用户id 或者 聊天消息id

3.50 onVoteStop - 终止投票

事件说明:终止投票后抛出消息

成功参数:

{

    "id": "abcd-efg-hi",

    "finish": ["true"|"false"],

     "questions": []

}

参数

说明

id

投票ID; 问题ID;选项(答案)ID

finish

投票是否终止

3.51 onPraiseMessage- 收到点赞消息

事件说明:点赞消息通知

参数:

 

{

    "rc": 0,

    "response": {

        "remain": 99710

    }

}

参数

说明

rc

该参数等于0时为成功,否则失败

 

 

3.52 onUpdatePraiseTotalSuccess- 收到点赞剩余可点赞数量

事件说明:点赞消息通知

参数:

 

{

    "rc": 0,

    "response": {

        "remain": 99710

    }

}

参数

说明

remain

当前用户剩余点赞数量

rc

该参数等于0时为成功,否则失败

3.53 onMobileStatus- 收到登陆用户手机绑定状态

事件说明:需用户登陆状态下,手机的绑定状态(在截止日期后必须绑定手机,否则无法登陆)

参数:

{

    "code": “mobile_not_bind”,

}

参数

说明

code

值为mobile_not_bind 当前未绑定手机

 

4提交数据API

4.1submitQuestion -- 提问

注意:如果两个问题的提交有设置间隔时间,那么在间隔内提交问题不会成功的。同时如果提交问题有设置回调函数那么会调用回调函数。

参数:

{

"content":"what's your name?"

}

参数

说明

content

问题内容

4.2submitVote -- 提交调查问卷结果

参数:

提交对象格式同onVote接口,请参看onVote接口的参数说明

{

    "id": "abcd-efg-hi",

    "skip": ["true"|"false"],

    "subject": "test vote",

    "questions": [

        {

            "id": "uuid",

            "subject": "first question",

            "type": ["single"|"multi"|"text"],

            "answer": "1,3",

               "text":””

            "items": [

                {

                    "id": "uuid",

                    "correct":["true"|"false"],

                    "option":"answer1",

                          "selected":["true"|"false"]

                },

                {

                    "id": "uuid",

                    "correct":["true"|"false"],

                    "option":"answer2",

                                      "selected":["true"|"false"]

                }

            ]

        }

    ]

}

参数

说明

 

 

4.3submitAnswerSheet - 提交答题卡测试结果

参数:

提交对象格式同onAnswerSheet接口,请参看onAnswerSheet接口的参数说明

{

      "id": "abcd-efg-hi",

      "skip": ["true"|"false"],

      "questions": [{

                         "id": "uuid",

                         "type": ["single"|"multi"],

                         "items": [{

                                  "id": "uuid",

                                  "option": "answer1",

                                  "selected":["false"|"true"]

                                  },

                                  {

                                  "id": "uuid",

                                  "option": "answer2",

                                  "selected":["false"|"true"]

                                  }]

               }]

}

4.4submitRollcall -- 提交点名 ,说明该用户出席。

参数:

{

"id":"23534677685687"

}

参数

说明

id

点名ID。

4.5submitChat -- 提交公聊信息

注意:content与richtext至少提交其中之一,若同时提交content和richtext时,以richtext为准。

如果两个公聊信息的提交有设置间隔时间,那么在间隔内提交公聊信息不会成功的,同时如果提交公聊信息有设置回调函数那么会调用回调函数。

(提议:以input、textarea作为聊天信息输入的,使用content属性提交信息,以div[contenteditable] 作为聊天信息输入的,使用richtext属性提交信息)

参数:

{

"content":"hello",

"richtext":"……",

"security":"[default|high]"

}

参数

说明

content

聊天内容

richtext

聊天内容允许带有表情图标。表情图标参考6.3

security

设置聊天内容的安全等级权限,default是原有的较低的安全等级模式,high为新增较高安全等级模式,缺省该属性默认为default安全等级

4.6submitChatTo -- 提交私聊信息

注意:content与richtext至少提交其中之一,若同时提交content和richtext时,以richtext为准。

如果两个私聊信息的提交有设置间隔时间,那么在间隔内提交私聊信息不会成功的,同时如果提交私聊信息有设置回调函数那么会调用回调函数。

(提议:以input、textarea作为聊天信息输入的,使用content属性提交信息,以div[contenteditable] 作为聊天信息输入的,使用richtext属性提交信息)

参数:

{

"content":"hello",

"richtext":"hello",

"receiverId":2,

"receiver":"tom wang",

"security":"[default|high]"

}

参数

说明

content

聊天内容

richtext

聊天内容允许带有表情图标。表情图标参考6.3

receiver

接收者名称,可选参数

receiverId

接收者聊天ID,必填参数

security

设置聊天内容的安全等级权限,default是原有的较低的安全等级模式,high为新增较高安全等级模式。

缺省该属性默认为default安全等级

4.7requireNetSettings -- 请求优选网络信息

参数:

{

}

参数

说明

 

 

4.8submitNetChoice -- 提交优选网络选择信息

参数:

{

"label": "广州电信"

}

参数

说明

label

内容参考onNetSettings参数

4.9submitUsername -- 通过接口修改用户显示的名称

参数:

{

  "name": "vincent"

}

注意:name是不允许输入<,>,,/,”,’这些字符的,如果有会自动过滤。

参数

说明

name

输入要修改的用户名。如为空字符会修改失败,保持原有的用户名

4.10getHongbaoGrabInfo – 查询红包的争抢情况

参数:

{

"hbid": "1234567890"

}

参数

说明

hbid

红包ID

4.11getUserGrabInfo -- 查询用户在会议中抢得红包的列表

参数:

{

}

 

 

4.12grabHongbao -- 争抢红包

参数:

{

"hbid": "1234567890"

}

参数

说明

hbid

红包ID

4.13submitReward - 提交打赏订单

事件说明:

参数:

{

"amount": 1,

"payType": 0,

"refer": "http://www.baidu.com"

}

参数

说明

amount

打赏金额 精确到1分,单位分

payType

支付类型 微信支付 0 支付宝1

refer

支付页面回跳地址(支付成功、失败、取消,页面跳转的地址)

4.14submitPlay -- 通过接口播放视频

备注:移动设备上的第一次播放不支持该功能

原因详见:https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Device-SpecificConsiderations/Device-SpecificConsiderations.html#//apple_ref/doc/uid/TP40009523-CH5-SW4

参数:

{

}

 

 

 

 

4.15submitPause -- 通过接口暂停视频

备注:

参数:

{

}

 

 

 

 

4.16submitStream – 选择码流

备注:在多码流间切换。是否支持多码流参见 3.8 onSetting 接口说明。

参数:

{

"level": [0 | 1]

}

参数

说明

level

码流。0 – 标清,1 – 原始

4.17submitSameQuestion - 提交同问数据接口

注意:同问接口目前只有小班课支持。

参数:

{

"id": "abcd-efg-hi"

}

参数

说明

id

问题id

4.18 submitFaultReport - 提交故障报告

事件说明:用户主动提交故障报告

参数:

{

 

}

参数

说明

 

 

4.19 submitPraise - 提交点赞

事件说明:用户主动提交点赞

参数

说明

remain

当前用户剩余点赞数量

4.20 getPraiseTotal- 获取剩余点赞数量

事件说明:获取剩余点赞数量,消息通过onUpdatePraiseTotalSuccess回调

 

参数

说明

remain

当前用户剩余点赞数量(默认最大10次)

4.21 submitHandup -- 提交举手数据

参数:

{

"handup" : [true | false]

}

参数

说明

handup

Web发起举手功能。

4.22 submitAudioResume– 尝试恢复音量

备注:使用gsver=3的rtmp版本播放器时可能存在无法正常播放音量的问题,使用此接口可尝试恢复,需要人机交互。

 

5可扩展实时数据调用

以下所有事件触发,必须要在video widget初始化时定义参数completed,并写上回调函数名称,那么在实时数据被触发时,并且直播不开始不会触发liveDuration这个功能,函数会收到相应数据。现有的实时数据如下所示:

5.1LiveDuration – 进入直播时,直播已持续的时间

参数:

{

"type": "LiveDuration",

"starttime": "20"

}

参数

说明

type

该参数的属性

starttime

进入直播时,直播已持续的时间

 

6补充说明

 

6.1由于SDK本身技术的局限性,当前有些功能,该SDK不提供

  • 双流
  • 当video widget不显示控制栏时候,全屏功能不提供

6.2中文编码问题

考虑到网页中文乱码问题,基于目前国际标准,建议客户的网页以UTF-8编码

如果网页不是UTF-8编码,调用API传中文时候,请使用encodeURIComponent()函数对中文进行预处理。

 

参考:

http://www.w3schools.com/jsref/jsref_encodeURIComponent.asp

 

6.3关于聊天功能的表情图标

http://static.gensee.com/webcast/static/emotion/icon.json

 

在聊天功能中,提供富文本内容支持。

其中表情图标的URL见以上json格式中数据。

URL规则:prefix + url

Type说明:1 – 心情, 2 – 反馈, 3 – 礼物