注意
H5 SDK 仅支持 GME 部分产品能力,支持的接口以此文档为准。请您阅读此文档并评估 H5 SDK 是否适用于您的业务场景。
接口 | 接口含义 |
Init | 初始化接口 |
SetTMGDelegate | 设置委托 |
EnterRoom | 进入语音房间 |
EnableMic | 开启或关闭采集设备 |
EnableSpeaker | 开启或关闭播放设备 |
SetMicVolume | 设置麦克风音量 |
ExitRoom | 退出语音房间 |
说明
GME 的接口调用成功后返回值为 QAVError.OK,数值为0。
GME 加入房间需要鉴权,请参考文档关于鉴权部分内容。
设备的操作要在进房成功之后。
Chrome74 以后严格限制 navigator.mediaDevices 在 HTTPS 环境下访问,所以请使用 HTTPS 环境。
接入 JQ
使用 Demo 需要接入 JQ。
<!--Step 2: 添加Audio容器--><!--容器,用来承接Audio标签, 请务必留意,不能忽略--><div id="gme-audio-wrap"></div>
初始化相关接口
未初始化前,SDK 处于未初始化阶段,需要初始化鉴权后,通过初始化 SDK,才可以进房。
初始化 SDK
参数获取请参考 接入指引。
此接口需要来自腾讯云控制台的 SDKAppID 号码作为参数,再加上 openId,这个 openId 是唯一标识一个用户,规则由 App 开发者自行制定,App 内不重复即可(目前只支持 INT64)。
注意
初始化 SDK 之后才可以进房。
函数原型
WebGMEAPI.fn.Init = function (document, SdkAppId, openId) {...}
参数 | 意义 |
document | HTML DOM Document 对象 |
SdkAppId | 来自腾讯云控制台的 SdkAppId 号码 |
openId | 用户的账号,由开发者定义,必须大于10000,用于标识用户 |
示例代码
const cSdkAppId = () => document.getElementById("input-SdkAppId").value;const cOpenID = () => document.getElementById("input-OpenID").value;gmeAPI.Init(document, cSdkAppId(), cOpenID());
设置回调
接口类采用 Delegate 方法用于向应用程序发送回调通知。将回调函数注册给 SDK,用于接收回调的信息。将回调函数注册给 SDK,要在进房之前设置。
函数原型
WebGMEAPI.fn.SetTMGDelegate = function (delegate){...}
参数 | 意义 |
onEvent | SDK 回调事件 |
示例代码
gmeAPI.SetTMGDelegate(onEvent);
实时语音相关接口
初始化之后,SDK 调用进房后进去了房间,才可以进行实时语音通话。
加入房间
用生成的鉴权信息进房,会收到消息为 ITMG_MAIN_EVENT_TYPE_ENTER_ROOM 的回调。加入房间默认不打开麦克风及扬声器。
函数原型
WebGMEAPI.fn.EnterRoom = function (roomId, roomType, authBuffer) {...}
参数 | 意义 |
roomId | 房间号,最大支持127字符 |
roomType | 房间音频类型 |
authBuffer | 鉴权码,获取方式请参考 工程配置 |
示例代码
function bindButtonEvents() {$("#start_btn").click(function () {console.log('start!');//步骤1, 获取 AuthBuffervar FetchSigCgi = 'http://134.175.146.244:10005/';$.ajax({type: "POST",url: FetchSigCgi,dataType: 'json',data: {sdkappid: cSdkAppId(),roomid: cRoomNum(),openid: cOpenID(),},success: function (json) {//步骤2, 获取 AuthBuffer 成功if (json && json.errorCode === 0) {let userSig = json.userSig;gmeAPI.Init(document, cSdkAppId(), cOpenID());gmeAPI.SetTMGDelegate(onEvent);gmeAPI.EnterRoom(cRoomNum(), 1, userSig);} else {console.error(json);}},error: function (err) {console.error(err);}});});
事件回调
加入房间完成后会发送信息 ITMG_MAIN_EVENT_TYPE_ENTER_ROOM,在 OnEvent 函数中进行判断。
示例代码
onEvent = function (eventType, result) {if (eventType === gmeAPI.event.ITMG_MAIN_EVENT_TYPE_ENTER_ROOM){//进房成功}else if (eventType === gmeAPI.event.ITMG_MAIN_EVENT_TYPE_USER_UPDATE){app._data.downStreamInfoList = result.PeerInfo;//接收的对端的信息 ,参见下表app._data.brSend = result.UploadBRSend;//上传语音数据的码率app._data.rtt = result.UploadRTT;//上传 RTT}else if (eventType === gmeAPI.event.ITMG_MAIN_EVENT_TYPE_EXIT_ROOM){//退房成功}else if (eventType === gmeAPI.event.ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT){//房间断开连接}};
接收的对端的信息如下 downStreamInfoList:
参数 | 意义 |
brRecv | 接收的码率 |
delay | 接收的延迟 |
jitterBufferMs | 抖动延迟 |
jitterReceived | 接收 jitter |
退出房间
通过调用此接口可以退出所在房间。这是一个异步接口,退房之后有回调,返回值为 AV_OK 的时候代表异步投递成功。
函数原型
WebGMEAPI.fn.ExitRoom = function (){...}
示例代码
gmeAPI.ExitRoom();
开启关闭麦克风
此接口用来开启关闭麦克风。加入房间默认不打开麦克风及扬声器。
函数原型
WebGMEAPI.fn.EnableMic = function (bEnable) {...}
参数 | 意义 |
isEnabled | 如果需要打开麦克风,则传入的参数为 true,如果关闭麦克风,则参数为 false |
示例代码
gmeAPI.EnableMic(false);
设置麦克风的音量
此接口用于设置麦克风的音量。参数 volume 用于设置麦克风的音量,当数值为0的时候表示静音,当数值为100的时候表示音量不增不减,默认数值为100。
函数原型
WebGMEAPI.fn.SetMicVolume = function (volume){...}
参数 | 意义 |
volume | 设置音量,范围0到100 |
示例代码
gmeAPI.SetMicVolume(100);
开启关闭扬声器
此接口用于开启关闭扬声器。
函数原型
WebGMEAPI.fn.EnableSpeaker = function (bEnable){...}
参数 | 意义 |
isEnabled | 如果需要关闭扬声器,则传入的参数为 false,如果打开扬声器,则参数为 true |
示例代码
gmeAPI.EnableSpeaker(true);