Video SDK for H5 API手册
API 文档
以下是完整的 API 文档。
类 (class)
YMRTC
游密Webrtc SDK
类型: 全局类(class)
YMRTC.createClient(config) ⇒ RTCClient
该方法用于创建客户端,在每次会话里仅调用一次。
类型: 静态方法(function),来自 YMRTC
| 参数 | 类型 | 描述 |
|---|---|---|
| config | ClientConfig | 定义客户端的属性 |
示例
YMRTC.createClient(config)YMRTC.checkSystemRequirements() ⇒ boolean
该方法检查 Web SDK 对正在使用的浏览器的适配情况。 你需要在创建音视频对象 (createClient)之前调用该方法,用以检查 Web SDK 对正在使用的浏览器的适配情况 浏览器类型和版本均会影响返回结果,部分 Chromium 内核的浏览器(如 QQ 浏览器等),我们未做全量测试,如需使用,可以进行尝试。
类型: 静态方法(function),来自 YMRTC
返回值: boolean -
- 是否支持
YMRTC.getDevices(callback, [callback_Error]) ⇒ void
该方法枚举可用的媒体输入/输出设备,比如麦克风、摄像头、耳机等。 调用成功后 SDK 会通过 MediaDeviceInfo 对象返回可用的媒体设备以及设备信息。
类型: 静态方法(function),来自 YMRTC
| 参数 | 类型 | 描述 |
|---|---|---|
| callback | GetDevicesSuccCb | 成功回调 |
| [callback_Error] | GetDevicesFailCb | 失败回调 |
RTCClient
类型: 全局类(class)
- RTCClient
- new RTCClient(config)
- .init(appkey, [onSuccess], [onFaialure]) ⇒
void - .join(token, channel, uid, [optionalInfo], [onSuccess], [onFailure]) ⇒
void - .leave([onSuccess], [onFailure]) ⇒
void - .createStream(spec) ⇒
Stream - .publish(stream, onFailure) ⇒
void - .unpublish(stream, [onFailure]) ⇒
void - .subscribe(stream, [options], [onFailure])
- .unsubscribe(stream, [onFailure]) ⇒
void - .setClientRole(role, [callback]) ⇒
void - .startLiveStreaming(url) ⇒
void - .setLiveTranscoding(coding) ⇒
void - .stopLiveStreaming(url) ⇒
void - .getRecordingDevices(callback) ⇒
void - .getPlayoutDevices(callback) ⇒
void - .getCameras(callback) ⇒
void - "event:stream-added"
- "event:stream-removed"
- "event:peer-online"
- "event:peer-leave"
- "event:unmute-audio"
- "event:mute-audio"
- "event:unmute-video"
- "event:mute-video"
- "event:client-role-changed"
- "event:stream-published"
- "event:stream-unpublished"
- "event:stream-subscribed"
- "event:stream-updated"
- "event:connection-state-change"
- "event:reconnect"
- "event:connected"
- "event:error"
new RTCClient(config)
私有
| 参数 | 类型 | 描述 |
|---|---|---|
| config | ClientConfig | 构造参数 |
rtcClient.init(appkey, [onSuccess], [onFaialure]) ⇒ void
初始化客户端对象 使用该方法初始化客户端对象。
类型: 实例方法(function),来自 RTCClient
| 参数 | 类型 | 描述 |
|---|---|---|
| appkey | string | 项目appkey |
| [onSuccess] | function | 可选,成功回调, () => void; |
| [onFaialure] | function | 可选,失败回调, (err: string) => void |
示例
client.init('appkey', () => {}, (err) => {})rtcClient.join(token, channel, uid, [optionalInfo], [onSuccess], [onFailure]) ⇒ 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 | |
| [onFailure] | function | 可选;失败回调, (err: string) => void |
示例
client.join('token', 'channel', 'uid', '', (uid) => {}, (err) => {})rtcClient.leave([onSuccess], [onFailure]) ⇒ void
离开频道 调用该方法离开频道时,本地会触发 Client.on("connection-state-change") 回调; 通信场景下的用户和直播场景下的主播离开频道后,远端会触发 Client.on("peer-leave") 回调。
类型: 实例方法(function),来自 RTCClient
| 参数 | 类型 | 描述 |
|---|---|---|
| [onSuccess] | function | 可选;成功回调;() => void; |
| [onFailure] | function | 可选;失败回调;(err: string) => void; |
示例
client.leave(() => {}, (err) => {});rtcClient.createStream(spec) ⇒ Stream
该方法创建并返回音视频流对象。
类型: 实例方法(function),来自 RTCClient
返回值: Stream -
- 流对象
| 参数 | 类型 | 描述 |
|---|---|---|
| spec | StreamSpec | 定义音视频流对象的属性,详见 {StreamSpec}。 |
rtcClient.publish(stream, onFailure) ⇒ void
发布本地音视频流 发布音视频流之后,本地会触发 client.on("stream-published") 回调;远端会触发 client.on("stream-added") 回调。
类型: 实例方法(function),来自 RTCClient
| 参数 | 类型 | 描述 |
|---|---|---|
| stream | Stream | 要被发布的本地音视频流对象 |
| onFailure | function | 可选;失败回调;(err: string) => void |
示例
client.publish(stream, (err) => {});rtcClient.unpublish(stream, [onFailure]) ⇒ void
取消发布本地音视频流 该方法取消发布本地音视频流。 取消发布音视频流之后,本地会触发 client.on("stream-unpublished") 回调,远端会触发 client.on("stream-removed") 回调。
类型: 实例方法(function),来自 RTCClient
| 参数 | 类型 | 描述 |
|---|---|---|
| stream | Stream | 要取消发布的本地音视频流对象 |
| [onFailure] | function | 可选;失败回调;(err: string) => void; |
示例
client.unpublish(stream, (err) => {});rtcClient.subscribe(stream, [options], [onFailure])
订阅远端音视频流 该方法从服务器端接收远端音视频流。 订阅远端音视频流之后,本地会触发 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) => {});rtcClient.unsubscribe(stream, [onFailure]) ⇒ void
取消订阅远端音视频流 该方法取消接收远端音视频流。
类型: 实例方法(function),来自 RTCClient
| 参数 | 类型 | 描述 |
|---|---|---|
| stream | Stream | 要取消订阅的远端流 |
| [onFailure] | function | 可选;失败回调;(err: string) => void; 方法调用失败时执行的回调函数,常见的错误如下:
|
示例
client.unsubscribe(stream, (err) => {});rtcClient.setClientRole(role, [callback]) ⇒ 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 |
示例
client.setClientRole('host', (err) => {
if (err) {
// 失败
} else {
// 成功
}
});rtcClient.startLiveStreaming(url) ⇒ void
新建直播流 该方法新建直播流 推流开始后本地会触发 client.on("liveStreamingStarted") 回调。如果推流失败会触发 client.on("liveStreamingFailed") 回调。
类型: 实例方法(function),来自 RTCClient
| 参数 | 描述 |
|---|---|
| url | 接收推流的地址例如: rtmp://xxxxxxxxx |
示例
client.setLiveTranscoding(<coding>);
client.startLiveStreaming(<url>)rtcClient.setLiveTranscoding(coding) ⇒ void
设置直播推流转码 调用该方法更新转码设置后本地会触发 client.on("liveTranscodingUpdated") 回调。
类型: 实例方法(function),来自 RTCClient
| 参数 | 类型 | 描述 |
|---|---|---|
| coding | LiveTranscoding | 转码设置 |
rtcClient.stopLiveStreaming(url) ⇒ void
删除直播流 该方法停止并删除直播流。推流停止后本地会触发 client.on("liveStreamingStopped") 回调。
类型: 实例方法(function),来自 RTCClient
| 参数 | 类型 | 描述 |
|---|---|---|
| url | string | 要停止的流url |
rtcClient.getRecordingDevices(callback) ⇒ void
枚举音频输入设备 该方法枚举可用的音频输入设备,比如麦克风。 调用成功后 SDK 会通过 MediaDeviceInfo 对象返回可用的音频输入设备。
类型: 实例方法(function),来自 RTCClient
| 参数 | 类型 | 描述 |
|---|---|---|
| callback | function | (devices: MediaDeviceInfo[]): void |
示例
client.getRecordingDevices((devices) => {});rtcClient.getPlayoutDevices(callback) ⇒ void
枚举音频输出设备
该方法枚举可用的音频输出设备,比如扬声器。
调用成功后 SDK 会通过 MediaDeviceInfo 对象返回可用的音频输出设备。
类型: 实例方法(function),来自 RTCClient
| 参数 | 类型 | 描述 |
|---|---|---|
| callback | function | 回调 (devices: MediaDeviceInfo[]) => void |
rtcClient.getCameras(callback) ⇒ void
枚举视频输入设备 该方法枚举可用的视频输入设备,比如摄像头。 调用成功后 SDK 会通过 MediaDeviceInfo 对象返回可用的视频输入设备。
类型: 实例方法(function),来自 RTCClient
| 参数 | 类型 |
|---|---|
| callback | getCameraCallback |
"event:stream-added"
该回调通知应用远端音视频流已添加。 如果用户加入频道时频道内已经有其他用户,也会收到该回调报告已经存在的远端流。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| type | string | 事件类型, 为 |
| msg | string | 消息 |
| reason | string | 原因 |
| stream | Stream | 远端流 |
"event:stream-removed"
该回调通知应用已删除远端音视频流,即对方调用了 client.unpublish。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| type | string | 事件类型,为 |
| msg | string | 消息 |
| reason | string | 原因 |
| stream | Stream | 远端流 |
"event:peer-online"
该回调提示有远端用户/主播加入频道。
- 通信场景下,该回调提示有远端用户加入了频道,并返回新加入用户的 ID;如果加入之前,已经有其他用户在频道中了,新加入的用户也会收到这些已有用户加入频道的回调。
- 直播场景下,该回调提示有主播加入了频道,并返回该主播的 ID。如果在加入之前,已经有主播在频道中了,新加入的用户也会收到已有主播加入频道的回调。建议连麦主播不超过 20。
该回调在如下情况下会被触发:
- 通信场景的远端用户/直播场景的远端主播调用 client.join 方法加入频道。
- 直播场景的远端观众加入频道后调用 client.setClientRole 将用户角色改变为主播。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| uid | string | 用户ID |
"event:peer-leave"
该回调通知应用有远端用户离线。 在直播场景中,只有角色为主播的用户会触发该回调。
离线包括以下情况:
- 用户离开频道
- 正常离开:用户会收到类似“再见”的消息,接收此消息后,判断对方离开频道。
- 超时掉线:在 20 秒内,用户没有收到对方的任何数据包,则判定为对方掉线。在网络较差的情况下,有可能会误报。建议使用信令系统来做可靠的掉线检测。
- 用户角色从主播变为观众
类型: 事件,由 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);
});"event:unmute-audio"
该回调通知应用对方用户在语音通话中将自己的声音打开。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| uid | string | 用户id |
示例
client.on("unmute-audio", function(evt) {
var uid = evt.uid;
console.log("unmute audio:" + uid);
});"event:mute-audio"
该回调通知应用对方用户在语音通话中将自己的声音关闭。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| uid | string | 用户id |
示例
client.on("mute-audio", function(evt) {
var uid = evt.uid;
console.log("mute audio:" + uid);
});"event:unmute-video"
该回调通知应用对方用户在语音通话中将自己的视频打开。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| uid | string | 用户id |
示例
client.on("unmute-video", function(evt) {
var uid = evt.uid;
console.log("unmute video:" + uid);
});"event:mute-video"
该回调通知应用对方用户在语音通话中将自己的视频关闭。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| uid | string | 用户id |
示例
client.on("mute-video", function(evt) {
var uid = evt.uid;
console.log("mute video:" + uid);
});"event:client-role-changed"
该回调通知本地用户的角色发生改变。
类型: 事件,由 RTCClient 触发
属性
| 类型 | 描述 |
|---|---|
role | 角色,'host'或'audience' |
示例
client.on("client-role-changed", function(evt) {
console.log("client-role-changed", evt.role);
});"event:stream-published"
该回调通知应用本地音视频流已发布。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| type | string | 事件类型, 值为 |
| proxy | string | 是否为代理 |
| stream | Stream | 本地流 |
示例
client.on("stream-published", function(evt) {
console.log("local stream published");
//……
});"event:stream-unpublished"
该回调通知应用本地音视频流已取消发布。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| type | string | 事件类型,值为 |
| stream | Stream | 本地流 |
示例
client.on("stream-unpublished", function(evt) {
console.log("local stream unpublished");
//……
});"event:stream-subscribed"
该回调通知应用已接收远端音视频流。
类型: 事件,由 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.
//……
});"event:stream-updated"
该回调表示订阅流的音视频轨道发生变化。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| type | string | 事件类型,值为 |
| stream | Stream | 远端流 |
| video | boolean | 是否有视频 |
| audio | boolean | 是否有音频 |
"event:connection-state-change"
该回调通知应用SDK 与服务器的连接状态发生改变
SDK 与服务器的连接状态共有以下 4 种:
- DISCONNECTED:连接断开。该状态表示 SDK 处于以下任一阶段:
- 调用
client.join加入频道前的初始化阶段 - 调用
client.leave后的离开频道阶段
- 调用
- CONNECTING:正在连接中。在调用
client.join或者连接中断自动重连的时候为此状态。 - CONNECTED:已连接。该状态表示用户已经加入频道,可以在频道内发布或订阅媒体流。如果因 网络断开或切换而导致 SDK 与服务器的连接中断,SDK 会自动重连,此时应用会收到该回调,通知网络状态由 CONNECTED 变为 CONNECTING。
- DISCONNECTING:正在断开连接。在调用 Client.leave 的时候为此状态。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| curState | string | 当前的状态 |
示例
client.on("connection-state-change", function(evt) {
console.log(evt.curState);
});"event:reconnect"
该回调通知正在与服务器重新建立连接。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| type | string | 事件类型,值为 |
示例
client.on("reconnect", function() {
console.log("reconnect");
});"event:connected"
该回调通知与服务器已经成功建立连接。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| type | string | 事件类型,值为 |
示例
client.on("connected", function() {
console.log("connected");
});"event:error"
该回调通知应用有错误信息,需要进行处理,可能的错误如下:
- reason 为 "SOCKET_DISCONNECTED" 表示此时 SDK 和服务器的连接因为网络原因断开了,SDK 会自动尝试重连。
- reason 为其他错误,表示在连接断开后 SDK 自动重连阶段触发的错误。
类型: 事件,由 RTCClient 触发
属性
| 名称 | 类型 | 描述 |
|---|---|---|
| type | string | 事件类型,值为 |
示例
client.on("error", function(err) {
console.log("Got error msg:", err.reason);
});Stream
流对象
类型: 全局类(class)
-
- .play(elementId,[option],[onFailure])
- .resume()
- .stop() ⇒
void - .isPlaying() ⇒
boolean - .unmuteAudio() ⇒
boolean - .muteAudio() ⇒
boolean - .unmuteVideo() ⇒
boolean - .muteVideo() ⇒
- .hasAudio() ⇒
boolean - .hasVideo() ⇒
boolean - .getAudioTrack() ⇒
MediaStreamTrack|undefined - .getVideoTrack() ⇒
MediaStreamTrack|undefined - .getTracks() ⇒
Array.<MediaStreamTrack>|undefined - .setAudioVolume(track, [onSuccess], [onFailure])
- .setScreenProfile(profile)
- .getId() ⇒
string
stream.play(elementId,[option],[onFailure])
播放音视频流 该方法播放视频流或音频流。
类型: 实例方法(function),来自
Stream
完成回调:any- 播放成功
拒绝回调:any- 播放失败参数 类型 描述 elementId string需要播放的流ID
[option] object可选;用于流播放的选项 Optional 参数如下:
- "fit ": 设置视频播放时的显示模式,有 "cover" 和 "contain" 可以选择。
- "muted?: boolean": 设置播放的流是否静音,muted 通常用于规避浏览器的自动播放策略,true:静音,false:非静音。
[onFailure] function失败回调, (err: string) => void
fit:
"cover" | "contain"-- cover模式:优先保证视窗被填满。视频尺寸等比缩放,直至整个视窗被视频填满。如果视频长宽与显示窗口不同,则视频流会按照显示视窗的比例进行周边裁剪或图像拉伸后填满视窗。可以参考 CSS 属性中 object-fit 的 cover 选项。
- contain模式:优先保证视频内容全部显示。视频尺寸等比缩放,直至视频窗口的一边与视窗边框对齐。如果视频尺寸与显示视窗尺寸不一致,在保持长宽比的前提下,将视频进行缩放后填满视窗,缩放后的视频四周会有一圈黑边。
stream.resume()
恢复音视频流播放 该方法一般在调用 Stream.play 之后,播放失败时调用。通常播放失败是由于浏览器策略阻止导致的。 该方法需用手势触发。详见处理浏览器的自动播放策略。
类型: 实例方法(function),来自
Stream
完成回调:any- 恢复成功
拒绝回调:any- 恢复失败
stream.stop() ⇒
void停止音视频流 调用该方法停止播放
Stream.play播放的音视频流。类型: 实例方法(function),来自
Stream
stream.isPlaying() ⇒
boolean返回音视频流当前是否在播放状态
类型: 实例方法(function),来自
Stream
返回值:boolean-- true:该音视频流正在渲染或播放。
- false:该音视频流没有渲染。
stream.unmuteAudio() ⇒
boolean启用音频轨道 该方法启用音频轨道。对本地流启用音频轨道后远端会触发 client.on("unmute-audio") 回调。
类型: 实例方法(function),来自
Stream
返回值:boolean-- true:启用音频轨道成功。
- false:启用音频轨道失败,可能的原因包括没有音频、流未初始化、音频轨道已经启用等。
stream.muteAudio() ⇒
boolean禁用音频轨道 该方法禁用音频轨道。 对于本地流,调用该方法会停止发送音频,远端会触发 Client.on("mute-audio") 回调。 对于远端流,调用该方法仍然会接收音频,但是会停止播放。 对于本地流,在 createStream 时将 audio 设置为 true 才可使用该方法。
类型: 实例方法(function),来自
Stream
返回值:boolean-- true:禁用音频轨道成功。
- false:禁用音频轨道失败,可能的原因包括没有音频、流未初始化、音频轨道已经禁用等。
stream.unmuteVideo() ⇒
boolean启用视频轨道 该方法启用视频轨道。对本地流启用视频轨道后远端会触发 Client.on("unmute-video") 回调。 Note 对于本地创建的流,在 createStream 时将 video 设置为 true 才可使用该方法。 视频轨道默认为开启状态。如果你调用了 muteVideo,可调用本方法启用视频。
类型: 实例方法(function),来自
Stream
返回值:boolean-- true:启用视频轨道成功。
- false:启用视频轨道失败,可能的原因包括没有视频、流未初始化、视频轨道已经启用等。
stream.muteVideo() ⇒
禁用视频轨道 该方法禁用视频轨道。 对于本地流,调用该方法会停止发送视频,远端会触发 client.on("mute-video") 回调。 对于远端流,调用该方法仍然会接收视频,但是会停止播放。 对于本地创建的流,在 createStream 时将 video 设置为 true 才可使用该方法。
类型: 实例方法(function),来自
Stream
返回值:- true:禁用视频轨道成功。
- false:禁用视频轨道失败,可能的原因包括没有视频、流未初始化、视频轨道已经禁用等。
stream.hasAudio() ⇒
boolean获取音频 flag 该方法仅对本地流有效。
类型: 实例方法(function),来自
Stream
返回值:boolean-- true: 该音视频流对象中包含音频资源。
- false: 该音视频流对象中不包含音频资源。
stream.hasVideo() ⇒
boolean获取视频 flag 该方法仅对本地流有效。
类型: 实例方法(function),来自
Stream
返回值:boolean-- true: 该音视频流对象中包含视频资源。
- false: 该音视频流对象中不包含视频资源。
stream.getAudioTrack() ⇒
MediaStreamTrack|undefined获取音频轨道 该方法获取音视频流中的音频轨道,可与 replaceTrack 搭配使用。
类型: 实例方法(function),来自
Stream
返回值:MediaStreamTrack|undefined-- 如果音视频流中包含音频轨道,会以 MediaStreamTrack 对象返回。
stream.getVideoTrack() ⇒
MediaStreamTrack|undefined获取视频轨道 该方法获取音视频流中的视频轨道,可与 replaceTrack 搭配使用。
类型: 实例方法(function),来自
Stream
返回值:MediaStreamTrack|undefined-- 如果音视频流中包含视频轨道,会以 MediaStreamTrack 对象返回。
stream.getTracks() ⇒
Array.<MediaStreamTrack>|undefined获取音视频轨道
类型: 实例方法(function),来自
Stream
返回值:Array.<MediaStreamTrack>|undefined-- 如果音视频流存在且包含音频或视频流,会以 MediaStreamTrack数组返回
stream.setAudioVolume(track, [onSuccess], [onFailure])
替换音视频轨道 该方法可以替换本地音视频流中的音视频轨道。 本地流发布后,可以通过该方法切换摄像头或者切换麦克风和播放的 mp3 等。 新的音视频轨道可以通过 getUserMedia,MediaElement.captureStream 等方法获取。 被替换的音视频轨道会被强制停止。
类型: 实例方法(function),来自
Stream参数 类型 描述 track MediaStreamTrack要替换的track
[onSuccess] function可选;成功回调;() => void;
[onFailure] function- 可选;失败回调;(err: string) => void;
- 方法调用失败的回调。常见的错误如下:
- "INVALID_TRACK" 和 "INVALID_TRACK_TYPE": 新传入的 MediaStreamTrack 对象无法识别,请检查传入对象。
- "MEDIASTREAM_TRACK_NOT_FOUND": 找不到替换对象,比如在纯音频流上尝试替换一个视频的 Track。
- "NO_STREAM_FOUND": 找不到本地流对象,无法替换。
示例
JS - 支持 Chrome 65+,Safari 以及最新版 Firefox 浏览器。 - 部分移动设备上该方法可能不生效。 - Firefox 不支持在不同的麦克风之间切换音频轨道,可以支持切换麦克风和播放的音乐文件。 - Safari 部分外接音频设备不支持此方法。 - 订阅端无法知悉音视频轨道被替换。 - 推荐使用 switchDevice 方法来切换媒体输入设备。stream.setScreenProfile(profile)
设置屏幕属性 该方法设置屏幕共享时屏幕的显示属性,必须在 Stream.init 之前调用。
- 该方法仅可对本地流调用。
类型: 实例方法(function),来自
Stream参数 profile stream.getId() ⇒
string获取音视频流 ID 该方法可以获取音视频流 ID。
类型: 实例方法(function),来自
Stream
返回值:string-- 流id
自定义类型 (typedef)
- ClientConfig :
Object 定义 createClient 中的 config 参数的接口。
- StreamSpec :
Object 创建流的配置参数
- GetDevicesSuccCb ⇒
void getDevices 成功回调
- GetDevicesFailCb ⇒
void getDevices 失败回调
- LiveTranscoding :
Object 管理 CDN 直播推流转码的接口 调用
setLiveTranscoding时可以通过该接口设置直播推流。- NetworkType :
Object 网络类型
- "bluetooth":蓝牙网络
- "cellular":蜂窝移动数据网络
- "ethernet":以太网
- "none":没有网络
- "wifi":Wi-Fi
- "wimax":WiMax
- "other":其他网络类型
- "unknown":未知网络类型
- "UNSUPPORTED":浏览器不支持获取网络类型
该功能仅支持 Chrome 61 及以上版本,且无法保证兼容性
- SubscribeOptions :
Object subscribe方法需要的options参数
- getCamerasCallback ⇒
void getCameras方法回调函数类型
ClientConfig
ClientConfig :
Object定义 createClient 中的 config 参数的接口。
类型: 全局自定义类型(typedef)
参数 类型 默认值 描述 mode string模式: 'rtc'或'live'
codec string编码方式: 'vp8','h264'或'h264,vp8', 推荐默认填'h264,vp8',兼容性最好
[debug] booleanfalse是否开启调试模式,调试模式会输出内部日志;默认false
StreamSpec
StreamSpec :
Object创建流的配置参数
类型: 全局自定义类型(typedef)
参数 类型 默认值 描述 [streamID] number|string''请设置streamId 为用户ID, 用户id可以从RTCClient.join返回值获取到
audio boolean表示流中是否包含音频轨道
video boolean表示流中是否包含视频轨道
[screen] boolean表示是否包含屏幕共享轨道
[screenAudio] booleanfalsetrue: 共享时共享本地正在播放的声音false: 默认值,共享时不要共享本地播放的声音GetDevicesSuccCb
GetDevicesSuccCb ⇒
voidgetDevices 成功回调
类型: 全局自定义类型(typedef)
类型 描述 Array.<MediaDeviceInfo>devices 设备类型
GetDevicesFailCb
GetDevicesFailCb ⇒
voidgetDevices 失败回调
类型: 全局自定义类型(typedef)
参数 类型 描述 errStr string错误原因
LiveTranscoding
LiveTranscoding :
Object管理 CDN 直播推流转码的接口 调用
setLiveTranscoding时可以通过该接口设置直播推流。类型: 全局自定义类型(typedef)
参数 类型 描述 [width] number视频的宽
[height] number视频的高
[videoBitrate] numberCDN直播流的视频码率(Kbps)
[videoFramerate] numberCDN直播流的帧率(fps)
[audioSampleRate] number音频采样率 32000: 32kHz, 44100: (默认) 44.1kHz, 48000: 48kHz
[audioBitrate] numberCDN直播流的音频码率(Kbps)
[audioChannels] numberCDN直播流的声道数. 1: (默认)Mono, 2: 立体, 3, 4, 5声道
NetworkType
NetworkType :
Object网络类型
- "bluetooth":蓝牙网络
- "cellular":蜂窝移动数据网络
- "ethernet":以太网
- "none":没有网络
- "wifi":Wi-Fi
- "wimax":WiMax
- "other":其他网络类型
- "unknown":未知网络类型
- "UNSUPPORTED":浏览器不支持获取网络类型
该功能仅支持 Chrome 61 及以上版本,且无法保证兼容性
SubscribeOptions
SubscribeOptions :
Objectsubscribe方法需要的options参数
类型: 全局自定义类型(typedef)
参数 类型 描述 [video] boolean可选;是否订阅视频
[audio] boolean可选;是否订阅音频
getCamerasCallback
getCamerasCallback ⇒
voidgetCameras方法回调函数类型
类型: 全局自定义类型(typedef)
参数 类型 描述 devices Array.<MediaDeviceInfo>视频输入设备列表
