以下是完整的 API 文档。
游密Webrtc SDK
类型: 全局类(class)
RTCClient该方法用于创建客户端,在每次会话里仅调用一次。
类型: 静态方法(function),来自 YMRTC
| 参数 | 类型 | 描述 |
|---|---|---|
| config | ClientConfig |
定义客户端的属性 |
示例
YMRTC.createClient(config)
boolean该方法检查 Web SDK 对正在使用的浏览器的适配情况。 你需要在创建音视频对象 (createClient)之前调用该方法,用以检查 Web SDK 对正在使用的浏览器的适配情况 浏览器类型和版本均会影响返回结果,部分 Chromium 内核的浏览器(如 QQ 浏览器等),我们未做全量测试,如需使用,可以进行尝试。
类型: 静态方法(function),来自 YMRTC
返回值: boolean -
const support = YMRTC.checkSystemRequirements()
void该方法枚举可用的媒体输入/输出设备,比如麦克风、摄像头、耳机等。 调用成功后 SDK 会通过 MediaDeviceInfo 对象返回可用的媒体设备以及设备信息。
类型: 静态方法(function),来自 YMRTC
| 参数 | 类型 | 描述 |
|---|---|---|
| callback | GetDevicesSuccCb |
成功回调 |
| [callback_Error] | GetDevicesFailCb |
失败回调 |
类型: 全局类(class)
voidvoidvoidStreamvoidvoidvoidvoidvoidvoidvoidvoidvoidvoid私有
| 参数 | 类型 | 描述 |
|---|---|---|
| config | ClientConfig |
构造参数 |
void初始化客户端对象 使用该方法初始化客户端对象。
类型: 实例方法(function),来自 RTCClient
| 参数 | 类型 | 描述 |
|---|---|---|
| appkey | string |
项目appkey |
| [onSuccess] | function |
可选,成功回调, () => void; |
| [onFaialure] | function |
可选,失败回调, (err: string) => void |
示例
client.init('appkey', () => {}, (err) => {})
void加入频道 调用该方法加入频道时,本地会触发 client.on("connected") 和 client.on("connection-state-change") 回调; 通信场景下的用户和直播场景下的主播加入频道后,远端会触发 client.on("peer-online") 回调
类型: 实例方法(function),来自 RTCClient
| 参数 | 类型 | 默认值 | 描述 | |
|---|---|---|---|---|
| token | string |
token |
||
| channel | string |
频道 |
||
| uid | string | null |
用户id,不填则sdk创建随机的uid |
||
| [optionalInfo] | string |
"''" |
可选信息 |
|
| [onSuccess] | function |
可选;成功回调, (uid: number |
string) => void | |
| [onFailure] | function |
可选;失败回调, (err: string) => void |
示例
client.join('token', 'channel', 'uid', '', (uid) => {}, (err) => {})
void离开频道 调用该方法离开频道时,本地会触发 Client.on("connection-state-change") 回调; 通信场景下的用户和直播场景下的主播离开频道后,远端会触发 Client.on("peer-leave") 回调。
类型: 实例方法(function),来自 RTCClient
| 参数 | 类型 | 描述 |
|---|---|---|
| [onSuccess] | function |
可选;成功回调;() => void; |
| [onFailure] | function |
可选;失败回调;(err: string) => void; |
示例
client.leave(() => {}, (err) => {});
Stream该方法创建并返回音视频流对象。
类型: 实例方法(function),来自 RTCClient
返回值: Stream -
| 参数 | 类型 | 描述 |
|---|---|---|
| spec | StreamSpec |
定义音视频流对象的属性,详见 {StreamSpec}。 |
void发布本地音视频流 发布音视频流之后,本地会触发 client.on("stream-published") 回调;远端会触发 client.on("stream-added") 回调。
类型: 实例方法(function),来自 RTCClient
| 参数 | 类型 | 描述 |
|---|---|---|
| stream | Stream |
要被发布的本地音视频流对象 |
| onFailure | function |
可选;失败回调;(err: string) => void |
示例
client.publish(stream, (err) => {});
void取消发布本地音视频流 该方法取消发布本地音视频流。 取消发布音视频流之后,本地会触发 client.on("stream-unpublished") 回调,远端会触发 client.on("stream-removed") 回调。
类型: 实例方法(function),来自 RTCClient
| 参数 | 类型 | 描述 |
|---|---|---|
| stream | Stream |
要取消发布的本地音视频流对象 |
| [onFailure] | function |
可选;失败回调;(err: string) => void; |
示例
client.unpublish(stream, (err) => {});
订阅远端音视频流 该方法从服务器端接收远端音视频流。 订阅远端音视频流之后,本地会触发 client.on("stream-subscribed") 回调。 如果订阅流中包含音频,还会触发 client.on("first-audio-frame-decode") 回调;- 待实现 如果订阅流中包含视频,还会触发 client.on("first-video-frame-decode") 回调。- 待实现
类型: 实例方法(function),来自 RTCClient
| 参数 | 类型 | 描述 |
|---|---|---|
| stream | Stream |
要订阅的远端音视频流 |
| [options] | SubscribeOptions |
可选;选项参数;默认订阅音视频流 |
| [onFailure] | function |
可选;失败回调;(err) => void; |
示例
// 基本用法
client.subscribe(stream, (err) => {});
示例
// 高级用法
client.subscribe(stream, { video: true, audio: true }, (err) => {});
void取消订阅远端音视频流 该方法取消接收远端音视频流。
类型: 实例方法(function),来自 RTCClient
| 参数 | 类型 | 描述 |
|---|---|---|
| stream | Stream |
要取消订阅的远端流 |
| [onFailure] | function |
可选;失败回调;(err: string) => void; 方法调用失败时执行的回调函数,常见的错误如下:
|
示例
client.unsubscribe(stream, (err) => {});
void设置用户角色 本方法仅适用于直播场景。 直播场景下,可以调用本方法设置用户角色。 在加入频道前,用户可以通过本方法设置自己的角色。 在加入频道后,用户可以通过本方法切换角色: 用户在调用 publish 的时候会自动切换成 host 角色,调用 unpublish 的时候会自动切换为 audience 角色。 如果已经调用了 publish,调用本方法将用户角色设置为 audience,会自动进行 unpublish。 如果你在加入频道后调用该方法切换用户角色,切换成功后,本地会触发 client.on("client-role-changed") 回调;远端会触发 client.on("peer-online") 或者 client.on("peer-leave") 回调。
类型: 实例方法(function),来自 RTCClient
| 参数 | 类型 | 描述 | |
|---|---|---|---|
| role | string |
角色, 'host'或'audience' |
|
| [callback] | function |
可选;回调;(err?: string |
null) => void; |
示例
client.setClientRole('host', (err) => {
if (err) {
// 失败
} else {
// 成功
}
});
void新建直播流 该方法新建直播流 推流开始后本地会触发 client.on("liveStreamingStarted") 回调。如果推流失败会触发 client.on("liveStreamingFailed") 回调。
类型: 实例方法(function),来自 RTCClient
| 参数 | 描述 |
|---|---|
| url | 接收推流的地址例如: rtmp://xxxxxxxxx |
示例
client.setLiveTranscoding(<coding>);
client.startLiveStreaming(<url>)
void设置直播推流转码 调用该方法更新转码设置后本地会触发 client.on("liveTranscodingUpdated") 回调。
类型: 实例方法(function),来自 RTCClient
| 参数 | 类型 | 描述 |
|---|---|---|
| coding | LiveTranscoding |
转码设置 |
void删除直播流 该方法停止并删除直播流。推流停止后本地会触发 client.on("liveStreamingStopped") 回调。
类型: 实例方法(function),来自 RTCClient
| 参数 | 类型 | 描述 |
|---|---|---|
| url | string |
要停止的流url |
void枚举音频输入设备 该方法枚举可用的音频输入设备,比如麦克风。 调用成功后 SDK 会通过 MediaDeviceInfo 对象返回可用的音频输入设备。
类型: 实例方法(function),来自 RTCClient
| 参数 | 类型 | 描述 |
|---|---|---|
| callback | function |
(devices: MediaDeviceInfo[]): void |
示例
client.getRecordingDevices((devices) => {});
void枚举音频输出设备
该方法枚举可用的音频输出设备,比如扬声器。
调用成功后 SDK 会通过 MediaDeviceInfo 对象返回可用的音频输出设备。
类型: 实例方法(function),来自 RTCClient
| 参数 | 类型 | 描述 |
|---|---|---|
| callback | function |
回调 (devices: MediaDeviceInfo[]) => void |
void枚举视频输入设备 该方法枚举可用的视频输入设备,比如摄像头。 调用成功后 SDK 会通过 MediaDeviceInfo 对象返回可用的视频输入设备。
类型: 实例方法(function),来自 RTCClient
| 参数 | 类型 |
|---|---|
| callback | getCameraCallback |
该回调通知应用远端音视频流已添加。 如果用户加入频道时频道内已经有其他用户,也会收到该回调报告已经存在的远端流。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| type | string |
事件类型, 为 |
| msg | string |
消息 |
| reason | string |
原因 |
| stream | Stream |
远端流 |
该回调通知应用已删除远端音视频流,即对方调用了 client.unpublish。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| type | string |
事件类型,为 |
| msg | string |
消息 |
| reason | string |
原因 |
| stream | Stream |
远端流 |
该回调提示有远端用户/主播加入频道。
该回调在如下情况下会被触发:
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| uid | string |
用户ID |
该回调通知应用有远端用户离线。 在直播场景中,只有角色为主播的用户会触发该回调。
离线包括以下情况:
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| reason | string |
用户离线原因
|
示例
client.on("peer-leave", function(evt) {
var uid = evt.uid;
var reason = evt.reason;
console.log("remote user left ", uid, "reason: ", reason);
});
该回调通知应用对方用户在语音通话中将自己的声音打开。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| uid | string |
用户id |
示例
client.on("unmute-audio", function(evt) {
var uid = evt.uid;
console.log("unmute audio:" + uid);
});
该回调通知应用对方用户在语音通话中将自己的声音关闭。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| uid | string |
用户id |
示例
client.on("mute-audio", function(evt) {
var uid = evt.uid;
console.log("mute audio:" + uid);
});
该回调通知应用对方用户在语音通话中将自己的视频打开。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| uid | string |
用户id |
示例
client.on("unmute-video", function(evt) {
var uid = evt.uid;
console.log("unmute video:" + uid);
});
该回调通知应用对方用户在语音通话中将自己的视频关闭。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| uid | string |
用户id |
示例
client.on("mute-video", function(evt) {
var uid = evt.uid;
console.log("mute video:" + uid);
});
该回调通知本地用户的角色发生改变。
类型: 事件,由 RTCClient 触发
属性
| 类型 | 描述 |
|---|---|
role |
角色,'host'或'audience' |
示例
client.on("client-role-changed", function(evt) {
console.log("client-role-changed", evt.role);
});
该回调通知应用本地音视频流已发布。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| type | string |
事件类型, 值为 |
| proxy | string |
是否为代理 |
| stream | Stream |
本地流 |
示例
client.on("stream-published", function(evt) {
console.log("local stream published");
//……
});
该回调通知应用本地音视频流已取消发布。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| type | string |
事件类型,值为 |
| stream | Stream |
本地流 |
示例
client.on("stream-unpublished", function(evt) {
console.log("local stream unpublished");
//……
});
该回调通知应用已接收远端音视频流。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| type | string |
事件类型,值为 |
| msg | string |
消息 |
| reason | string |
原因 |
| stream | Stream |
远端流 |
示例
client.on("stream-subscribed", function(evt) {
var stream = evt.stream;
console.log("new stream subscribed ", stream.getId());
// Play the stream.
//……
});
该回调表示订阅流的音视频轨道发生变化。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| type | string |
事件类型,值为 |
| stream | Stream |
远端流 |
| video | boolean |
是否有视频 |
| audio | boolean |
是否有音频 |
该回调通知应用SDK 与服务器的连接状态发生改变
SDK 与服务器的连接状态共有以下 4 种:
client.join 加入频道前的初始化阶段client.leave 后的离开频道阶段client.join 或者连接中断自动重连的时候为此状态。类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| curState | string |
当前的状态 |
示例
client.on("connection-state-change", function(evt) {
console.log(evt.curState);
});
该回调通知正在与服务器重新建立连接。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| type | string |
事件类型,值为 |
示例
client.on("reconnect", function() {
console.log("reconnect");
});
该回调通知与服务器已经成功建立连接。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| type | string |
事件类型,值为 |
示例
client.on("connected", function() {
console.log("connected");
});
该回调通知应用有错误信息,需要进行处理,可能的错误如下:
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| type | string |
事件类型,值为 |
示例
client.on("error", function(err) {
console.log("Got error msg:", err.reason);
});
流对象
类型: 全局类(class)
voidbooleanbooleanbooleanbooleanbooleanbooleanMediaStreamTrack | undefinedMediaStreamTrack | undefinedArray.<MediaStreamTrack> | undefinedstring播放音视频流 该方法播放视频流或音频流。
类型: 实例方法(function),来自 Stream
完成回调: any - 播放成功
拒绝回调: any - 播放失败
| 参数 | 类型 | 描述 |
|---|---|---|
| elementId | string |
需要播放的流ID |
| [option] | object |
可选;用于流播放的选项 Optional 参数如下:
|
| [onFailure] | function |
失败回调, (err: string) => void |
fit: "cover" | "contain" -
恢复音视频流播放 该方法一般在调用 Stream.play 之后,播放失败时调用。通常播放失败是由于浏览器策略阻止导致的。 该方法需用手势触发。详见处理浏览器的自动播放策略。
类型: 实例方法(function),来自 Stream
完成回调: any - 恢复成功
拒绝回调: any - 恢复失败
void停止音视频流
调用该方法停止播放 Stream.play 播放的音视频流。
类型: 实例方法(function),来自 Stream
boolean返回音视频流当前是否在播放状态
类型: 实例方法(function),来自 Stream
返回值: boolean -
boolean启用音频轨道 该方法启用音频轨道。对本地流启用音频轨道后远端会触发 client.on("unmute-audio") 回调。
类型: 实例方法(function),来自 Stream
返回值: boolean -
boolean禁用音频轨道 该方法禁用音频轨道。 对于本地流,调用该方法会停止发送音频,远端会触发 Client.on("mute-audio") 回调。 对于远端流,调用该方法仍然会接收音频,但是会停止播放。 对于本地流,在 createStream 时将 audio 设置为 true 才可使用该方法。
类型: 实例方法(function),来自 Stream
返回值: boolean -
boolean启用视频轨道 该方法启用视频轨道。对本地流启用视频轨道后远端会触发 Client.on("unmute-video") 回调。 Note 对于本地创建的流,在 createStream 时将 video 设置为 true 才可使用该方法。 视频轨道默认为开启状态。如果你调用了 muteVideo,可调用本方法启用视频。
类型: 实例方法(function),来自 Stream
返回值: boolean -
禁用视频轨道 该方法禁用视频轨道。 对于本地流,调用该方法会停止发送视频,远端会触发 client.on("mute-video") 回调。 对于远端流,调用该方法仍然会接收视频,但是会停止播放。 对于本地创建的流,在 createStream 时将 video 设置为 true 才可使用该方法。
类型: 实例方法(function),来自 Stream
返回值:
boolean获取音频 flag 该方法仅对本地流有效。
类型: 实例方法(function),来自 Stream
返回值: boolean -
boolean获取视频 flag 该方法仅对本地流有效。
类型: 实例方法(function),来自 Stream
返回值: boolean -
MediaStreamTrack | undefined获取音频轨道 该方法获取音视频流中的音频轨道,可与 replaceTrack 搭配使用。
类型: 实例方法(function),来自 Stream
返回值: MediaStreamTrack | undefined -
MediaStreamTrack | undefined获取视频轨道 该方法获取音视频流中的视频轨道,可与 replaceTrack 搭配使用。
类型: 实例方法(function),来自 Stream
返回值: MediaStreamTrack | undefined -
Array.<MediaStreamTrack> | undefined获取音视频轨道
类型: 实例方法(function),来自 Stream
返回值: Array.<MediaStreamTrack> | undefined -
替换音视频轨道 该方法可以替换本地音视频流中的音视频轨道。 本地流发布后,可以通过该方法切换摄像头或者切换麦克风和播放的 mp3 等。 新的音视频轨道可以通过 getUserMedia,MediaElement.captureStream 等方法获取。 被替换的音视频轨道会被强制停止。
类型: 实例方法(function),来自 Stream
| 参数 | 类型 | 描述 |
|---|---|---|
| track | MediaStreamTrack |
要替换的track |
| [onSuccess] | function |
可选;成功回调;() => void; |
| [onFailure] | function |
|
示例
- 支持 Chrome 65+,Safari 以及最新版 Firefox 浏览器。
- 部分移动设备上该方法可能不生效。
- Firefox 不支持在不同的麦克风之间切换音频轨道,可以支持切换麦克风和播放的音乐文件。
- Safari 部分外接音频设备不支持此方法。
- 订阅端无法知悉音视频轨道被替换。
- 推荐使用 switchDevice 方法来切换媒体输入设备。
设置屏幕属性 该方法设置屏幕共享时屏幕的显示属性,必须在 Stream.init 之前调用。
类型: 实例方法(function),来自 Stream
| 参数 |
|---|
| profile |
string获取音视频流 ID 该方法可以获取音视频流 ID。
类型: 实例方法(function),来自 Stream
返回值: string -
Object定义 createClient 中的 config 参数的接口。
Object创建流的配置参数
voidgetDevices 成功回调
voidgetDevices 失败回调
Object管理 CDN 直播推流转码的接口
调用 setLiveTranscoding 时可以通过该接口设置直播推流。
Object网络类型
该功能仅支持 Chrome 61 及以上版本,且无法保证兼容性
Objectsubscribe方法需要的options参数
voidgetCameras方法回调函数类型
ClientConfig : Object
定义 createClient 中的 config 参数的接口。
类型: 全局自定义类型(typedef)
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| mode | string |
模式: 'rtc'或'live' |
|
| codec | string |
编码方式: 'vp8','h264'或'h264,vp8', 推荐默认填'h264,vp8',兼容性最好 |
|
| [debug] | boolean |
false |
是否开启调试模式,调试模式会输出内部日志;默认false |
StreamSpec : Object
创建流的配置参数
类型: 全局自定义类型(typedef)
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| [streamID] | number | string |
'' |
请设置streamId 为用户ID, 用户id可以从RTCClient.join返回值获取到 |
| audio | boolean |
表示流中是否包含音频轨道 |
|
| video | boolean |
表示流中是否包含视频轨道 |
|
| [screen] | boolean |
表示是否包含屏幕共享轨道 |
|
| [screenAudio] | boolean |
false |
|
GetDevicesSuccCb ⇒ void
getDevices 成功回调
类型: 全局自定义类型(typedef)
| 类型 | 描述 |
|---|---|
Array.<MediaDeviceInfo> |
devices 设备类型 |
GetDevicesFailCb ⇒ void
getDevices 失败回调
类型: 全局自定义类型(typedef)
| 参数 | 类型 | 描述 |
|---|---|---|
| errStr | string |
错误原因 |
LiveTranscoding : Object
管理 CDN 直播推流转码的接口
调用 setLiveTranscoding 时可以通过该接口设置直播推流。
类型: 全局自定义类型(typedef)
| 参数 | 类型 | 描述 |
|---|---|---|
| [width] | number |
视频的宽 |
| [height] | number |
视频的高 |
| [videoBitrate] | number |
CDN直播流的视频码率(Kbps) |
| [videoFramerate] | number |
CDN直播流的帧率(fps) |
| [audioSampleRate] | number |
音频采样率 32000: 32kHz, 44100: (默认) 44.1kHz, 48000: 48kHz |
| [audioBitrate] | number |
CDN直播流的音频码率(Kbps) |
| [audioChannels] | number |
CDN直播流的声道数. 1: (默认)Mono, 2: 立体, 3, 4, 5声道 |
NetworkType : Object
网络类型
该功能仅支持 Chrome 61 及以上版本,且无法保证兼容性
SubscribeOptions : Object
subscribe方法需要的options参数
类型: 全局自定义类型(typedef)
| 参数 | 类型 | 描述 |
|---|---|---|
| [video] | boolean |
可选;是否订阅视频 |
| [audio] | boolean |
可选;是否订阅音频 |
getCamerasCallback ⇒ void
getCameras方法回调函数类型
类型: 全局自定义类型(typedef)
| 参数 | 类型 | 描述 |
|---|---|---|
| devices | Array.<MediaDeviceInfo> |
视频输入设备列表 |