Class: Stream

Stream


new Stream()

请使用 WebRTC2#createStream 创建本地音视频流。

Methods


<static> destroy()

获取音视频流 ID

Returns:

number


<static> stream类构造函数(options)

Parameters:
Name Type Description
options Object

配置参数

Properties
Name Type Argument Description
audio String <optional>

是否从麦克风采集音频

uid String <optional>

用户uid

microphoneId String <optional>

麦克风设备 deviceId,通过 getMicrophones() 获取

video Object <optional>

是否从摄像头采集视频

cameraId String <optional>

摄像头设备 deviceId,通过 getCameras() 获取

screen Object <optional>

是否采集屏幕共享流。

audioProcessing Object <optional>

是否开启/关闭音频处理接口(3A接口)

注意:

音频处理接口取决于浏览器支持情况。目前Safari不支持AGC及ANS设置。

  • AEC: 是否开启声学回声消除。默认为 true。
  • true:开启声学回声消除。
  • false:关闭声学回声消除。
  • AGC: 是否开启自动增益控制。默认为 true。
  • true:开启自动增益控制。
  • false:关闭自动增益控制。
  • ANS: 是否开启自动噪声抑制。默认为 true。
  • true:开启自动噪声抑制。
  • false:关闭自动噪声抑制。
sourceId Object <optional>

屏幕共享的数据源Id(electron用户可以自己获取)

audioSource MeidaTrack <optional>

自定义的音频的track

videoSource MeidaTrack <optional>

自定义的视频的track

Returns:
Type
Stream

adjustAudioMixingVolume()

调节伴奏音量

设置云端音乐的播放音量,不影响麦克风采集到的声音。

示例
   const volume = 100
   localStream.adjustAudioMixingVolume(volume).then(res=>{
  console.log('设置伴音的音量成功')
}).catch(err=>{
  console.error('设置伴音的音量失败: ', err)
})
  • 参数volume对象说明
参数名 类型 说明
volume Number 必须,设置的音量,取值0-255
Returns:
Type
Promise

cleanMediaRecording(options)

清除录制的音视频

Parameters:
Name Type Description
options Object

参数对象

Properties
Name Type Description
recordId String

录制id,可以通过listMediaRecording接口获取

Returns:
Type
Promise

close(options)

关闭音视频输入设备,如麦克风、摄像头、屏幕共享,并且停止发布

Parameters:
Name Type Description
options Object

配置对象。

Properties
Name Type Description
type String

媒体设备类型。可设置为:

  • audio:音频设备,例如麦克风。
  • video:视频设备,例如摄像头。
  • screen:屏幕共享,即关闭屏幕共享。
Returns:
Type
Promise

destroy()

销毁实例

Parameters:
Type Description
Void

downloadMediaRecording(param, options)

下载录制的音视频

Parameters:
Name Type Description
param Object

参数对象

options Object

参数对象

Properties
Name Type Description
recordId String

录制id,可以通过listMediaRecording接口获取

Returns:
Type
Promise

getAudioLevel()

当前从麦克风中采集的音量

Returns:
Type
volume

getAudioMixingCurrentPosition()

获取伴奏播放进度
获取云端音乐的播放进度,单位是s,即从头开始播放了多少秒,可以供用户实现云端音乐的播放进度条。
示例

const audioFilePlayedTime = localStream.getAudioMixingCurrentPosition()

audioFilePlayedTime(类型是Object)返回值,说明如下:

audioFilePlayedTime属性 类型 说明
playedTime Number 音乐文件已经播放了多久,单位是s
Returns:
Type
Object

getAudioMixingDuration()

获取伴奏时长
获取云端音乐文件的时长,单位是s。

示例
const audioFileTotalTime = localStream.getAudioMixingDuration()
  • audioFileTotalTime(类型是Object)返回值,说明如下:
audioFileTotalTime属性 类型 说明
totalTime Number 音乐文件总时长,单位是s
Returns:
Type
Object

getAudioStream()

获取音频流 MediaStream 对象,可用于自定义音频渲染。
您可以自行渲染这个对象,例如将 audio dom 节点的 srcObject 属性设为该对象。
注意:使用自定义音频渲染功能时,应该在播放远端流时,关闭默认的音频渲染。

Returns:
Type
MediaStream
Example
remoteStream.play({
  audio: false,
  video: true
});
const audioStream = remoteStream.getAudioStream();
// audioDom为自行创建的DOM节点
audioDom.srcObject = audioStream;

hasAudio()

当前Stream是否有音频

Returns:
Type
Boolean

hasVideo()

获取视频 flag

Returns:
Type
Boolean

init()

初始化音视频流对象

Returns:
Type
Promise

isPlaying(type)

返回音视频流当前是否在播放状态

Parameters:
Name Type Description
type string

查看的媒体类型: audio/video

Returns:
Type
Promise

listMediaRecording()

枚举录制的音视频

Returns:
Type
Array

muteAudio()

禁用音频轨道

Returns:
Type
Promise

muteScreen()

禁用辅流轨道。
调用此方法之后,屏幕共享会被暂停。

Returns:
Type
Promise

muteVideo()

禁用视频轨道
注意:自 V4.1.0 版本起,muteVideo 和 unmuteVideo 接口不再对屏幕共享有效,应使用 muteScreen 和 unmuteScreen 暂停或重新启动屏幕共享。

Returns:
Type
Promise

open(options)

打开音视频输入设备,如麦克风、摄像头、屏幕共享,并且发布设备对应的音视频流。

Parameters:
Name Type Description
options Object

配置对象。

Properties
Name Type Description
type String

媒体设备类型。可设置为:

  • audio:音频设备,例如麦克风。
  • video:视频设备,例如摄像头。
  • screen:屏幕共享,即启动屏幕共享。
deviceId String

指定要开启的设备 ID。您可以通过 getDevices 查看设备列表、获取设备 ID。

sourceId String

Electron 屏幕共享的数据源 ID,您可以自行获取。

Returns:
Type
Promise

pauseAudioMixing()

暂停播放伴奏
开启云端音乐文件和本地麦克风声音混合后,暂停远端音乐的播放,麦克风采集到的声音不变。

localStream.pauseAudioMixing().then(res=>{
   console.log('暂停伴音成功')
}).catch(err=>{
   console.error('暂停伴音失败: ', err)
})

err(格式是Object)伴音错误码,属性如下:

err属性名 类型 说明
name string 错误名称
code number 错误码
desc string 错误描述

pauseAudioMixing接口可能出现的错误码

name code desc
'AudioMixingUnsupport' 63102 '该浏览器不支持伴音功能'
'pausedMusicalAccompaniment' 63104 '已经暂停伴音'
'UnstartMusicalAccompaniment' 63105 '当前没有伴音'
Returns:
Type
Promise

play(view [, options])

播放音视频流。

Parameters:
Name Type Argument Description
view div

div标签,播放画面的dom容器节点。

options object <optional>

播放的音视频选项。

Properties
Name Type Argument Description
audio boolean <optional>

是否播放音频流。默认播放本地音频流,不播放远端音频流。

video boolean <optional>

是否播放视频流。默认播放视频流。

screen boolean <optional>

是否播放屏幕共享。默认播放。

Returns:
Type
Promise

playMediaRecording(options)

播放视频录制

Parameters:
Name Type Description
options Object

参数对象

Properties
Name Type Description
recordId String

录制id,可以通过listMediaRecording接口获取

view Element

音频或者视频画面待渲染的DOM节点,如div、span等非流媒体节点

Returns:
Type
Promise

resumeAudioMixing()

恢复播放伴奏

恢复本地语音伴音,伴音文件将从暂停时位置开始播放。

localStream.resumeAudioMixing().then(res=>{
   console.log('恢复伴音成功')
}).catch(err=>{
   console.error('恢复伴音失败: ', err)
})

err(格式是Object)伴音错误码,属性如下:

err属性名 类型 说明
name string 错误名称
code number 错误码
desc string 错误描述

resumeAudioMixing接口可能出现的错误码

name code desc
'AudioMixingUnsupport' 63102 '该浏览器不支持伴音功能'
'UnpauseMusicalAccompaniment' 63103 '已经暂停伴音'
'UnstartMusicalAccompaniment' 63105 '当前没有伴音'
Returns:
Type
Promise

setAudioMixingPosition(playStartTime)

设置伴奏音频文件的播放位置。可以根据实际情况播放文件,而不是非得从头到尾播放一个文件,单位为ms

设置云端音乐的播放位置,即直接跳到设置的时间点开始播放,可以供用户实现音乐拖动、快进、快退等功能。

const playStartTime = 10
localStream.setAudioMixingPosition(playStartTime).then(res=>{
console.log('设置伴音播放的位置成功')
}).catch(err=>{
console.error('设置伴音播放的位置失败: ', err)
})
参数playStartTime对象说明
参数名 类型 说明
playStartTime Number 必须,设置的开始播放时间,取值0-音乐文件的总时长
Parameters:
Name Type Description
playStartTime Number

伴音播放的位置

Returns:
Type
Promise

setAudioOutput(deviceId)

可以在麦克风和扬声器之间切换。在播放订阅流之前或之后都可以调用该方法。
目前只有 Chrome 49 以上的浏览器支持该方法。

Parameters:
Name Type Description
deviceId

设备的 ID,可以通过 getDevices 方法获取。获取的 ID 为 ASCII 字符,字符串长度大于 0 小于 256 字节。

Returns:
Type
Promise

setAudioProfile(profile)

设置音频属性

Parameters:
Name Type Description
profile String

要设置的音频的属性: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)

Returns:
Type
Void

setAudioVolume(volume)

设置音频播放的音量。

Parameters:
Name Type Description
volume Number

要设置的远端音频的播放音量,范围为 0(静音)到 100(声音最大)

Returns:
Type
Promise

setCanvasWatermarkConfigs(options)

设置画布

Parameters:
Name Type Description
options NERtcCanvasWatermarkConfig

水印参数对象

Properties
Name Type Description
textWatermarks Array.<NERtcTextWatermarkConfig>

文字水印,最多支持10个

timestampWatermarks NERtcTimestampWatermarkConfig

时间戳水印

imageWatermarks Array.<NERtcImageWatermarkConfig>

图片水印,最多支持4个

Returns:

,用于下载等操作

Type
Promise

setCaptureVolume(volume)

设置麦克风采集的音量。

Parameters:
Name Type Description
volume Number

要设置的麦克风采集音量。,范围为 0(静音)到 100(声音最大)

Returns:
Type
Void

setLocalRenderMode(options)

设置本端视频画面大小。

Parameters:
Name Type Description
options Object

配置对象。

Properties
Name Type Argument Description
width Number

宽度。

height Number

高度。

cut Boolean

是否裁剪。

mediaType String <optional>

指定设置的对象,即调整的是摄像头画面还是屏幕共享画面。默认为同时设置。
可设置为:

  • video:设置本端摄像头画面。
  • screen:设置本端屏幕共享画面。
Returns:
Type
Void

setRemoteRenderMode(options)

设置远端视频画面大小。

Parameters:
Name Type Description
options Object

配置对象

Properties
Name Type Argument Description
width Number

宽度

height Number

高度

cut Boolean

是否裁剪

mediaType String <optional>

指定设置的对象,即调整的是摄像头画面还是屏幕共享画面。默认为同时设置。
可设置为:

  • video:设置远端摄像头画面。
  • screen:设置远端屏幕共享画面。
Returns:
Type
Void

setScreenProfile(options)

设置屏幕共享属性。

Parameters:
Name Type Description
options Object

配置参数

Properties
Name Type Argument Description
resolution String <optional>

设置本端屏幕共享分辨率:WebRTC2.VIDEO_QUALITY_480p、WebRTC2.VIDEO_QUALITY_720p、WebRTC2.VIDEO_QUALITY_1080p

frameRate String <optional>

设置本端视频帧率:WebRTC2.CHAT_VIDEO_FRAME_RATE_5、WebRTC2.CHAT_VIDEO_FRAME_RATE_10、WebRTC2.CHAT_VIDEO_FRAME_RATE_15、WebRTC2.CHAT_VIDEO_FRAME_RATE_20、WebRTC2.CHAT_VIDEO_FRAME_RATE_25

Returns:
Type
Void

setSubscribeConfig(options)

设置视频订阅的参数。

Parameters:
Name Type Description
options Object

配置参数。

Properties
Name Type Argument Description
audio Boolean <optional>

是否订阅音频流。

video Boolean <optional>

是否订阅视频流。

screen Boolean <optional>

是否订阅屏幕共享流(辅流)。默认为 true,即订阅辅流形式的屏幕共享。

highOrLow Number <optional>

0 表示小流,1 表示大流。

Returns:
Type
Null

setVideoProfile(options)

设置视频属性。

Parameters:
Name Type Description
options Object

配置参数

Properties
Name Type Argument Description
resolution Number <optional>

设置本端视频分辨率:WebRTC2.VIDEO_QUALITY_180p、WebRTC2.VIDEO_QUALITY_480p、WebRTC2.VIDEO_QUALITY_720p、WebRTC2.VIDEO_QUALITY_1080p

frameRate Number <optional>

设置本端视频帧率:WebRTC2.CHAT_VIDEO_FRAME_RATE_5、WebRTC2.CHAT_VIDEO_FRAME_RATE_10、WebRTC2.CHAT_VIDEO_FRAME_RATE_15、WebRTC2.CHAT_VIDEO_FRAME_RATE_20、WebRTC2.CHAT_VIDEO_FRAME_RATE_25

Returns:
Type
Null

startAudioMixing(options)

云端音乐文件和本地麦克风声音混合;需要在启动麦克风之后使用

注意事项

Web 端 NERTC SDK 在 H5 平台不支持以下伴音相关 API:

如果您调用了这些 API,SDK 会报错 BROWSER_NOT_SUPPORT

实现方法

参考如下步骤,在你的项目中实现播放云端混音文件:

  1. 在加入频道成功后调用 startAudioMixing 开始混音。
  2. 根据 pauseAudioMixingresumeAudioMixing 等操作 进行 暂停、恢复、控制音量、seek 等功能。
  3. 在离开频道前调用 stopAudioMixing 结束混音。
示例代码
   const audioMixingEndHandler = function(event){
  console.warn('伴音结束: ', event)
}

   const options = {
  audioFilePath: '"someaudio.mp3"',
  loopback: false,
  replace: false,
  cycle: 0,
  playStartTime: 0,
  volume: 200,
  auidoMixingEnd: audioMixingEndHandler
}
   localStream.startAudioMixing(options).then(res=>{
  console.log('伴音成功')
}).catch(err=>{
  console.error('伴音失败: ', err)
})
  • 参数options对象说明
参数名 类型 说明
audioFilePath String 必须,云端音频文件路径
loopback Boolean 可选,是否循环播放,缺省为false,即播放一次就结束(这里如果是false,则cycle参数不生效)
replace Boolean 可选,是否替换麦克风采集的音频数据,缺省为false
cycle number 可选,表示循环播放的次数,需要loopback参数置为true(如果想无限循环,cycle设置为0,loopback设置为true),缺省为0,如果loopback为true,表示无限循环,如果loopback为false,该参数不生效
playStartTime number 可选,设置音频文件开始播放的位置,单位为 s。缺省设为 0,即从头开始播放
volume number 可选,设置音频文件的音量,范围(0-255)
auidoMixingEnd Function 可选,伴音文件播放完成时的通知反馈

err(格式是Object)伴音错误码,属性如下:

err属性名 类型 说明
name string 错误名称
code number 错误码
desc string 错误描述

startAudioMixing接口可能出现的错误码:

name code desc
'AudioMixingUnsupport' 63102 '该浏览器不支持伴音功能'
'AudioFileDownloadError' 63101 '伴音文件加载失败'
'AudioStreamFetchError' 63002 '获取麦克风音频流失败'
'AudioDisabled' 63007 '音频功能已被禁用'
Parameters:
Name Type Description
options Object

参数对象

Properties
Name Type Description
audioFilePath String

必须,云端音频文件路径

loopback String

可选,是否循环播放,缺省为false,表示播放一次就结束(这里如果是false,则cycle参数不生效)

replace String

可选,是否替换麦克风采集的音频数据,缺省为false

cycle Number

可选,循环的次数,需要loopback参数置为true(如果想无限循环,cycle设置为0,loopback设置为true),缺省为0,如果loopback为true,表示无限循环,如果loopback为false,该参数不生效

playStartTime Number

可选,设置音频文件开始播放的位置,单位为 s。缺省设为 0,即从头开始播放

volume function

可选,设置伴音文件的音量

auidoMixingEnd function

可选,伴音文件播放完成的通知反馈(正常停止伴音或关掉通话获取其他原因停止伴音不会触发)

Returns:
Type
Promise

startMediaRecording(param)

开启单人视频录制。

Parameters:
Name Type Description
param Object

参数对象。

Properties
Name Type Description
type String

指定录制的音视频流类型。可设置为:

  • audio:仅录制音频流。
  • video:同时录制音频流和摄像头视频流。
  • screen:同时录制音频流和屏幕共享流(辅流)。
reset Boolean

如果之前的录制视频未下载,是否重置,默认false

Returns:

包含 recordId 值,用于下载等操作。

Type
Promise

stop()

停止播放音视频流

Returns:
Type
Void

stopAudioMixing()

停止播放伴奏
停止远端音乐文件的播放,麦克风采集的声音不变。

示例
localStream.stopAudioMixing().then(res=>{
console.log('停止伴音成功')
}).catch(err=>{
console.error('停止伴音失败: ', err)
})

err(格式是Object)伴音错误码,属性如下:

err属性名 类型 说明
name string 错误名称
code number 错误码
desc string 错误描述

stopAudioMixing接口可能出现的错误码

name code desc
'AudioMixingUnsupport' 63102 '该浏览器不支持伴音功能'
'UnstartMusicalAccompaniment' 63105 '当前没有伴音'
Returns:
Type
Promise

stopMediaRecording(options)

结束视频录制

Parameters:
Name Type Description
options Object

参数对象

Properties
Name Type Description
recordId String

录制id,可以通过listMediaRecording接口获取

Returns:
Type
Promise

switchDevice(type, deviceId)

切换媒体输入设备,已经发布的流,切换后不用重新发流

Parameters:
Name Type Description
type String

设备的类型,"audio": 音频输入设备,"video": 视频输入设备

deviceId String

设备的 ID,可以通过 getDevices 方法获取。获取的 ID 为 ASCII 字符,字符串长度大于 0 小于 256 字节。

Returns:
Type
Promise

takeSnapshot(options)

截取指定用户的视频画面,文件保存在浏览器默认路径下。

Parameters:
Name Type Description
options Object

配置参数

Properties
Name Type Argument Description
name String

截取的图片的保存名称(默认是uid-1的格式名称)

mediaType String <optional>

指定截取的视频流类型,即截取的是摄像头画面还是屏幕共享画面。默认为同时截取。
可设置为:

  • video:截取摄像头画面。
  • screen:截取屏幕共享画面。
Returns:
Type
Promise

unmuteAudio()

启用音频轨道

Returns:
Type
Promise

unmuteScreen()

重新启用辅流轨道。
调用此方法之后,屏幕共享会被重新启动。

Returns:
Type
Promise

unmuteVideo()

启用视频轨道。
注意:自 V4.1.0 版本起,muteVideo 和 unmuteVideo 接口不再对屏幕共享有效,应使用 muteScreen 和 unmuteScreen 暂停或重新启动屏幕共享。

Returns:
Type
Promise