VRTC 是 Byte Web SDK 中所有可调用方法的入口。
VRTC 可用于创建客户端和音视频流对象,以及一些相关操作。
| 类型 | 名称 |
|---|---|
| string | VERSION |
| 返回 | 名称 |
|---|---|
| boolean | checkSystemRequirements |
| 无 | getDevices |
| client | createClient |
| stream | createStream |
VERSION: string
SDK 版本号,用于版本管理
checkSystemRequirements(): boolean
检查 Web SDK 对正在使用的浏览器的适配情况
返回值
true: Web SDK 与当前使用的浏览器适配
false: Web SDK 与当前使用的浏览器不适配
checkVideoPermission(onSuccess: () => void, onFailure: () => void): void
检测是否有摄像头权限
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| onSuccess | function | 成功回调 | 是 | () =>{} |
| onFailure | function | 失败回调 | 否 | () =>{} |
checkAudioPermission(onSuccess: () => void, onFailure: () => void): void
检测是否有麦克风权限
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| onSuccess | function | 成功回调 | 是 | () =>{} |
| onFailure | function | 失败回调 | 否 | () =>{} |
getDevices(onSuccess: (devices: [DeviceInstance]) => void, onFailure?: (err: Error) => void): void
获取可用的媒体输入/输出设备,比如麦克风、摄像头、耳机等
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| onSuccess | function | 成功回调 | 是 | |
| onFailure | function | 失败回调 | 否 | () =>{} |
DeviceInstance详情
| 属性名 | 类型 | 说明 |
|---|---|---|
| deviceId | string | 所代表设备的标识符,每个设备唯一 |
| groupId | string | 所代表设备的组标识符。如果两个设备属于同一物理设备,则它们具有相同的组标识符 |
| kind | string: audioinputaudiooutput videoinput |
设备的种类 |
| label | string | 描述此设备的标签 |
createClient(mode: string, role: string, iceUrl: string): client
创建客户端
参数
| 参数名 | 类型 | 说明 | 是否必需 | 默认值 |
|---|---|---|---|---|
| mode | string | 通讯模式。计划删除,不建议继续使用。 | 否 | live |
| role | string | 用户模式 | 否 | live |
| iceUrl | string | 工作环境 | 否 | https://rtc-access.bytedance.com/dispatch/v1/AccessInfo?Action=GetAccessInfo |
返回值
createStream(options: StreamOption): stream
创建音视频流对象
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| options | object | 流参数 | 是 |
StreamOption设置
| 属性名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| audio | boolean | 是否开启音频 | 是 | |
| video | boolean | 是否开启视频 | 是 | |
| data | boolean | 是否传递数据 | 否 | false |
| screen | boolean | 是否有屏幕分享 | 否 | false |
| mediaStream | mediaStream | 媒体流 | 否 | |
| microphoneId | string | 麦克风设备id | 否 | |
| cameraId | string | 摄像头设备id | 否 |
返回值
注意
1.mediaStream 由浏览器原生 API 实现。 2.microphoneId 和 cameraId 可以从 getDevices 中获取。
Client 接口提供音视频通话的核心功能,例如加入频道、发布和订阅音视频流等。
你可以通过 createClient 来创建 client 对象。一个 client 对象代表一个本地客户端。
| 返回 | 名称 |
|---|---|
| 无 | init |
| string | join |
| promise | leave |
| promise | publish |
| promise | unpublish |
| promise | subscribe |
| promise | unsubscribe |
| 无 | on |
| 无 | off |
| symbol | getConnectionState |
| 无 | getLocalVideoStats |
| 无 | getLocalAudioStats |
| 无 | getRemoteAudioStats |
| 无 | getRemoteVideoStats |
| promise | renewToken |
| 无 | setLiveTranscoding |
| 无 | startLiveStreaming |
| 无 | stopLiveStreaming |
| promise | sendCustomMessage |
| promise | sendMessageToUser |
| 无 | setBusinessId |
| string | getBusinessId |
init(appId: string, onSuccess?: () => void, onFailure?: (err: Error) => void): void
client 初始化,核心功能是与信令服务器建立 websocket 长链接,是所有后续操作的前提
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| appId | string | 每个项目自带的appId | 是 | |
| onSuccess | function | 成功回调 | 否 | () =>{} |
| onFailure | function | 失败回调 | 否 | () =>{} |
注意
1.后续操作都需要以此函数调用为前提。
join(token: string, roomId: string, userId: string, onSuccess?: () => void, onFailure?: (err: Error) => void): string
加入房间
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| token | string | 进入房间时用于校验的验证 | 是 | |
| roomId | string | 需要进入的房间号 | 是 | |
| userId | string | 本地用户的id | 是 | |
| onSuccess | function | 成功回调 | 否 | () =>{} |
| onFailure | function | 失败回调 | 否 | () =>{} |
返回值
本地用户的userId
注意
1.同一个 client 只可以加入一个房间。
2.token 与 appid 息息相关,是每个项目各自有生成方式。
3.与 leave 为逆操作。
4.加入大班小课功能后,可以同时创建两个 client 分别进入不同房间,但是只可以在一个房间内推流。
leave(onSuccess?: () => void, onFailure?: (err: Error) => void): promise
离开当前房间
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| onSuccess | function | 成功回调 | 否 | () =>{} |
| onFailure | function | 失败回调 | 否 | () =>{} |
返回值
promise
注意
1.与join为逆操作。
publish(byteStream: byteStream, onFailure?: (err: Error) => void): promise
在房间内推流
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| byteStream | byteStream | stream流 | 是 | |
| onFailure | function | 失败回调 | 否 | () =>{} |
返回值
promise
注意
1.byteStream 需要 VRTC.createStream 来创建。
2.与 unpublish 为逆操作。
回调
成功推流会触发stream-published事件
unpublish(byteStream: byteStream, onFailure?: (err: Error) => void): promise
停止推流
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| byteStream | byteStream | stream流 | 是 | |
| onFailure | function | 失败回调 | 否 | () =>{} |
返回值
promise
注意
1.与 publish 为逆操作。
回调
成功之后远端会受到stream-removed事件
subscribe(byteStream: byteStream, options?: SubscribeOption, onFailure?: (err: Error) => void): promise
订阅远端流
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| byteStream | byteStream | stream流 | 是 | |
| options | SubscribeOption | 订阅配置 | 否 | {} |
| onFailure | function | 失败回调 | 否 | () =>{} |
SubscribeOption配置
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| video | boolean | 是否订阅视频 | 否 | true |
| audio | boolean | 是否订阅音频 | 否 | true |
| bigStream | boolean | 订阅大流还是小流(开启了双流推送时) | 否 | true |
返回值
promise
注意
1.与 unsubscribe 为逆操作。
2.建议配合stream-added事件使用。
3.SubscribeOption 中 audio 与 video 不可以同时设置为 false 。
回调
成功订阅会触发stream-subscribed事件
unsubscribe(byteStream: byteStream, onFailure?: (err: Error) => void): promise
停止订阅
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| byteStream | byteStream | stream流 | 是 | |
| onFailure | function | 失败回调 | 否 | () =>{} |
返回值
promise
注意
1.与 subscribe 为逆操作。
on(event: string, callback: (event: OnerEvent) => void): void
监听事件
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| event | string | 需要监听的事件 | 是 | |
| callback | function | 事件触发时调用的回调 | 是 |
OnerEvent参数
| 参数名 | 类型 | 说明 | 必定存在 |
|---|---|---|---|
| type | string | 事件类型 | 是 |
| code | string | 事件代码 | 否 |
| message | string | 事件信息 | 否 |
| stream | string | 事件主体流 | 否 |
| uid | string | 事件主体uid | 否 |
注意
1.与 off 为逆操作。
off(event: string, callback: (event: OnerEvent) => void): void
取消监听事件
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| event | string | 需要取消监听的事件 | 是 | |
| callback | function | 需要取消调用的回调 | 是 |
OnerEvent参数
| 参数名 | 类型 | 说明 | 必定存在 |
|---|---|---|---|
| type | string | 事件类型 | 是 |
| code | string | 事件代码 | 否 |
| message | string | 事件信息 | 否 |
| stream | string | 事件主体流 | 否 |
| uid | string | 事件主体uid | 否 |
注意
1.与 on 为逆操作。
getConnectionState(): symbol
获取连接状态
返回值
1.调用join之后为CONNECTING。
2.进入房间成功后为CONNECTED。
3.调用leave之后为DISCONNECTING。
4.离开房间成功后为DISCONNECTED。
getLocalVideoStats(callback: ({ uid: LocalVideoStats }) => void): void
获取本地流视频统计
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| callback | function | 获取统计后触发的回调 | 是 |
LocalVideoStats统计详情
| 属性名 | 类型 | 说明 |
|---|---|---|
| CaptureFrameRate | number | 捕获视频帧率,单位是 fps |
| CaptureResolutionHeight | number | 捕获视频高度 |
| CaptureResolutionWidth | number | 捕获视频宽度 |
| EncodeDelay | number | 从采集到编码的延迟,单位为 ms |
| MuteState | boolean | 视频是否开启 |
| SendBitrate | number | 发送视频码率,单位为 kbps |
| SendFrameRate | number | 发送视频帧率,单位是 fps |
| SendResolutionWidth | number | 发送视频宽度 |
| SendResolutionHeight | number | 发送视频高度 |
| TotalFreezeTime | number | 总卡顿时长,单位是 s |
| TargetSendBitrate | number | 目标发送视频码率,单位是 kbps |
| TotalDuration | number | 总视频时长,单位是 s |
getLocalAudioStats(callback: ({ uid: LocalAudioStats }) => void): void
获取本地流音频统计
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| callback | function | 获取统计后触发的回调 | 是 |
LocalAudioStats统计详情
| 属性名 | 类型 | 说明 |
|---|---|---|
| CodecType | string: 'Opus' | 'AAC' | 音频编码格式 |
| MuteState | boolean | 音频是否开启 |
| RecordingLevel | number | 录制音量 |
| SendBitrate | number | 发送音频码率,单位是 kbps |
getRemoteAudioStats(callback: ({ uid: RemoteAudioStats }) => void): void
获取远端流音频统计
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| callback | function | 获取统计后触发的回调 | 是 |
RemoteAudioStats统计详情
| 属性名 | 类型 | 说明 |
|---|---|---|
| End2EndDelay | number | 发送端到接收端延迟,单位为 ms |
| TransportDelay | number | 传输延迟,单位为 ms |
| RecvLevel | number | 接收音量 |
| RecvBitrate | number | 接收码率,单位为 kbps |
| CodecType | string: 'Opus' | 'AAC' | 音频编码格式 |
| MuteState | Boolean | 音频是否开启 |
| TotalFreezeTime | number | 总卡顿时间,单位是 s |
| TotalPlayDuration | number | 总播放时长,单位是 s |
getRemoteVideoStats(callback: ({ uid: RemoteVideoStats }) => void): void
获取远端流视频统计
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| callback | function | 获取统计后触发的回调 | 是 |
RemoteVideoStats统计详情
| 属性名 | 类型 | 说明 |
|---|---|---|
| End2EndDelay | number | 发送端到接收端延迟,单位为 ms |
| TransportDelay | number | 传输延迟,单位为 ms |
| RecvBitrate | number | 接收视频码率,单位为 kbps |
| RecvResolutionWidth | number | 接收视频宽度 |
| RecvResolutionHeight | number | 接收视频高度 |
| RenderResolutionWidth | number | 渲染视频宽度 |
| RenderResolutionHeight | number | 渲染视频高度 |
| RenderFrameRate | number | 渲染视频帧率,单位是 fps |
| MuteState | boolean | 是否开启视频 |
| TotalFreezeTime | number | 总卡顿时间,单位是 s |
| TotalPlayDuration | number | 总播放时长,单位是 s |
renewToken(token: string, onSuccess?: () => void, onFailure?: (err: Error) => void): promise
更新校验 token
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| token | string | 新的校验token | 是 | |
| onSuccess | function | 成功回调 | 否 | () =>{} |
| onFailure | function | 失败回调 | 否 | () =>{} |
返回值
promise
注意
1.进入房间时传入的校验 token 有过期时间,一旦触发 token 过期,会收到token-request事件,请在收到此事件后重新生成 token 然后调用此函数。
setLiveTranscoding(liveTranscoding: object): void
设置直播推流转码
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| liveTranscoding | object | 合流转推参数 | 是 |
liveTranscoding属性设置
| 属性名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| audioBitrate | number | 音频码率 | 否 | 48 |
| audioChannels | number: 1-5 | 声道数 | 否 | 1 |
| audioSampleRate | number: 32000/44100/48000 | 音频采样率 | 否 | 44100 |
| backgroundColor | number: 0x000000-0xffffff | 背景色 | 否 | 0x000000 |
| height | number | 视频高度 | 否 | 360 |
| lowLatency | boolean | 是否使用低延时 | 否 | false |
| videoBitrate | number | 视频码率 | 否 | 400 |
| videoFramerate | number: 1-30 | 视频帧率 | 否 | 15 |
| videoGop | number | 视频的 GOP | 否 | 30 |
| width | number | 视频宽度 | 否 | 640 |
| transcodingUsers | array | 转码合图用户 | 是 |
liveTranscoding设置示例
var LiveTranscoding = {
width: 640,
height: 360,
videoBitrate: 400,
videoFramerate: 15,
audioSampleRate: 48000,
audioBitrate: 48,
audioChannels: 1,
videoGop: 30,
transcodingUsers,
backgroundColor: 0x000000
};
transcodingUsers设置
| 属性名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| alpha | number: 0-1 | 透明度 | 是 | |
| height | number | 视频帧高度 | 否 | 360 |
| uid | string | 用户uid | 否 | |
| width | number | 视频帧宽度 | 否 | 640 |
| x | number | 视频帧左上角的横轴位置 | 否 | 0 |
| y | number | 视频帧左上角的纵轴位置 | 否 | 0 |
| zOrder | number | 图层编号 | 否 | 0 |
注意
1.请在调用startLiveStreaming前调用此参数。
startLiveStreaming(url: string, enableTranscoding: boolean, onSuccess: () => void, onFailure: (err: Error) => void): void
开启转推直播,推流到cdn
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| url | string | 直播推流的地址 | 是 | |
| enableTranscoding | boolean | 是否启用直播转码 | 否 | true |
| onSuccess | function | 成功回调 | 否 | () =>{} |
| onFailure | function | 失败回调 | 否 | () =>{} |
stopLiveStreaming(onSuccess: () => void, onFailure: (err: Error) => void): void
停止合流转推
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| onSuccess | function | 成功回调 | 否 | () =>{} |
| onFailure | function | 失败回调 | 否 | () =>{} |
sendCustomMessage(message: string|Object, onSuccess?: () => void, onFailure?: (err: Error) => void): promise
用户发送消息,并透传房间内各客户端
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| message | string|Object | 需要传递的消息 | 是 | |
| onSuccess | function | 成功回调 | 否 | () =>{} |
| onFailure | function | 失败回调 | 否 | () =>{} |
返回值
promise
sendMessageToUser(uid: string|Object, message: object): promise
向指定用户发送消息
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| uid | string|Object | 用户 ID | 是 | |
| message | object | 需要传递的消息 | 是 |
返回值
promise
setBusinessId(id: string, onFailure?: (err: Error) => void): void
设置业务id,一般用于区分相同项目中的不同业务线
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| id | string | 业务id | 是 | |
| onFailure | function | 失败回调 | 否 | ()=>{} |
getBusinessId(): string
获取业务id
返回值
业务id
Stream 接口提供的方法用于定义音视频流对象的行为,例如流的播放控制、音视频的编码配置等。
你可以通过 createStream创建 stream 对象。一个 stream 对象指通话中发布的本地音视频流或订阅的远端音视频流。
| 返回 | 名称 |
|---|---|
| 无 | init |
| 无 | play |
| 无 | getMediaStream |
| 无 | setVideoBitRate |
| 无 | setVideoProfile |
| 无 | setVideoEncoderConfiguration |
| 无 | getStats |
| 无 | stop |
| 无 | close |
| 无 | enableAudio |
| 无 | enableVideo |
| 无 | disableAudio |
| 无 | disableVideo |
| 无 | muteAudio |
| 无 | muteVideo |
| 无 | unmuteAudio |
| 无 | unmuteVideo |
| string | getId |
| boolean | hasVideo |
| boolean | hasAudio |
| 无 | replaceTrack |
| number | getAudioLevel |
| 无 | startAudioMixing |
| 无 | stopAudioMixing |
| 无 | pauseAudioMixing |
| 无 | resumeAudioMixing |
| number | getAudioMixingDuration |
| number | getAudioMixingCurrentPosition |
| 无 | setAudioMixingPosition |
| 无 | adjustAudioMixingVolume |
| mediaStreamTrack | getVideoTrack |
| mediaStreamTrack | getAudioTrack |
| 无 | mirror |
init(onSuccess?: () => void, onFailure?: (err: Error) => void): void
流初始化
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| onSuccess | function | 成功回调 | 否 | () =>{} |
| onFailure | function | 失败回调 | 否 | () =>{} |
注意
1.后续操作都需要以此函数调用为前提。
play(domID: string, option?: object, onFailure?: (err: Error) => void): void
播放媒体流
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| domID | string | html页面放置video标签的dom组件id | 是 | |
| option | object | 播放参数 | 否 | {} |
| onFailure | function | 失败回调 | 否 | () =>{} |
option详情
| 属性名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| fit | string:cover/contain | video标签的style属性 | 否 | |
| muted | boolean | 是否静音 | 否 | false |
getMediaStream(): mediaStream
获取媒体流
返回值
mediaStream
setVideoBitRate(bitrate: array): void
设置视频码率
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| bitrate | array:[min, max] | 目标码率,单位是kbps | 是 |
注意
1.码率设置会有一个缓步上升的过程,慢慢达到目标值。
2.如果范围设置比较窄,实际效果并不很精确。
3.请在 publish 之前调用此方法。
setVideoProfile(profile: string): void
设置视频属性,设置本地流的视频编码属性。每个属性对应一套视频参数,如分辨率、帧率、码率等
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| profile | string | 视频参数 | 是 |
profile规格
| 视频属性 | 分辨率(宽x高) | 帧率(fps) | 码率(Kbps) | Chrome | Firefox | Safari |
|---|---|---|---|---|---|---|
| 120p_1 | 160 x 120 | 15 | 65 | 支持 | ||
| 120p_3 | 120 x 120 | 15 | 50 | 支持 | ||
| 180p_1 | 320 x 180 | 15 | 140 | 支持 | ||
| 180p_3 | 180 x 180 | 15 | 100 | 支持 | ||
| 180p_4 | 240 x 180 | 15 | 120 | 支持 | ||
| 240p_1 | 320 x 240 | 15 | 200 | 支持 | ||
| 240p_3 | 240 x 240 | 15 | 140 | 支持 | ||
| 240p_4 | 424 x 240 | 15 | 220 | 支持 | ||
| 360p_1 | 640 x 360 | 15 | 400 | 支持 | ||
| 360p_3 | 360 x 360 | 15 | 260 | 支持 | ||
| 360p_4 | 640 x 360 | 30 | 600 | 支持 | ||
| 360p_6 | 360 x 360 | 30 | 400 | 支持 | ||
| 360p_7 | 480 x 360 | 15 | 320 | 支持 | ||
| 360p_8 | 480 x 360 | 30 | 490 | 支持 | ||
| 360p_9 | 640 x 360 | 15 | 800 | 支持 | ||
| 360p_10 | 640 x 360 | 24 | 800 | 支持 | ||
| 360p_11 | 640 x 360 | 24 | 1000 | 支持 | ||
| 480p_1 | 640 x 480 | 15 | 500 | 支持 | 支持 | 支持 |
| 480p_2 | 640 x 480 | 30 | 1000 | 支持 | 支持 | 支持 |
| 480p_3 | 480 x 480 | 15 | 400 | 支持 | 支持 | 支持 |
| 480p_4 | 640 x 480 | 30 | 750 | 支持 | 支持 | 支持 |
| 480p_6 | 480 x 480 | 30 | 600 | 支持 | 支持 | 支持 |
| 480p_8 | 848 x 480 | 15 | 610 | 支持 | 支持 | 支持 |
| 480p_9 | 848 x 480 | 30 | 930 | 支持 | 支持 | 支持 |
| 480p_10 | 640 x 480 | 10 | 400 | 支持 | 支持 | 支持 |
| 720p_1 | 1280 x 720 | 15 | 1130 | 支持 | 支持 | 支持 |
| 720p_2 | 1280 x 720 | 30 | 2000 | 支持 | 支持 | 支持 |
| 720p_3 | 1280 x 720 | 30 | 1710 | 支持 | 支持 | 支持 |
| 720p_5 | 960 x 720 | 15 | 910 | 支持 | 支持 | 支持 |
| 720p_6 | 960 x 720 | 30 | 1380 | 支持 | 支持 | 支持 |
| 1080p_1 | 1920 x 1080 | 15 | 2080 | 支持 | 支持 | |
| 1080p_2 | 1920 x 1080 | 30 | 3000 | 支持 | 支持 | |
| 1080p_3 | 1920 x 1080 | 30 | 3150 | 支持 | 支持 | |
| 1080p_5 | 1920 x 1080 | 60 | 4780 | 支持 | 支持 | |
| 1440p_1 | 2560 x 1440 | 30 | 4850 | 支持 | 支持 | |
| 1440p_2 | 2560 x 1440 | 60 | 7350 | 支持 | 支持 | |
| 4K_1 | 3840 x 2160 | 30 | 8910 | 支持 | 支持 | |
| 4K_3 | 3840 x 2160 | 60 | 13500 | 支持 | 支持 |
注意
1.码率,帧率和分辨率设置会有一个缓步上升的过程,慢慢达到目标值。
2.请在 publish 之前调用此方法。
setVideoEncoderConfiguration(option: object): void
自定义视频编码配置,可以根据需要灵活设置本地流的视频分辨率、帧率和码率
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| option | object | 自定义视频编码 | 是 |
option详情
| 属性名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| resolution | object | 视频分辨率(宽高) | 否 | |
| frameRate | object | 视频帧率(最低,最高) | 否 | |
| bitrate | object | 视频码率(最低,最高,单位是kbps) | 否 |
option示例
stream.setVideoEncoderConfiguration({
// 视频分辨率
resolution: {
width: 640,
height: 480
},
// 视频编码帧率。通常建议是 15 帧,不超过 30 帧
frameRate: {
min: 15,
max: 30
},
// 码率。一般情况下推荐使用标准码率
bitrate: {
min: 1000,
max: 5000
}
});
注意
1.码率,帧率和分辨率设置会有一个缓步上升的过程,慢慢达到目标值。
2.请在 publish 之前调用此方法。
getStats(callback: (StreamStats: StreamStats) => void): void;
获取流统计
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| callback | function | 获取到统计触发的回调 | 是 |
StreamStats详情
| 属性名 | 类型 | 说明 |
|---|---|---|
| accessDelay | number | 接入 SD-RTN 网络的延迟,单位为 ms |
| audio(Sent/Received)Bytes | number | 已发送/接收音频字节数 |
| audio(Sent/Received)Packets | number | 已发送/接收音频包数 |
| audio(Sent/Received)PacketsLostRate | number | 发送/接收音频丢包率 |
| video(Sent/Received)Bytes | number | 已发送/接收视频字节数 |
| video(Sent/Received)FrameRate | number | 发送/接收视频帧率,单位是 fps |
| video(Sent/Received)Packets | number | 已发送/接收视频包数 |
| video(Sent/Received)PacketsLostRate | number | 发送/接收视频丢包率 |
| video(Sent/Received)ResolutionHeight | number | 视频高度 |
| video(Sent/Received)ResolutionWidth | number | 视频宽度 |
stop(): void
停止播放(仅停止播放,不断开rtc连接)
close(): void
关闭视频流或音频流,停止推拉流,断开rtc连接,取消摄像头和麦克风的访问权限并清除统计
此接口已经废弃
enableAudio(): boolean
启用音频
返回值
true代表成功,false代表失败
注意
1.请使用unmuteAudio。
此接口已经废弃
enableVideo(): boolean
启用视频
返回值
true代表成功,false代表失败
注意
1.请使用unmuteVideo。
此接口已经废弃
disableAudio(): boolean
关闭音频
返回值
true代表成功,false代表失败
注意
1.请使用muteAudio。
此接口已经废弃
disableVideo(): boolean
关闭视频
返回值
true代表成功,false代表失败
注意
1.请使用muteVideo。
muteAudio(): boolean
关闭音频
返回值
true代表成功,false代表失败
muteVideo(): boolean
关闭视频
返回值
true代表成功,false代表失败
unmuteAudio(): void
开启音频
返回值
true代表成功,false代表失败
unmuteVideo(): boolean
关闭视频
返回值
true代表成功,false代表失败
getId(): string
获取流id
返回值
当前流的id
hasAudio(): boolean
获取音频 flag
返回值
true:当前流有音频数据
false:当前流没有音频数据
hasVideo(): boolean
获取视频 flag
返回值
true:当前流有视频数据
false:当前流没有视频数据
replaceTrack(mediaStreamTrack: mediaStreamTrack, onSuccess?: () => void, onFailure?: (err: Error) => void): void
替换媒体流里面的音频或者视频轨
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| mediaStreamTrack | mediaStreamTrack | 媒体流轨道 | 是 | |
| onSuccess | function | 成功回调 | 否 | () =>{} |
| onFailure | function | 失败回调 | 否 | () =>{} |
注意
1.mediaStreamTrack 为浏览器原生api。
getAudioLevel(): number
获取当前音频能量(可以理解为音量)
返回值
number:取值范围 0-1
注意
1.该方法获取的是当前时刻的音量。如果想表示本地或远端音量的变化,建议使用 setTimeout 或者 setInterval 方法实时获取。
startAudioMixing(options: object, callback?: (err?: Error) => void): void
开始播放音乐文件,指定在线音频文件和麦克风采集的音频流进行混音或替换(用音频文件替换麦克风采集的音频流)。
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| options | object | 设置参数 | 是 | |
| callback | function | 结果回调 | 否 | () =>{} |
options详情
| 属性名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| cacheResource | boolean | 是否缓存混音文件 | 否 | true |
| cycle | number | 指定音频文件循环播放的次数 | 否 | 1 |
| filePath | string | 指定需要混音的在线音频文件 | 是 | |
| loop | boolean | 是否循环播放 | 否 | false |
| playTime | number | 设置音频文件开始播放的时间位置,单位为 ms | 是 | |
| replace | boolean | 是否要用音频文件替换本地音频流 | 否 | false |
使用示例
stream.startAudioMixing({
filePath: 'example.mp3',
playTime: 0,
loop: true
}, function(error) {
if (error) {
// 错误处理
return;
}
// 播放成功后的流程
});
注意
1.支持浏览器:Safari 12 及以上版本,Chrome 65 及以上版本以及最新版 Firefox 。
stopAudioMixing(callback?: (err?: Error) => void): void
停止播放音乐文件
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| callback | function | 结果回调 | 否 | () =>{} |
pauseAudioMixing(callback?: (err?: Error) => void): void
暂停播放音乐文件
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| callback | function | 结果回调 | 否 | () =>{} |
resumeAudioMixing(callback?: (err?: Error) => void): void
恢复播放音乐文件
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| callback | function | 结果回调 | 否 | () =>{} |
getAudioMixingDuration(): number
获取音乐文件总时长
返回值
音乐文件总时长(ms)
getAudioMixingCurrentPosition(): number
获取音乐文件播放进度
返回值
音乐文件播放进度(ms)
setAudioMixingPosition(position: number, callback?: (err?: Error) => void): void
设置音乐文件音频文件的播放位置
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| position | number | 播放位置(ms) | 是 | |
| callback | function | 结果回调 | 否 | () =>{} |
adjustAudioMixingVolume(volume: number, callback?: (err?: Error) => void): void
设置音乐文件音量
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| volume | number:1-100 | 目标音量 | 是 | |
| callback | function | 结果回调 | 否 | () =>{} |
getVideoTrack(): mediaStreamTrack
获取当前流中的视频轨道
返回值
视频轨道
注意
1.mediaStreamTrack 为浏览器原生api。
getAudioTrack(): mediaStreamTrack
获取当前流中的音频轨道
返回值
音频轨道
注意
1.mediaStreamTrack 为浏览器原生api。
mirror(enabled: boolean): void
打开/关闭镜像(与原方向相反)
VRTC.Logger
提供设置 logger 的方法,包括设置日志输出等级、开启/关闭日志上传。
| 属性名 | 值 |
|---|---|
| VERBOSE | -1 |
| DEBUG | 0 |
| TRACE | 1 |
| INFO | 2 |
| WARNING | 3 |
| ERROR | 4 |
| NONE | 5 |
| 返回 | 名称 |
|---|---|
| 无 | setLogLevel |
设置日志输出等级
setLogLevel(level: LogLevel): void
参数
| 参数名 | 类型 | 说明 | 必填 | 默认值 |
|---|---|---|---|---|
| level | LogLevel | 日志等级 | 是 |
注意
1.LogLevel 为 logger 成员常量:VERBOSE ,DEBUG ,TRACE ,INFO ,WARNING ,ERROR ,NONE
2.默认输出等级为 WARNING 。
3.LogLevel 中各个等级日志输出量递减。