添加音视频轨道
该方法将音视频轨道添加到 Stream。添加成功后,远端会触发 Client.on("stream-updated")
回调。
可以通过 mediaStream
方法获取音视频轨道。
调节音乐文件音量
音乐文件音量范围为 [0,100]。默认 100 为原始文件音量。
关闭音视频流
该方法关闭当前的流。调用该方法会取消摄像头和麦克风的访问权限。
true
:禁用音频轨道成功。false
:禁用音频轨道失败,可能的原因包括没有音频、流未初始化、音频轨道已经禁用等。true
:禁用视频轨道成功。false
:禁用视频轨道失败,可能的原因包括没有视频、流未初始化、视频轨道已经禁用等。启用音频轨道
DEPRECATED
自 2.5.1 起废弃,请使用 unmuteAudio。
该方法启用音频轨道。在 createStream 时将 audio
设置为 true
才可使用该方法。
音频轨道默认为开启状态。如果你调用了 disableAudio,可调用本方法启用音频。
true
:启用音频轨道成功。false
:启用音频轨道失败,可能的原因包括没有音频、流未初始化、音频轨道已经启用等。启用视频轨道
DEPRECATED
自 2.5.1 起废弃,请使用 unmuteVideo。
该方法启用视频轨道。在 createStream 时将 video
设置为 true
才可使用该方法。
视频轨道默认为开启状态。如果你调用了 disableVideo,可调用本方法启用视频。
true
:启用视频轨道成功。false
:启用视频轨道失败,可能的原因包括没有视频、流未初始化、视频轨道已经启用等。获取当前音量
该方法获取的是当前时刻的音量。如果你想表示本地或远端音量的变化,我们建议你使用 setTimeout
或者 setInterval
方法实时获取。
获取的音量值,取值范围 [0,1]。
获取音乐文件播放进度
该方法获取音乐文件播放进度,单位为 ms。
方法调用成功返回音乐文件播放进度。
获取音乐文件时长
方法调用成功返回音乐文件时长(ms)。
获取音频轨道
该方法获取音视频流中的音频轨道,可与 replaceTrack 搭配使用。
如果音视频流中包含音频轨道,会以 MediaStreamTrack 对象返回。
获取所有音效文件播放音量
返回一个包含 soundId
和 volume
的数组。每个 soundId
对应一个 volume
。
soundId
为音效的 ID,正整数,取值范围为 [1,10000]。volume
为音量值,整数,范围为 [0,100]。获取音视频流 ID
该方法可以获取音视频流 ID。
获取连接数据
该方法获取音视频流的连接数据。
Note
部分统计数据可能存在延时。
回调包含音视频流的连接统计数据:
获取视频轨道
该方法获取音视频流中的视频轨道,可与 replaceTrack 搭配使用。
如果音视频流中包含视频轨道,会以 MediaStreamTrack 对象返回。
获取音频 flag
该方法仅对本地流有效。
获取视频 flag
该方法仅对本地流有效。
初始化音视频对象
该方法初始化本地创建的音视频流对象。
如果调用失败,错误信息请参考 getUserMedia 异常。
部分错误信息可能会在调用失败的回调函数中出现,例如:{type: "error", msg: "NotAllowedError", info: "Permission denied"}
。
msg
字段可能出现以下值:
方法调用成功时执行的回调函数
方法调用失败时执行的回调函数
返回音视频流当前是否在播放状态
true
:该音视频流正在渲染或播放。false
:该音视频流没有渲染。禁用音频轨道
该方法禁用音频轨道。
Client.on("mute-audio")
回调。Note
对于本地流,在 createStream 时将 audio
设置为 true
才可使用该方法。
true
:禁用音频轨道成功。false
:禁用音频轨道失败,可能的原因包括没有音频、流未初始化、音频轨道已经禁用等。禁用视频轨道
该方法禁用视频轨道。
Client.on("mute-video")
回调。Note
对于本地创建的流,在 createStream 时将 video
设置为 true
才可使用该方法。
true
:禁用视频轨道成功。false
:禁用视频轨道失败,可能的原因包括没有视频、流未初始化、视频轨道已经禁用等。该回调通知应用已获取本地摄像头/麦克风使用权限。
该回调通知应用已禁止本地摄像头/麦克风使用权限。
该回调通知应用屏幕共享已停止。
该回调通知视频轨道已停止。
停止的原因可能是设备拔出、取消授权等。详见 MediaStreamTrack.onended。
该回调通知音频轨道已停止。
停止的原因可能是设备拔出、取消授权等。详见 MediaStreamTrack.onended。
该回调通知混音音乐文件播放已开始。
Note
该事件会在音乐文件加载完成并开始播放以及音乐文件暂停后恢复播放这两种情况下被触发。
该回调通知混音音乐文件播放完毕。
该回调通知音视频播放状态变化。
在 Windows 上,频繁的 DOM 操作可能会导致 Chrome 播放器被浏览器暂停。为了避免这种情况,需要侦听该回调,并尝试调用 Stream.resume 恢复播放。
该回调有以下属性。
暂停播放所有音效文件
暂停播放音乐文件
暂停播放指定音效文件
指定音效的 ID。每个音效均有唯一的 ID。正整数,取值范围为 [1,10000]。
HTML element ID。ASCII 字符集中的字母和数字,以及 “_”、“-"、".",字符串长度大于 0 小于 256 字节。
用于流播放的选项
设置视频播放时的显示模式,有 "cover"
和 "contain"
可以选择:
object-fit
的 cover
选项。contain
选项。对于本地流来说,播放视频流默认使用 cover 模式,屏幕共享默认使用 contain 模式;对于远端流来说,因为不知道流的类型,默认使用 cover 模式。
设置播放的流是否静音
muted
通常用于规避浏览器的自动播放策略。
一般情况下,播放带声音的视频时,浏览器会要求该行为由手势触发。
如果你不希望以手势触发,也可以选择将 muted
设为 true,这样可以绕过自动播放策略,详见处理浏览器的自动播放策略。
播放是否成功的回调
null
播放指定音效文件
与 startAudioMixing 方法的区别是,该方法更适合播放较小的音效文件,且支持同时播放多个音效。
Note
音效设置。
指定音效文件循环播放的次数
Note
仅支持 Chrome 65 及以上。
正整数,取值范围为 [1,10000]。默认值为 1,即播放 1 次。
指定在线音效文件的绝对路径。
ASCII 字符,字符串长度大于 0 小于 256 字节。
支持以下音频格式:MP3,AAC 以及浏览器支持的其他音频格式。
指定音效的 ID。每个音效均有唯一的 ID。
正整数,取值范围为 [1,10000]。如果你已通过 preloadEffect 将音效加载至内存,确保这里的 soundID
与 preloadEffect 设置的 soundID
相同。
方法的回调:
Note
音效播放的其他方法的回调参数与此相同,使用 Node.js 回调风格。
预加载指定音效文件
该方法缓存音效文件,以供快速播放。为保证通信畅通,请注意控制预加载音效文件的大小。
指定音效的 ID。每个音效均有唯一的 ID。正整数,取值范围为 [1,10000]。
指定在线音效文件的绝对路径。支持以下音频格式:MP3,AAC 以及浏览器支持的其他音频格式。
移除音视频轨道
该方法将音视频轨道从 Stream 中移除。移除成功后,远端会触发 Client.on("stream-updated")
回调。
Note
可以通过 mediaStream
方法获取音视频轨道。
替换音视频轨道
该方法可以替换本地音视频流中的音视频轨道。
本地流发布后,可以通过该方法切换摄像头或者切换麦克风和播放的 mp3 等。
新的音视频轨道可以通过 getUserMedia
,MediaElement.captureStream
等方法获取。
被替换的音视频轨道会被强制停止。
Note
新的音视频轨道。
方法调用成功的回调。
方法调用失败的回调。常见的错误如下:
"INVALID_TRACK"
和 "INVALID_TRACK_TYPE"
: 新传入的 MediaStreamTrack 对象无法识别,请检查传入对象。"MEDIASTREAM_TRACK_NOT_FOUND"
: 找不到替换对象,比如在纯音频流上尝试替换一个视频的 Track。"NO_STREAM_FOUND"
: 找不到本地流对象,无法替换。恢复播放所有音效文件
恢复播放音乐文件
混音音乐文件恢复播放后,本地会触发 Stream.on("audioMixingPlayed")
回调。
恢复播放指定音效文件
指定音效的 ID。每个音效均有唯一的 ID。正整数,取值范围为 [1,10000]。
设置音乐文件音频文件的播放位置
该方法可以设置音频文件的播放位置,这样你可以根据实际情况播放文件,而不是非得从头到尾播放一个文件。
整数,进度条位置,单位为 ms。取值范围为 [0,100000000]。
设置音频输出
该方法可以在语音场景下设置订阅流的音频输出设备,在通话时切换扬声器。在播放订阅流之前或之后都可以调用该方法。
Note
目前只有 Chrome 49 以上的浏览器支持该方法。
设备 ID,可以通过 getDevices 获得,设备的 kind 属性应该为 "audiooutput"
。获取的 ID 为 ASCII 字符,字符串长度大于 0 小于 256 字节。
设置成功的回调
设置失败的回调
设置音频属性
该方法设置本地流的音频属性,为可选项,且需在 Stream.init 之前调用。默认值为 "music_standard"
。
Note
由于各浏览器的限制,部分浏览器对设置的音频属性不一定能全部适配:
AEC
、AGC
和 ANS
选项会自动关闭。音频属性,包含以下选项:
"speech_low_quality"
: 16 kHz 采样率,单声道,编码码率约 24 Kbps"speech_standard"
: 32 kHz 采样率,单声道,编码码率约 24 Kbps"music_standard"
: 48 kHz 采样率,单声道,编码码率约 40 Kbps"standard_stereo"
: 48 kHz 采样率,双声道,编码码率约 64 Kbps"high_quality"
: 48 kHz 采样率,单声道, 编码码率约 128 Kbps"high_quality_stereo"
: 48 kHz 采样率,双声道,编码码率约 192 Kbps调节音量大小
该方法可以调节订阅流的音量大小。
音量,范围为 0(静音) 到 100(声音最大)。默认值为 100。
开启本地美颜功能,并设置美颜效果选项。
自从
3.0.0
该 API 为异步方法,需使用 Promise 或 async/await 关键字进行调用。
美颜处理属于实时计算密集型操作,虽然基于硬件加速机制实现,但处理过程仍然会有较大的 GPU 和 CPU 开销。 美颜功能的开启会对低端机的性能造成影响,以至于无法达到预期的要求。对于低端机,视频编码设置为 360p 30 fps,720p 15 fps 或更高分辨率时, 我们不建议开启美颜。
该方法支持以下浏览器:
Note
replaceTrack
或 addTrack
完成之后调用 setBeautyEffectOptions
。Client.on("stream-published")
回调中调用本方法。是否开启美颜功能。
true
:开启false
:(默认)关闭美颜选项。
亮度明暗对比度,与 lighteningLevel
参数搭配使用。
取值范围为 0、1 或 2。默认值为 1(原始对比度)。取值越大,明暗对比越强烈。
亮度
取值范围为 [0.0,1.0],其中 0.0 表示原始亮度,默认值为 0.7。可用来实现美白等视觉效果。
红色度
取值范围为 [0.0,1.0],其中 0.0 表示原始红色度,默认值为 0.1。可用来实现红润肤色等视觉效果。
平滑度
取值范围为 [0.0,1.0],其中 0.0 表示原始平滑等级,默认值为 0.5。可用来实现祛痘、磨皮等视觉效果。
一个 promise 对象,在该方法调用成功后 resolve。
设置所有音效文件播放音量
音效音量。整数,范围为 [0,100]。默认 100 为原始文件音量。
屏幕属性,下表列出可设置的屏幕属性。
Screen Profile Definition
屏幕属性 | 分辨率 | 帧率 |
---|---|---|
480p_1 | 640 × 480 | 5 |
480p_2 | 640 × 480 | 30 |
720p_1 | 1280 × 720 | 5 |
720p_2 | 1280 × 720 | 30 |
1080p_1 | 1920 × 1080 | 5 |
1080p_2 | 1920 × 1080 | 30 |
Note:
由于设备和浏览器的限制,部分浏览器对设置的屏幕属性不一定能全部适配。这种情况下浏览器会自动调整分辨率,计费也将按照实际分辨率计算。
自定义视频编码配置
该方法可以根据需要灵活设置本地流的视频分辨率、帧率和码率,支持动态修改。
Note
audioSource
和 videoSource
属性创建的音视频流),该方法设置的分辨率和帧率都不生效。设置视频属性
该方法设置本地流的视频编码属性。每个属性对应一套视频参数,如分辨率、帧率、码率等。
该方法一般在 Stream.init 之前调用,从 2.7.0 开始,也可在 Stream.init 成功后调用本方法动态修改视频属性。
Note
audioSource
和 videoSource
属性创建的音视频流),该方法设置的分辨率和帧率都不生效。视频属性,默认值为 "480p_1"
。下表列出可设置的视频属性。
视频分辨率表格
视频属性 | 分辨率(宽×高) | 帧率(fps) | 码率(Kbps) | Chrome | Firefox | Safari |
---|---|---|---|---|---|---|
120p_1 | 160 × 120 | 15 | 65 | ✓ | ||
120p_3 | 120 × 120 | 15 | 50 | ✓ | ||
180p_1 | 320 × 180 | 15 | 140 | ✓ | ||
180p_3 | 180 × 180 | 15 | 100 | ✓ | ||
180p_4 | 240 × 180 | 15 | 120 | ✓ | ||
240p_1 | 320 × 240 | 15 | 200 | ✓ | ||
240p_3 | 240 × 240 | 15 | 140 | ✓ | ||
240p_4 | 424 × 240 | 15 | 220 | ✓ | ||
360p_1 | 640 × 360 | 15 | 400 | ✓ | ||
360p_3 | 360 × 360 | 15 | 260 | ✓ | ||
360p_4 | 640 × 360 | 30 | 600 | ✓ | ||
360p_6 | 360 × 360 | 30 | 400 | ✓ | ||
360p_7 | 480 × 360 | 15 | 320 | ✓ | ||
360p_8 | 480 × 360 | 30 | 490 | ✓ | ||
360p_9 | 640 × 360 | 15 | 800 | ✓ | ||
360p_10 | 640 × 360 | 24 | 800 | ✓ | ||
360p_11 | 640 × 360 | 24 | 1000 | ✓ | ||
480p_1 | 640 × 480 | 15 | 500 | ✓ | ✓ | ✓ |
480p_2 | 640 × 480 | 30 | 1000 | ✓ | ✓ | ✓ |
480p_3 | 480 × 480 | 15 | 400 | ✓ | ✓ | ✓ |
480p_4 | 640 × 480 | 30 | 750 | ✓ | ✓ | ✓ |
480p_6 | 480 × 480 | 30 | 600 | ✓ | ✓ | ✓ |
480p_8 | 848 × 480 | 15 | 610 | ✓ | ✓ | ✓ |
480p_9 | 848 × 480 | 30 | 930 | ✓ | ✓ | ✓ |
480p_10 | 640 × 480 | 10 | 400 | ✓ | ✓ | ✓ |
720p_1 | 1280 × 720 | 15 | 1130 | ✓ | ✓ | ✓ |
720p_2 | 1280 × 720 | 30 | 2000 | ✓ | ✓ | ✓ |
720p_3 | 1280 × 720 | 30 | 1710 | ✓ | ✓ | ✓ |
720p_5 | 960 × 720 | 15 | 910 | ✓ | ✓ | ✓ |
720p_6 | 960 × 720 | 30 | 1380 | ✓ | ✓ | ✓ |
1080p_1 | 1920 × 1080 | 15 | 2080 | ✓ | ✓ | |
1080p_2 | 1920 × 1080 | 30 | 3000 | ✓ | ✓ | |
1080p_3 | 1920 × 1080 | 30 | 3150 | ✓ | ✓ | |
1080p_5 | 1920 × 1080 | 60 | 4780 | ✓ | ✓ | |
1440p_1 | 2560 × 1440 | 30 | 4850 | ✓ | ✓ | |
1440p_2 | 2560 × 1440 | 60 | 7350 | ✓ | ✓ | |
4K_1 | 3840 × 2160 | 30 | 8910 | ✓ | ✓ | |
4K_3 | 3840 × 2160 | 60 | 13500 | ✓ | ✓ |
Note:
视频能否达到 1080p 以上的分辨率取决于设备的性能,在性能配备较低的设备上有可能无法实现。如果采用 720p 分辨率而设备性能跟不上,则有可能出现帧率过低的情况。
随着浏览器的升级,上表中列出的浏览器的分辨率支持可能并不完整,具体支持以实际情况为准。
部分浏览器的某些版本可能不完全支持上表中列出的分辨率,在这种情况下建议使用主流分辨率(即上表中 _1
后缀的分辨率)。
Safari 浏览器不支持自定义视频帧率(默认为 30 fps)。如果你设置的视频帧率不是 30 fps,Safari 浏览器可能会修改或者拒绝你的设置。
由于设备和浏览器的限制,部分浏览器对设置的 Video Profile 不一定能全部适配。这种情况下浏览器会自动调整分辨率,计费也将按照实际分辨率计算。
实时调整播放音效文件音量
指定音效的 ID。每个音效均有唯一的 ID。正整数,取值范围为 [1,10000]。
音效音量。整数,范围为 [0,100]。默认 100 为原始文件音量。
开始播放音乐文件
指定在线音频文件和麦克风采集的音频流进行混音或替换(用音频文件替换麦克风采集的音频流)。
可以通过参数指定音频文件播放的次数和时长。
混音音乐文件开始播放后,本地会触发 Stream.on("audioMixingPlayed")
回调。播放结束后,会触发 Stream.on("audioMixingFinished")
回调。
Note
混音设置。
是否缓存混音文件。
true
:(默认值)将混音文件缓存在内存中,提升下次使用同一文件混音的速度。false
:不缓存混音文件,节省内存。指定音频文件循环播放的次数。
Note
仅支持 Chrome 65 及以上。
正整数,取值范围为 [1,10000]。默认值为 1。
指定需要混音的在线音频文件。
ASCII 字符,字符串长度大于 0 小于 256 字节。
支持以下音频格式: MP3,AAC 以及浏览器支持的其他音频格式。
是否要无限循环播放音频文件
true
:无限循环播放音频文件。请不要和 cycle
同时设置。false
:(默认值)关闭无限循环播放。设置音频文件开始播放的时间位置,单位为 ms。整数,取值范围为 [0,100000000]。
如需从头开始播放,设置为 0 即可。
是否要用音频文件替换本地音频流
true
:音频文件内容将会替换本地录音的音频流false
:(默认值)音频文件内容将会和麦克风采集的音频流进行混音Note
Safari 不支持此设置。
方法的回调:
null:方法调用成功
err:方法调用失败,可能的错误如下:
Note
混音其他方法的回调参数与此相同,使用 Node.js 回调风格。
停止音视频流
调用该方法停止播放 Stream.play 播放的音视频流。
停止播放所有音效文件
停止播放音乐文件
停止播放指定音效文件
指定音效的 ID。每个音效均有唯一的 ID。正整数,取值范围为 [1,10000]。
切换媒体输入设备
该方法可以切换本地流的媒体输入设备:
已经发布的流,切换后不用重新发流。
下列情况无法使用本方法:
Note
部分移动设备上该方法可能不生效。
设备的类型
设备的 ID,可以通过 getDevices 方法获取。获取的 ID 为 ASCII 字符,字符串长度大于 0 小于 256 字节。
切换成功的回调
切换失败的回调
initStream
时指定了音视频流,就不支持切换设备释放指定音效文件
该方法从内存释放某个预加载的音效文件,以节省内存占用。
指定音效的 ID。每个音效均有唯一的 ID。正整数,取值范围为 [1,10000]。
启用音频轨道
该方法启用音频轨道。对本地流启用音频轨道后远端会触发 Client.on("unmute-audio")
回调。
Note
对于本地流,在 createStream 时将 audio
设置为 true
才可使用该方法。
音频轨道默认为开启状态。如果你调用了 muteAudio,可调用本方法启用音频。
true
:启用音频轨道成功。false
:启用音频轨道失败,可能的原因包括没有音频、流未初始化、音频轨道已经启用等。启用视频轨道
该方法启用视频轨道。对本地流启用视频轨道后远端会触发 Client.on("unmute-video")
回调。
Note
对于本地创建的流,在 createStream 时将 video
设置为 true
才可使用该方法。
视频轨道默认为开启状态。如果你调用了 muteVideo,可调用本方法启用视频。
true
:启用视频轨道成功。false
:启用视频轨道失败,可能的原因包括没有视频、流未初始化、视频轨道已经启用等。
Stream 接口提供的方法用于定义音视频流对象的行为,例如流的播放控制、音视频的编码配置等。
你可以通过 createStream 创建 Stream 对象。一个 Stream 对象指通话中发布的本地音视频流或订阅的远端音视频流。
Stream 方法如无特别说明,本地和远端音视频流均可调用。