new Client()
Client对象,通过YunXinMiniappSDK.Client创建
Methods
-
addTasks(options)
-
添加推流任务
Parameters:
Name Type Description options
Object Properties
Name Type Description rtmpTasks
Array 推流任务队列,数组类型
Returns:
- Type
- Promise
Example
//动直播的推流任务,可以设置多个推流任务 let rtmpTasks = [] // taskID 可选字母、数字,下划线,不超过64位 let taskId = 'taskId_1' // 设置推互动直播推流地址,一个推流任务对应一个推流房间 let streamUrl = 'rtmp://xxxxxx-1' // 设置是否进行互动直播录制,请注意与音视频通话录制区分。 let record = true let task1 = { taskId, streamUrl, record, // 整体布局参数 layout: { canvas: { //整体布局宽度 width: 1280, //整体布局高度 height: 720, //整体布局背景色(转为10进制的数,如:#FFFFFF 16进制转为10进制为 16777215) color: 16777215 }, users: [{ uid: 100, //用户id x: 0, // user1 的视频布局x偏移,相对整体布局的左上角(前提是推流发布user1的视频) y: 0, // user1 的视频布局y偏移,相对整体布局的左上角(前提是推流发布user1的视频) width: 640, // user1 的视频布局宽度(前提是推流发布user1的视频) height: 360, //user1 的视频布局高度(前提是推流发布user1的视频) adaption: 1, //自适应,值默认为1,取值:0或者1 zOrder: 1, //图层优先级 pushAudio: true, // 推流是否发布user1 的音频 pushVideo: true // 推流是否发布user1的视频 }, { uid: 200, //用户id x: 0, // user2 的视频布局x偏移,相对整体布局的左上角(前提是推流发布user2的视频) y: 0, // user2 的视频布局y偏移,相对整体布局的左上角(前提是推流发布user2的视频) width: 640, // user2 的视频布局宽度(前提是推流发布user2的视频) height: 360, //user2 的视频布局高度(前提是推流发布user2的视频) adaption: 1, //自适应,值默认为1 zOrder: 2, //图层优先级 pushAudio: true, // 推流是否发布user2 的音频 pushVideo: true // 推流是否发布user2 的视频 }], images: [{ url: "xxxxxx", //设置背景图片 x: 0, // 背景图片x偏移,相对整体布局的左上角 y: 0, // 背景图片y偏移,相对整体布局的左上角 width: 480, // 背景图片宽度 height: 360, //背景图片高度 adaption: 1 //自适应,值默认为1 }] }, //音视频属性的一些设置,可以不配置该内容(即task1不包括config字段) config: { audioParam: { 可以不配置该内容(即config不包括audioParam字段) bitRate: 64, //自定义音频比特率。取值范围为 10~192。语音场景建议64以上,音乐场景建议128。 channels: 2, //音频推流声道数。可以设置为1(mono)或者2(stereo)。默认为2。 codecProfile: 0, //音频编码规格。可以设置为以下值。0: 表示基本音频编码规格(默认), 1: 表示高效音频编码规格 sampleRate:48000, //音频推流采样率。可以设置为以下值: 32000, 44100, 48000(默认) singleVideoNoTrans: false //单视频直推不转码。开启后推流服务器会透传用户的视频编码,不再对视频做转码。 }, } //扩展的推流任务属性, 可以不配置该内容(即task1不包括extraInfo字段) extraInfo: '' } rtmpTasks.push(task1) // 添加推流任务 client.addTasks({rtmpTasks}).then(()=>{ console.log('添加推流任务接口成功') }).catch(error=>{ console.warn('添加推流任务接口失败: ', error) })
-
aiManualInterrupt(uid)
-
一般是加入开启字幕&翻译之后,如果不需要接收某一个人的字幕信息,可以调用该API打断
Parameters:
Name Type Description uid
number 要打断字幕&翻译的目标uid
Returns:
- Type
- Promise
Example
// RTC流程 import YunXinMiniappSDK from 'path/to/NERTC_Miniapp_SDK_v4.4.0.js' client = YunXinMiniappSDK.Client({ debug: true, appkey: '' }) // 开启字幕 client.startAsrCaptions() //打断某一个人的字幕 const uid = 1000 client.aiManualInterrupt(uid).then(=>{ console.log('打断字幕成功: ') }).catch(e=>{ console.error('打断字幕失败: ', e) })
-
dataReporter(pushOrPull, type, data, uid)
-
live-puser和live-liver数据上报接口
Parameters:
Name Type Description pushOrPull
String 表示是推流还是拉流
type
String 表示上报的数据类型
bindstatechange
: live-pusher或者live-player组件的状态变化事件。bindnetstatus
: live-pusher或者live-player组件的网络状态通知。binderror
: ive-pusher组件的渲染错误事件。
data
String 表示要上报的数据
uid
number 如果pushOrPull为pull,uid表示拉制定成员媒体流的uid
Returns:
- Type
- Promise
Example
// RTC流程 import YunXinMiniappSDK from 'path/to/NERTC_Miniapp_SDK_v4.4.0.js' client = YunXinMiniappSDK.Client({ debug: true, appkey: '' }) client.dataReporter('pull', 'bindstatechange', { code: 3005, reason: '' }, uid: 1000)
-
deleteTasks(options)
-
删除推流任务
Parameters:
Name Type Description options
Object Properties
Name Type Description rtmpTasks
Array 推流任务队列,数组类型
Returns:
- Type
- Promise
Example
// 传入需要删除的推流任务的taskId let taskIds = [] taskIds.push('taskId_1') client.deleteTasks({ taskIds }).then(()=>{ console.log('删除推流任务接口调用成功') }).catch(error=>{ console.warn('删除推流任务接口调用失败: ', error) })
-
init()
-
初始化对象
Parameters:
Type Description null Returns:
- Type
- Promise
-
join(joinChannelParam)
-
加入房间
Parameters:
Name Type Description joinChannelParam
Object Properties
Name Type Argument Description channelName
String 房间名称
token
String 在 app 服务器端生成的用于鉴权的 Token
uid
Number | String | BigNumber | null <optional>
用户唯一标识ID。可设置为:
+Number类型
:房间内保证唯一,建议五位数以上,范围不能超过number类型限制
+String类型
: uid超过了number范围,可以以string的方式传入sdk,sdk会当做BigNumber类型(bignumber.js)处理。
+BigNumber格式
: uid超过了number范围,也可以直接传入BigNumber类型(bignumber.js)
+null
: 如果不传入,则SDK自动生成(唯一性不保证)rtmpRecord
Number <optional>
是否开启互动直播录制,0不需要,1需要(默认0)
recordAudio
Number <optional>
是否开启音频实时音录制,0不需要,1需要(默认0)
recordVideo
Number <optional>
是否开启视频实时音录制,0不需要,1需要(默认0)
recordType
String <optional>
录制模式,0混单(产生混合录制文件+单独录制文件) 1只混(只产生混合录制文件) 2只单(只产生单独录制文件)
liveEnable
Number <optional>
是否旁路直播,0:不需要,1:需要
Returns:
- Type
- Promise
-
leave()
-
离开房间
Parameters:
Type Description Void Returns:
- Type
- Promise
-
mute(mediaType)
-
一般是加入房间之后,操作本地是否mute
相关回调:
如果您在加入房间后调用该方法执行mute,调用成功后,房间里面的其他人会触发以下回调:
- mediaType设置为'audio'、undefined,远端触发
mute-audio
回调 - mediaType设置为'video'、undefined,远端触发
mute-video
回调
Parameters:
Name Type Description mediaType
string 要禁止的媒体类型:
video
: 表示禁止视频。audio
: 表示禁止音频。
Returns:
- Type
- Promise
Example
// RTC流程 import YunXinMiniappSDK from 'path/to/NERTC_Miniapp_SDK_v4.4.0.js' client = YunXinMiniappSDK.Client({ debug: true, appkey: '' }) client.mute('audio').then(url=>{ console.log('mute 音频成功: ', url) this.setData({ enableMic: true //设置live-pusher组件的enableMic属性为true }) }).catch(e=>{ console.error('mute 音频失败: ', e) })
- mediaType设置为'audio'、undefined,远端触发
-
off(event)
-
生成client对象后,就可以通过off方法取消监听相关事件
Parameters:
Name Type Description event
string Client反馈的event类型:
error
:通知应用程序发生错误。 该回调中会包含详细的错误码和错误信息role-Changed
: 通知应用程序房间里成员的角色stream-added
: 通知应用程序已添加远端音视频流。 该回调中会包含已添加的远端用户 IDstream-removed
: 通知应用程序已删除远端音视频流。 该回调中会包含已删除的远端用户 IDsyncDone
:通知应用程序发生错误。 该回调中会包含详细的错误码和错误信息mute-audio
:通知应用程序远端用户已停止发送音频流。 该回调中会包含停止发送音频流的用户 IDmute-video
:通知应用程序远端用户已停止发送视频流。 该回调中会包含停止发送视频流的用户 IDunmute-audio
:通知应用程序远端用户已恢复发送音频流。 该回调中会包含恢复发送音频流的用户 IDunmute-video
:通知应用程序远端用户已恢复发送视频流。 该回调中会包含恢复发送视频流的用户 IDclientLeave
:通知应用程序有人离开房间clientJoin
:通知应用程序有人加入房间kicked
:通知应用程序自己被踢出liveRoomClose
:通知应用程序房间被解散open
:通知应用程序socket建立成功disconnect
:通知应用程序音视频socket关闭willreconnect
:通知应用程序信令准备重连reconnected
:通知应用程序信令准备重连sendCommandOverTime
:通知应用程序发送命令超时
Returns:
- Type
- void
Example
client.off('stream-added')
-
on(event, func)
-
生成client对象后,就可以通过on方法监听相关事件
Parameters:
Name Type Description event
string Client反馈的event类型:
error
:通知应用程序发生错误。 该回调中会包含详细的错误码和错误信息role-Changed
: 通知应用程序房间里成员的角色stream-added
: 通知应用程序已添加远端音视频流。 该回调中会包含已添加的远端用户 IDstream-removed
: 通知应用程序已删除远端音视频流。 该回调中会包含已删除的远端用户 IDsyncDone
:通知应用程序发生错误。 该回调中会包含详细的错误码和错误信息mute-audio
:通知应用程序远端用户已停止发送音频流。 该回调中会包含停止发送音频流的用户 IDmute-video
:通知应用程序远端用户已停止发送视频流。 该回调中会包含停止发送视频流的用户 IDunmute-audio
:通知应用程序远端用户已恢复发送音频流。 该回调中会包含恢复发送音频流的用户 IDunmute-video
:通知应用程序远端用户已恢复发送视频流。 该回调中会包含恢复发送视频流的用户 IDclientLeave
:通知应用程序有人离开房间clientJoin
:通知应用程序有人加入房间kicked
:通知应用程序自己被踢出liveRoomClose
:通知应用程序房间被解散open
:通知应用程序socket建立成功disconnect
:通知应用程序音视频socket关闭willreconnect
:通知应用程序信令准备重连reconnected
:通知应用程序信令准备重连sendCommandOverTime
:通知应用程序发送命令超时rtmp-tasks-status
:通知应用程序, 互动直播的推流状态asr-captions
:当前房间中字幕&翻译消息的通知
func
function 表示监听到event之后,要执行的函数
Returns:
- Type
- void
Example
// RTC流程 import YunXinMiniappSDK from 'path/to/NERTC_Miniapp_SDK_v4.4.0.js' let client = YunXinMiniappSDK.Client({ debug: true, appkey: '' }) //通知应用程序发生错误。 该回调中会包含详细的错误码和错误信息 client.on('error', (data) => { console.log('音视频通知:错误') }) //通知应用程序房间里成员的角色 netcallInstance.on('role-Changed', ({uid, role, isBigNumber}) => { //如果对端uid超出了number范围,isBigNumber值为true,uid为String类型,否则isBigNumber为false,uid为number类型 console.log(`${uid} 的角色为 ${role}`) //`broadcaster`:(默认) 将用户角色设置为主播。主播可以调用 publish 和 unpublish 方法。 //`audience`: 将用户角色设置为观众。观众不能调用 publish 和 unpublish 方法。 }) //通知应用程序已添加远端音视频流。 该回调中会包含已添加的远端用户 ID client.on('stream-added', ({uid, mediaType, isBigNumber}) => { //如果对端uid超出了number范围,isBigNumber值为true,uid为String类型,否则isBigNumber为false,uid为number类型 //mediaType的值为:audio、slaveAudio、video、screenShare console.log(`${uid} 发布了自己的 ${mediaType}`) }) //通知应用程序已删除远端音视频流。 该回调中会包含已删除的远端用户 ID。 client.on('stream-removed', ({uid, mediaType, isBigNumber}) => { //如果对端uid超出了number范围,isBigNumber值为true,uid为String类型,否则isBigNumber为false,uid为number类型 console.log(`${uid}停止发布自己的 ${mediaType}`) }) //通知应用程序更新后的推流地址。 client.on('syncDone', (data) => { data.userList.map(item => { //如果对端uid超出了number范围,isBigNumber值为true,uid为String类型,否则isBigNumber为false,uid为number类型 const {uid, url, isBigNumber} = item if (uid == localUid) { console.log('更新了推流地址') } else { console.log('更新了拉流地址') } }) console.log('音视频通知:已经删除远端音视频流') }) //通知应用程序远端用户已停止发送音频流。 该回调中会包含停止发送音频流的用户 ID netcallInstance.on('mute-audio', (data) => { const {uid} = data console.log('音视频通知:对端音频mute') }) //通知应用程序远端用户已停止发送视频流。 该回调中会包含停止发送视频流的用户 ID。 netcallInstance.on('mute-video', (data) => { const {uid} = data console.log('音视频通知:对端视频mute') }) //通知应用程序远端用户已恢复发送音频流。 该回调中会包含恢复发送音频流的用户 ID。 netcallInstance.on('unmute-audio', (data) => { const {uid} = data console.log('音视频通知:对端音频恢复mute') }) //通知应用程序远端用户已恢复发送视频流。 该回调中会包含恢复发送视频流的用户 ID。 netcallInstance.on('unmute-video', (data) => { const {uid} = data console.log('音视频通知:对端视频恢复mute') }) //通知应用程序有人离开房间。 client.on('clientLeave', (data) => { //如果对端uid超出了number范围,isBigNumber值为true,uid为String类型,否则isBigNumber为false,uid为number类型 const {uid, isBigNumber} = data console.log(`${uid} 离开了房间`) console.log('音视频通知:有人离开了,清除拉流的live-player组件') }) //通知应用程序有人加入房间。 client.on('clientJoin', (data) => { //如果对端uid超出了number范围,isBigNumber值为true,uid为String类型,否则isBigNumber为false,uid为number类型 const {uid, isBigNumber} = data console.log('音视频通知:有人加入') }) //通知应用程序自己被踢出。 client.on('kicked', (data) => { console.log('音视频通知:被踢') }) //通知应用程序socket建立成功。 client.on('open', (data) => { console.log('音视频通知:socket建立成功') }) //通知应用程序音视频socket关闭。 client.on('disconnect', (data) => { console.log('音视频通知:音视频socket关闭了') //可以清除live-puser和live-player组件 }) //通知应用程序信令准备重连。 client.on('willreconnect', (data) => { console.log('音视频通知:信令准备重连') //此时可以考虑清除live-puser和live-player组件 }) //通知应用程序信令准备重连。 client.on('reconnected', (data) => { console.log('音视频通知:信令重连成功') //此时可以重新调用publish发布自己的媒体 }) //通知应用程序发送命令超时。 client.on('sendCommandOverTime', (data) => { console.log('音视频通知:发送命令超时') }) //通知应用程序房间被解散。 client.on('liveRoomClose', (data) => { console.log('音视频通知:互动直播房间解散了') }) //通知应用程序, 互动直播的推流状态 client.on('rtmp-tasks-status', ({taskId, code, msg, streamUrl}) => { console.log('音视频通知:设置的推流任务的状态发生了变更') //taskId: 设置的推流任务的id //streamUrl: 设置的推流任务对应的推流地址 if (code == 505) { console.warn('该推流任务正在推流中,状态正常') } else if (code == 506) { console.warn('该推流任务推流失败了') } else if (code == 511) { console.warn('该推流任务推流结束了') } }) client.on('asr-captions', ({ timestamp, srcUid, text, isFinal, hasTrans, transText }) => { // timestamp: 该字幕消息的触发时间戳 // srcUid: 字幕的来源uid(即谁讲的话,产生的字幕) // text: 字幕的具体内容 // isFinal: 字幕消息是否结束(由于是实时字幕,房间中人边讲话,边产生字幕,isFinal用来标识一句话是否讲完) // hasTrans: 当前是否有翻译(startAsrCaptions(sourceLang = 'AUTO', targetLang = ''),如果调用开启实时字幕的时候,设置了targetLang) // transText: 翻译的具体内容 })
-
publish(mediaType)
-
加入房间后,可以发布自己的媒体
相关回调:
如果执行publish方法,调用成功后,房间里面的其他人会触发以下回调:
- 远端触发
stream-added
回调
Parameters:
Name Type Description mediaType
string 要发布的媒体类型:
undefined
:表示空字符串,即表示同时发布音视频。video
: 表示发布视频。audio
: 表示发布音频。
Returns:
- Type
- Promise
Example
client.publish().then(url=>{ console.log('发布成功,获取到推流地址: ', url) //将此url设置为live-pusher组件的url }).catch(e=>{ console.error('关闭mic失败: ', e) })
- 远端触发
-
setAudioEffectPreset(type)
-
设置用户上行的音频变声,默认关闭。
注意:
可以在加入房间之前或者之后设置,支持动态变更。
当房间内的本地用户和远端用户均使用小程序平台时,美声和变声的能力不会生效。当本地用户使用小程序平台,而对端使用的是移动平台、PC 平台或 Web 平台时,美声和变声能力才生效。Parameters:
Name Type Description type
number 用户角色。可设置为:
AUDIO_EFFECT_OFF
:(默认)关闭变声音效VOICE_CHANGER_EFFECT_ROBOT
: 机器人VOICE_CHANGER_EFFECT_GIANT
: 巨人VOICE_CHANGER_EFFECT_HORROR
: 恐怖VOICE_CHANGER_EFFECT_MATURE
: 成熟VOICE_CHANGER_EFFECT_MANTOWOMAN
: 男变女VOICE_CHANGER_EFFECT_WOMANTOMAN
: 女变男VOICE_CHANGER_EFFECT_MANTOLOLI
: 男变萝莉VOICE_CHANGER_EFFECT_WOMANTOLOLI
: 女变萝莉
Returns:
- Type
- void
Example
const type = YunXinMiniappSDK.VOICE_CHANGER_EFFECT_ROBOT //声音变成机器人效果 client.setAudioEffectPreset(type)
-
setLocalVoiceEqualization(bandFrequency, bandGain)
-
设置本地语音音效均衡,即自定义设置本地人声均衡波段的中心频率。
注意:
- 可以在加入房间之前或者之后设置,支持动态变更。
- 当房间内的本地用户和远端用户均使用小程序平台时,美声和变声的能力不会生效。当本地用户使用小程序平台,而对端使用的是移动平台、PC 平台或 Web 平台时,美声和变声能力才生效。
Parameters:
Name Type Description bandFrequency
number 频谱子带索引,取值范围是 [0-9],分别代表 10 个频带,对应的中心频率是 [31,62,125,250,500,1k,2k,4k,8k,16k] Hz。
bandGain
number 每个 band 的增益,单位是 dB,每一个值的范围是 [-15,15],默认值为 0,要求整型。
Returns:
- Type
- void
Example
//本地语音音效均衡 let gain = 10 // 取值范围是[-15,15]。默认值为0 let bandFrequency = YunXinMiniappSDK.AUDIO_EQUALIZATION_BAND_1K; //表示中心频率为1000的位置增益设置为10 client.setLocalVoiceEqualization(bandFrequency, gain) gain = -10 // 取值范围是[-15,15]。默认值为0 bandFrequency = YunXinMiniappSDK.AUDIO_EQUALIZATION_BAND_500; //表示中心频率为1000的位置增益设置为10 client.setLocalVoiceEqualization(bandFrequency, gain) //如果想更改所有频谱子带的增益值,需要连续调用该接口
-
setLocalVoicePitch(pitch)
-
设置本地语音音调,例如将音调调高或者调低
注意:
- 可以在加入房间之前或者之后设置,支持动态变更。
- setAudioEffectPreset 方法和 setLocalVoicePitch 方法不能共存,调用了其中任一方法后,另一方法会被重置为默认值。
- 当房间内的本地用户和远端用户均使用小程序平台时,美声和变声的能力不会生效。当本地用户使用小程序平台,而对端使用的是移动平台、PC 平台或 Web 平台时,美声和变声能力才生效。
Parameters:
Name Type Description pitch
number 语音音调大小,输入pitch区间在[0.5,2],默认值为1.25。
Returns:
- Type
- void
Example
const pitch = 0.6; //pitch 输入pitch区间在[0.5,2] ,默认值为1.25 client.setLocalVoicePitch(pitch)
-
setRole(role)
-
设置用户角色。默认情况下用户以主播角色加入房间。
在加入房间前,用户可以调用本接口设置本端模式为观众或主播模式。在加入房间后,用户可以通过本接口切换用户模式。
用户角色支持设置为主播(broadcaster
)或观众(audience
),主播和观众的权限不同:- 主播:可以操作摄像头等音视频设备、发布流、上下线对房间内其他用户可见。
- 观众:观众只能接收音视频流,不支持操作音视频设备、上下线不通知其他用户。
注意:
可以在加入房间之前或者之后设置。
相关回调:
如果执行publish方法,调用成功后,房间里面的其他人会触发以下回调:
- 远端触发
role-Changed
回调 - 主播切换为观众,远端触发
clientLeave
回调 - 观众切换为主播,远端触发
clientJoin
回调
Parameters:
Name Type Description role
string 用户角色。可设置为:
broadcaster
:(默认) 将用户角色设置为主播。主播可以调用 publish 和 unpublish 方法。audience
: 将用户角色设置为观众。观众不能调用 publish 和 unpublish 方法。
Returns:
- Type
- Promise
Example
client.setRole('broadcaster') client.on('role-Changed', ({uid, role}) => { console.log(`${uid}改变了自己角色 ${role}`) })
-
setVoiceBeautifierPreset(type)
-
设置用户上行的音频美声,默认关闭
注意:
- 可以在加入房间之前或者之后设置,支持动态变更。
- setVoiceBeautifierPreset 方法和 setAudioEffectPreset 方法不能共存,调用了其中任一方法后,另一方法会被重置为默认值。
- 当房间内的本地用户和远端用户均使用小程序平台时,美声和变声的能力不会生效。当本地用户使用小程序平台,而对端使用的是移动平台、PC 平台或 Web 平台时,美声和变声能力才生效。
Parameters:
Name Type Description type
number 用户角色。可设置为:
VOICE_BEAUTIFIER_OFF
:(默认)关闭美声效果VOICE_BEAUTIFIER_MUFFLED
: 低沉效果VOICE_BEAUTIFIER_MELLOW
:圆润效果VOICE_BEAUTIFIER_CLEAR
: 清澈效果VOICE_BEAUTIFIER_MAGNETIC
: 磁性效果VOICE_BEAUTIFIER_RECORDINGSTUDIO
: 录音棚效果VOICE_BEAUTIFIER_NATURE
: 天籁效果VOICE_BEAUTIFIER_KTV
: KTV效果效果VOICE_BEAUTIFIER_REMOTE
: 悠远效果VOICE_BEAUTIFIER_CHURCH
: 教堂效果VOICE_BEAUTIFIER_BEDROOM
: 卧室效果VOICE_BEAUTIFIER_LIVE
: Live效果
Returns:
- Type
- void
Example
const type = YunXinMiniappSDK.VOICE_BEAUTIFIER_MUFFLED //声音低沉 client.setVoiceBeautifierPreset(type)
-
startAsrCaptions(sourceLang, targetLang)
-
加入房间后,可以开启实时字幕&翻译功能
相关回调:
如果您在加入房间后调用该方法,调用成功后,本端会收到以下回调:
- asr-captions:字幕信息,包括字幕来源谁,字幕出发的时间戳、字幕内容、翻译内容等等
Parameters:
Name Type Description sourceLang
String 可选,表示讲话的原语言,需要告诉sdk说话人的语言是什么,默认为AUTO(即中英文自动识别),其他语种需要明确告知,具体参考下面列表
targetLang
String 可选,表示需要翻译的语音,默认空字符串''(表示字幕不需要翻译),其他参数参考下面列表
支持的语种如下:CN
: 简体中文。VI
: 越南语。EN
: 英语。ID
: 印度尼西亚语。IT
: 意大利语。ES
: 西班牙语。JA
: 日语。PT
: 葡萄牙语。KO
: 韩语。FR
: 法语。RU
: 俄语。DE
: 德语。AR
: 阿拉伯语。TH
: 泰语。KH
: 高棉语。LA
: 老挝语。
Returns:
- Type
- Promise
Example
// 开启字幕&翻译 import YunXinMiniappSDK from 'path/to/NERTC_Miniapp_SDK_v4.4.0.js' client = YunXinMiniappSDK.Client({ debug: true, appkey: '' }) //开启字幕,可以不填写参数 client.startAsrCaptions()
-
stopAsrCaptions()
-
关闭实时字幕&翻译
Parameters:
Type Description Void Returns:
- Type
- Promise
-
subscribe(uid, mediaType)
-
通话中,监听到stream-added事件后,如果想接收对端发送的媒体,可以调用该接口
Parameters:
Name Type Description uid
number 要订阅成员的uid
mediaType
string 要订阅的媒体类型:
video
: 表示订阅视频。audio
: 表示订阅音频。screenShare
: 表示订阅对端的视频辅流,即屏幕共享流slaveAudio
: 表示订阅对端的音频辅流,即(系统声卡采集的声音或者伴音等,主要是看发送端使用的什么音频流作为音频辅流)
Returns:
- Type
- Promise
Example
// RTC流程 import YunXinMiniappSDK from 'path/to/NERTC_Miniapp_SDK_v4.4.0.js' client = YunXinMiniappSDK.Client({ debug: true, appkey: '' }) client.on('stream-added', ({uid, mediaType}) => { //mediaType的值为:audio、video、screenShare、slaveAudio console.log(`${uid} 发布了自己的 ${mediaType} 媒体能力`) client.subscribe(uid, mediaType).then(res=>{ console.log(`订阅${uid} 的 ${mediaType} 成功,拉流地址: ${res.url}`) //将此url设置为live-player组件的url }) }) //当然用户可以通话中途自如的调用client.subscribe() 和 client.unsubscribe() 用于控制媒体的接收
-
unmute(mediaType)
-
一般是加入房间之后,恢复本地mute
相关回调:
如果您在加入房间后调用该方法执行unmute,调用成功后,房间里面的其他人会触发以下回调:
- mediaType设置为'audio'、undefined,远端触发
unmute-audio
回调 - mediaType设置为'video'、undefined,远端触发
unmute-video
回调
Parameters:
Name Type Description mediaType
string 要恢复的媒体类型:
video
: 表示禁止视频。audio
: 表示禁止音频。
Returns:
- Type
- Promise
Example
// RTC流程 import YunXinMiniappSDK from 'path/to/NERTC_Miniapp_SDK_v4.4.0.js' client = YunXinMiniappSDK.Client({ debug: true, appkey: '' }) client.unmute('audio').then(url=>{ console.log('unmute 音频成功: ', url) this.setData({ enableMic: false //设置live-pusher组件的enableMic属性为false }) }).catch(e=>{ console.error('unmute 音频失败: ', e) })
- mediaType设置为'audio'、undefined,远端触发
-
unpublish(mediaType)
-
加入房间后,publish过自己的媒体后,可以调用该接口停止publish
相关回调:
如果执行unpublish方法,调用成功后,房间里面的其他人会触发以下回调:
- 远端触发
stream-removed
回调
Parameters:
Name Type Description mediaType
string 要停止发布的媒体类型:
undefined
:(默认) 表示停止发布音视频。video
: 表示停止发布视频。audio
: 表示停止发布音频。
Returns:
- Type
- Promise
Example
client.unpublish('audio').then(()=>{ console.log('关闭mic成功') this.setData({ enableMic: false //设置live-pusher组件的enableMic属性为false,停止推流 }) }).catch(e=>{ console.error('关闭mic失败: ', e) })
- 远端触发
-
unsubscribe(uid, mediaType)
-
通话中,在订阅过别人之后,如果不想在接收对端发送的媒体,可以调用该接口
Parameters:
Name Type Description uid
number 要取消订阅成员的uid
mediaType
string 要取消订阅的媒体类型:
video
: 表示取消订阅视频。audio
: 表示取消订阅音频。screenShare
: 表示取订阅对端的屏幕共享流slaveAudio
: 表示取消订阅对端的音频辅流
Returns:
- Type
- Promise
Example
// RTC流程 client.unsubscribe(uid, 'audio').then(res=>{ console.log('取消订阅audio 完成: ', uid) })
-
updateTasks(options)
-
更新推流任务
Parameters:
Name Type Description options
Object Properties
Name Type Description rtmpTasks
Array 推流任务队列,数组类型
Returns:
- Type
- Promise
Example
let rtmpTasks = [] // taskID 可选字母、数字,下划线,不超过64位(原推流任务taskId) let updatTaskId = taskId // 更新推互动直播推流地址 let streamUrl = 'rtmp://xxxxxx-1' // 更新互动直播录制 let record = true //选填,指定大画面uid let hostUid = 100 let task1 = { taskId, streamUrl, record, hostUid, // 整体布局参数 layout: { canvas: { //整体布局宽度 width: 1280, //整体布局高度 height: 720, //整体布局背景色(转为10进制的数,如:#FFFFFF 16进制转为10进制为 16777215) color: 16777215 }, users: [{ uid: 100, //用户id x: 0, // user1 的视频布局x偏移,相对整体布局的左上角(前提是推流发布user1的视频) y: 0, // user1 的视频布局y偏移,相对整体布局的左上角(前提是推流发布user1的视频) width: 640, // user1 的视频布局宽度(前提是推流发布user1的视频) height: 360, //user1 的视频布局高度(前提是推流发布user1的视频) adaption: 1, //自适应,值默认为1 pushAudio: true, // 推流是否发布user1 的音频 pushVideo: true // 推流是否发布user1的视频 }, { uid: 200, //用户id x: 0, // user2 的视频布局x偏移,相对整体布局的左上角(前提是推流发布user2的视频) y: 0, // user2 的视频布局y偏移,相对整体布局的左上角(前提是推流发布user2的视频) width: 640, // user2 的视频布局宽度(前提是推流发布user2的视频) height: 360, //user2 的视频布局高度(前提是推流发布user2的视频) adaption: 1, //自适应,值默认为1 pushAudio: true, // 推流是否发布user2 的音频 pushVideo: true // 推流是否发布user2 的视频 }], images: [{ url: "xxxxxx", //设置背景图片 x: 0, // 背景图片x偏移,相对整体布局的左上角 y: 0, // 背景图片y偏移,相对整体布局的左上角 width: 480, // 背景图片宽度 height: 360, //背景图片高度 adaption: 1 //自适应,值默认为1 }] }, //音视频属性的一些设置,可以不配置该内容(即task1不包括config字段) config: { audioParam: { 可以不配置该内容(即config不包括audioParam字段) bitRate: 64, //自定义音频比特率。取值范围为 10~192。语音场景建议64以上,音乐场景建议128。 channels: 2, //音频推流声道数。可以设置为1(mono)或者2(stereo)。默认为2。 codecProfile: 0, //音频编码规格。可以设置为以下值。0: 表示基本音频编码规格(默认), 1: 表示高效音频编码规格 sampleRate:48000, //音频推流采样率。可以设置为以下值: 32000, 44100, 48000(默认) singleVideoNoTrans: false //单视频直推不转码。开启后推流服务器会透传用户的视频编码,不再对视频做转码。 }, } //扩展的推流任务属性, 可以不配置该内容(即task1不包括extraInfo字段) extraInfo: '' } rtmpTasks.push(task1) // 更新推流任务 client.updateTasks({rtmpTasks}).then(()=>{ console.log('更新推流任务接口成功') }).catch(error=>{ console.warn('更新推流任务接口失败: ', error) })