以下是完整的 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)
void
void
void
Stream
void
void
void
void
void
void
void
void
void
void
私有
参数 | 类型 | 描述 |
---|---|---|
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)
void
boolean
boolean
boolean
boolean
boolean
boolean
MediaStreamTrack
| undefined
MediaStreamTrack
| undefined
Array.<MediaStreamTrack>
| undefined
string
播放音视频流 该方法播放视频流或音频流。
类型: 实例方法(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
创建流的配置参数
void
getDevices 成功回调
void
getDevices 失败回调
Object
管理 CDN 直播推流转码的接口
调用 setLiveTranscoding
时可以通过该接口设置直播推流。
Object
网络类型
该功能仅支持 Chrome 61 及以上版本,且无法保证兼容性
Object
subscribe方法需要的options参数
void
getCameras方法回调函数类型
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> |
视频输入设备列表 |