uni-app RtcEngine

最近更新时间:2023-08-15 05:57:36

首页你可以获取封装uni本地插件实例:

const RtcModule = uni.requireNativePlugin('插件名称');

渲染视频,使用 anyRTC 封装完成的组件:

<AR-CanvasView :ref="video" style="flex: 1;"></AR-CanvasView>

插件分为:

Module

setCallBack()

RtcModule.setCallBack((res) => {
    switch (res.engineEvent) {
        case "onWarning":  //警告回调
            //something
            break;
        case "onError": //错误回调
            //something
            break;
        
        ...

})

注册sdk事件回调 。先执行 sesetCallBack 后,才可以 create 创建对象

返回

create()

RtcModule.create({
    "appId": "YOUR APPID"
}, (res) => {
    //something
})

声明 Rtc 对象。

类型参数描述
StringappIdanyRTC 为 App 开发者签发的 App ID。每个项目都应该有一个独一无二的 App ID。如果你的开发包里没有 App ID,请从anyRTC官网申请一个新的 App ID。

返回

  • res.code
    • 0 :方法调用成功。
    • 其他:方法调用失败。

setParameters()

RtcModule.setParameters({
    
}, (res) => {
    //something
})

通过 JSON 配置 SDK 提供技术预览或特别定制功能。功能有些特殊,使用前可以咨询客服。

参数

咨询客服,使用特定功能。

返回

  • res.code

    • 0 :方法调用成功。

    • 其他:方法调用失败。

joinChannel()

RtcModule.joinChannel({
    "token": "",
    "channelId": "",
    "uid": ""
    }, (res) => {
        //something
})

加入频道。

该方法让用户加入通话频道,在同一个频道内的用户可以互相通话,多个用户加入同一个频道,可以群聊。使用不同 App ID 的 App 是不能互通的。如果已在通话中,用户必须调用 leaveChannel 退出当前通话,才能进入下一个频道。

成功调用该方加入频道后,本地会触发 onJoinChannelSuccess 回调;通信场景下的用户和直播场景下的主播加入频道后,远端会触发 onUserJoined 回调。

在网络状况不理想的情况下,客户端可能会与 RTC 的服务器失去连接;SDK 会自动尝试重连,重连成功后,本地会触发 onRejoinChannelSuccess 回调。

参数描述
Stringtoken在 App 服务器端生成的用于鉴权的 Token:
安全要求不高:你可以使用控制台生成的临时 Token,详见获取临时 Token
安全要求高:将值设为你的服务端生成的正式 Token,详见从服务端生成 Token
StringchannelId标识通话的频道名称,长度在 64 字节以内的字符串。以下为支持的字符集范围(共 89 个字符):
26 个小写英文字母 a-z
26 个大写英文字母 A-Z
10 个数字 0-9
"!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", " {", "}", "
Stringuid用户 ID,32 位字符串,保证唯一性。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

enableAudio()

RtcModule.enableAudio((res) => {
    //something
})

启用音频模块(默认为开启状态)。

注解

  • 该方法设置的是内部引擎为开启状态,在频道内和频道外均可调用,且在 leaveChannel 后仍然有效。
  • 该方法重置整个引擎,响应速度较慢,因此我们建议使用如下方法来控制音频模块:

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

enableVideo()

RtcModule.enableVideo((res) => {
    //something
})

启用视频模块。

该方法用于打开视频模式。可以在加入频道前或者通话中调用,在加入频道前调用,则自动开启视频模式,在通话中调用则由音频模式切换为视频模式。调用 disableVideo 方法可关闭视频模式。

成功调用该方法后,远端会触发 onRemoteVideoStateChanged () 回调。

注解

  • 该方法设置的是内部引擎为开启状态,在频道内和频道外均可调用,且在 leaveChannel 后仍然有效。
  • 该方法重置整个引擎,响应速度较慢,因此我们建议使用如下方法来控制视频模块:

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

disableAudio()

RtcModule.disableAudio((res) => {
    //something
})

关闭音频模块。

注解

  • 该方法设置的是内部引擎为禁用状态,在频道内和频道外均可调用,且在 leaveChannel 后仍然有效。
  • 该方法重置整个引擎,响应速度较慢,因此我们建议使用如下方法来控制音频模块:

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

disableVideo()

RtcModule.disableVideo((res) => {
    //something
})

关闭视频模块。

该方法用于关闭视频。可以在加入频道前或者通话中调用,在加入频道前调用,则自动开启纯音频模式,在通话中调用则由视频模式切换为纯音频频模式。调用 enableVideo 方法可开启视频模式。

成功调用该方法后,远端会触发onRemoteVideoStateChanged ()回调。

注解

  • 该方法设置的是内部引擎为禁用状态,在频道内和频道外均可调用,且在 leaveChannel 后仍然有效。
  • 该方法重置整个引擎,响应速度较慢,因此 我们 建议使用如下方法来控制视频模块:

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

setVideoEncoderConfiguration

RtcModule.setVideoEncoderConfiguration({
    "width":640 ,
    "height":480 ,
    "bitrate":0 ,
    "frameRate":15 ,
    "orientationMode":0 
    }, (res) => {
        //something
})

设置视频编码属性。

该方法设置视频编码属性。每个属性对应一套视频参数,如分辨率、帧率、码率、视频方向等。 所有设置的参数均为理想情况下的最大值。当视频引擎因网络环境等原因无法达到设置的分辨率、帧率或码率的最大值时,会取最接近最大值的那个值。

如果用户加入频道后不需要重新设置视频编码属性,则我们建议在 enableVideo 前调用该方法,可以加快首帧出图的时间。

参数描述
config视频编码属性,详细定义见 Android 的 VideoEncoderConfiguration
  • 返回

    • res.code
      • 0:方法调用成功
      • 其他:方法调用失败

setAudioProfile()

RtcModule.setAudioProfile({
    "profile":0 ,
    "scenario":0 ,
    }, (res) => {
        //something
})

设置音频编码配置。

类型参数描述
intprofile设置采样率,码率,编码模式和声道数:
0:默认设置。通信场景下为 1,直播场景下为 2
1:指定 32 KHz 采样率,语音编码, 单声道,编码码率最大值为 18 Kbps。
2:指定 48 KHz 采样率,音乐编码, 单声道,编码码率最大值为 48 Kbps。
3:指定 48 KHz采样率,音乐编码, 双声道,编码码率最大值为 56 Kbps。
4:指定 48 KHz 采样率,音乐编码, 单声道,编码码率最大值为 128 Kbps。
5:指定 48 KHz 采样率,音乐编码, 双声道,编码码率最大值为 192 Kbps。
intscenario设置音频应用场景。不同的音频场景下,设备的系统音量是不同的。详见 如何区分媒体音量和通话音量。
0:默认音频应用场景。
1:娱乐应用,需要频繁上下麦的场景。
2:教育应用,流畅度和稳定性优先。
3:游戏直播应用,需要外放游戏音效也直播出去的场景。
4:秀场应用,音质优先和更好的专业外设支持。
5:游戏开黑。

注解

  • 该方法需要在 joinChannel 之前设置好,加入频道后设置不生效。
  • 通信和直播场景下,音质(码率)会有网络自适应的调整,通过该方法设置的是一个最高码率。
  • 在有高音质需求的场景(例如音乐教学场景)中,建议将 Profile 设置为 4,Scenario 设置为 3

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

enableInEarMonitoring()

RtcModule.enableInEarMonitoring({
    "enabled":false 
    }, (res) => {
        //something
})

开启耳返功能。

该方法打开或关闭耳返功能。

类型参数描述
booleanenabledtrue:开启耳返功能
false:关闭耳返功能(默认)

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

setInEarMonitoringVolume()

RtcModule.setInEarMonitoringVolume({
    "volume":0 
    }, (res) => {
        //something
})

设置耳返音量。

类型参数描述
intvolume设置耳返音量,取值范围在 0 到 100 间。默认值为 100。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

setChannelProfile()

RtcModule.setChannelProfile({
    "profile":0 
    }, (res) => {
        //something
})

设置频道场景。

该方法用于设置频道的使用场景。AR会针对不同的使用场景采用不同的优化策略,如通信场景偏好流畅,直播场景偏好画质。

类型参数描述
intprofile频道使用场景:
0:(默认)通信场景。该场景适用于常见的一对一或群聊,频道中任何用户都可以自由说话。
1:直播场景。该场景有主播和观众两种用户角色,可以通过 setClientRole 设置。 主播可以收发语音和视频,但观众只能收,不能发。
2:游戏场景。该场景默认使用低功耗低码率的编解码器,且频道内任何用户都可以自由发言,适用于游戏场景。不推荐使用该场景。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

setClientRole()

RtcModule.setClientRole({
    "role":2 
    }, (res) => {
        //something
})

设置直播场景下的用户角色。

在加入频道前,用户需要通过本方法设置观众(默认)或主播模式。在加入频道后,用户可以通过本方法切换用户模式。

直播场景下,如果你在加入频道后调用该方法切换用户角色,调用成功后,本地会触发 onClientRoleChanged 回调;远端会触发 onUserJoined/onUserOffline(USER_OFFLINE_BECOME_AUDIENCE) 回调。

类型参数描述
introle用户角色:
1:直播频道中的主播,可以发布和接收音视频流。
2:直播频道中的观众,只可以接收音视频流。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

playEffect()

RtcModule.playEffect({
    "soundId":0,
    "filePath":"",
    "loopCount":0,
    "pitch":1.0,
    "pan":0.0,
    "gain":100.0,
    "publish":false
    }, (res) => {
        //something
})

播放指定音效文件。 该方法播放指定的本地或在线音效文件。你可以在该方法中设置音效文件的播放次数、音调、音效的空间位置和增益,以及远端用户是否能听到该音效。

你可以多次调用该方法,通过传入不同的音效文件的 soundIdfilePath,同时播放多个音效文件,实现音效叠加。为获得最佳用户体验,我们建议同时播放的音效文件不要超过 3 个。

调用该方法播放音效结束后,SDK 会触发 onAudioEffectFinished 回调。

类型参数描述
intsoundId指定音效的 ID。每个音效均有唯一的 ID。如果你已通过 preloadEffect 将音效加载至内存,确保这里的 soundID 与 preloadEffect 设置的 soundID 相同。
StringfilePath待播放的音效文件的绝对路径或 URL 地址。如 /sdcard/emulated/0/audio.mp4。建议填写文件后缀名。若无法确定文件后缀名,可不填。
intloopCount设置音效循环播放的次数:
0:播放音效一次
1:播放音效两次
-1:无限循环播放音效,直至调用 stopEffectstopAllEffects 后停止
doublepitch音效的音调,取值范围为 [0.5, 2]。默认值为 1.0,表示不需要修改音调。取值越小,则音调越低。
doublepan音效的空间位置。取值范围为 [-1.0, 1.0]: 0.0:音效出现在正前方 1.0:音效出现在右边 -1.0:音效出现在左边。
doublegain单个音效的音量。取值范围为 [0.0, 100.0]。默认值为 100.0。取值越小,则音效的音量越低。
booleanpublish是否将音效传到远端:
true:音效在本地播放的同时,会发布到 anyRTC 远端,因此远端用户也能听到该音效。
false:音效不会发布到 AR 云上,因此只能在本地听到该音效。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

stopAllEffects()

RtcModule.stopAllEffects((res) => {
    //something
})

停止播放所有音效文件。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

stopEffect()

RtcModule.stopEffect({
    "soundId":0 
    }, (res) => {
        //something
})

停止播放指定音效文件。

类型参数描述
intsoundId指定音效的 ID。每个音效均有唯一的 ID。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

adjustAudioMixingVolume()

RtcModule.adjustAudioMixingVolume({
    "volume":100 
    }, (res) => {
        //something
})

调节音乐文件的播放音量。

该方法调节混音里伴奏在本端和远端播放的音量大小。请在频道内调用该方法。

类型参数描述
intvolume伴奏音量范围为 0~100。默认 100 为原始文件音量

注解

调用该方法不影响调用 playEffect 播放音效文件的音量。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

startAudioMixing()

RtcModule.startAudioMixing({
    "filePath":"",
    "loopback":false,
    "replace":false,
    "cycle":0
    }, (res) => {
        //something
})

开始播放音乐文件及混音。

该方法指定本地或在线音频文件来和麦克风采集的音频流进行混音或替换。替换是指用音频文件替换麦克风采集的音频流。该方法可以选择是否让对方听到本地播放的音频,并指定循环播放的次数。

类型参数描述
StringfilePath指定需要混音的本地或在线音频文件的绝对路径,如 /sdcard/emulated/0/audio.mp4。建议填写文件后缀名。若无法确定文件后缀名,可不填。支持的音频格式包括:mp3、mp4、m4a、aac、3gp、mkv 及 wav。
如果用户提供的目录以 /assets/ 开头,则去 assets 里面查找该文件。
如果用户提供的目录不是以 /assets/ 开头,一律认为是在绝对路径里查找该文件
booleanloopbacktrue:只有本地可以听到混音或替换后的音频流。
false:本地和对方都可以听到混音或替换后的音频流
booleanreplacetrue:只推动设置的本地音频文件或者线上音频文件,不传输麦克风收录的音频。
false:音频文件内容将会和麦克风采集的音频流进行混音。
intcycle指定音频文件循环播放的次数:
正整数:循环的次数。
-1:无限循环。

注解

  • 如需调用该方法,请确保使用 Android 4.2 或以上设备,且 API Level ≥ 16
  • 请在频道内调用该方法,如果在频道外调用该方法可能会出现问题
  • 如果播放的是在线音乐文件,请确保重复调用该 API 的间隔超过 100 ms,否则 SDK 会返回 702 警告码,表示音乐文件打开过于频繁
  • 如果播放的是在线音乐文件,我们建议不要使用重定向地址。重定向地址在某些机型上可能会出现无法打开的情况
  • 如果本地音乐文件不存在、文件格式不支持、无法访问在线音乐文件 URL 都会返回警告码 701
  • 如果在模拟器上使用该 API,暂时只支持存放在 /sdcard/ 中的 mp3 文件

返回

  • res.code
    • 0:方法调用成功
    • 701 : 如果指定播放的音频文件不存在,或打开在线文件流后 5 秒内未收到网络流的数据包,则 SDK 会认为媒体文件不可访问,并返回该警告 。
    • 其他:方法调用失败

stopAudioMixing()

RtcModule.stopAudioMixing((res) => {
    //something
})

停止播放音乐文件及混音。

该方法停止播放伴奏。请在频道内调用该方法。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

leaveChannel()

RtcModule.leaveChannel((res) => {
    //something
})

离开频道。

离开频道,即挂断或退出通话。 当调用 joinChannel API 方法后,必须调用 leaveChannel 结束通话,否则无法开始下一次通话。 不管当前是否在通话中,都可以调用 leaveChannel,没有副作用。该方法会把会话相关的所有资源释放掉。该方法是异步操作,调用返回时并没有真正退出频道。在真正退出频道后,SDK 会触发 onLeaveChannel 回调。

成功调用该方法离开频道后,本地会触发 onLeaveChannel 回调;通信场景下的用户和直播场景下的主播离开频道后,远端会触发 onUserOffline 回调。

注解

如果你调用了 leaveChannel 后立即调用 destroyRtc 方法,SDK 将无法触发 onLeaveChannel 回调。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

destroyRtc()

RtcModule.destroyRtc((res) => {
    //something
})

销毁 Rtc 实例。

该方法释放 RTC SDK 使用的所有资源。有些 App 只在用户需要时才进行语音通话,不需要时则将资源释放出来用于其他操作,该方法对这类程序可能比较有用。只要调用了 destroy 方法,用户将无法再使用和回调该 SDK 内的其它方法。如需再次使用通信功能,必须重新调用 create 一个 Rtc 实例。

注解

  • 该方法为同步调用,需要等待 Rtc 实例资源释放后才能执行其他操作,所以我们建议在子线程中调用该方法,避免主线程阻塞。此外,我们不建议在 SDK 的回调中调用 destroyRtc,否则由于 SDK 要等待回调返回才能回收相关的对象资源,会造成死锁。
  • 如果需要在销毁后再次创建 Rtc 实例,需要等待 destroyRtc 方法执行结束,收到返回值后才能再创建实例。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

switchCamera()

RtcModule.switchCamera((res) => {
    //something
})

切换前置/后置摄像头。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

setDefaultAudioRouteToSpeakerphone()

RtcModule.setDefaultAudioRouteToSpeakerphone({
    "defaultToSpeaker":false
    },(res) => {
        //something
})

设置默认的音频播放路由。

该方法设置接收到的语音从听筒或扬声器出声。如果用户不调用本方法,则语音默认从听筒出声。 如果你想要在加入频道后修改语音路由,可以使用 setEnableSpeakerphone.

各场景下默认的语音路由:

通信场景

  • 语音通话,默认从听筒出声。
  • 视频通话,默认从扬声器出声。如果有用户在频道中使用 disableVideomuteLocalVideoStreammuteAllRemoteVideoStreams 关闭视频,则语音路由会自动切换回听筒。

直播场景

  • 扬声器

注解

  • 该方法仅适用于通信场景。
  • 该方法需要在加入频道前设置,否则不生效。
类型参数描述
booleandefaultToSpeakertrue默认从外放(扬声器)出声。
ture:如果设备连接了耳机或蓝牙,则无法切换到外放。
false:(默认)默认从听筒出声。如果设备连接了耳机,则语音路由走耳机。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

setEnableSpeakerphone()

RtcModule.setEnableSpeakerphone({
    "enabled":false
    },(res) => {
        //something
})

启用/关闭扬声器播放。

该方法设置是否将语音路由设到扬声器(外放)。调用该方法后,SDK 将触发 onAudioRouteChanged 回调提示状态已更改。

注解

  • 请确保在调用此方法前已调用过 joinChannel 方法。
  • setAudioProfile 中 scenario 的设置会影响 setEnableSpeakerphone 的行为。setEnableSpeakerphone 不生效的情况如下:
  • 当 scenario 为 3 时,所有用户都无法切换音频播放路由。
  • 当 scenario 为 04 时,直播场景中的观众无法切换音频播放路由,且当频道中只有一个主播时,该主播也无法切换音频播放路由。
  • 当 scenario 为 2 时,直播场景中的观众无法切换音频播放路由。
类型参数描述
booleanenabled是否将音频路由到外放。
true: 切换到外放。
false: 切换到听筒。如果设备连接了耳机,则语音路由走耳机。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

isSpeakerphoneEnabled()

RtcModule.isSpeakerphoneEnabled((res) => {
    //something
})

检查扬声器状态启用状态。

该方法检查扬声器是否已开启。

返回

  • res.code
    • false: 扬声器未开启,语音会输出到非扬声器(听筒,耳机等)
    • true: 扬声器已开启,语音会输出到扬声器

enableAudioVolumeIndication()

RtcModule.enableAudioVolumeIndication({
    "interval":0,
    "smooth":0,
    "report_vad":false,
    },(res) => {
        //something
})

启用说话者音量提示。

该方法允许 SDK 定期向 App 反馈当前谁在说话以及说话者的音量。启用该方法后,无论频道内是否有人说话,都会在说话声音音量提示回调 onAudioVolumeIndication 回调中按设置的间隔时间返回音量提示。

类型参数描述
intinterval指定音量提示的时间间隔:≤ 0:禁用音量提示功能。
> 0:返回音量提示的间隔,单位为毫秒。建议设置到大于 200 毫秒。最小不得少于 10 毫秒,否则会收不到 onAudioVolumeIndication 回调。
intsmooth平滑系数,指定音量提示的灵敏度。取值范围为 [0, 10],建议值为 3,数字越大,波动越灵敏;数字越小,波动越平滑。
booleanreport_vadtrue:开启本地人声检测功能。开启后,onAudioVolumeIndication 回调的 vad 参数会报告是否在本地检测到人声。
false:(默认)关闭本地人声检测功能。除引擎自动进行本地人声检测的场景外,onAudioVolumeIndication 回调的 vad 参数不会报告是否在本地检测到人声。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

adjustRecordingSignalVolume()

RtcModule.adjustRecordingSignalVolume({
    "volume":0
    },(res) => {
        //something
})

调节录音音量。

类型参数描述
intvolume录音信号音量,可在 0~400 范围内进行调节:
0:静音
100:原始音量 400
400:最大可为原始音量的 4 倍(自带溢出保护)。为避免回声并提升通话质量,我们建议将 volume 值设为 [0,100]。如果 volume 值需超过 100,联系QQ技术群:698167259

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

adjustUserPlaybackSignalVolume()

RtcModule.adjustUserPlaybackSignalVolume({
    "uid":"",
    "volume":0
    },(res) => {
        //something
})

调节本地播放的指定远端用户音量。

你可以在通话中调用该方法调节指定远端用户在本地播放的音量。如需调节多个用户在本地播放的音量,则需多次调用该方法。

注解

  • 该方法要在加入频道后调用。
  • 该方法调节的是本地播放的指定远端用户混音后的音量。
  • 该方法每次只能调整一位远端用户在本地播放的音量。若需调整多位远端用户在本地播放的音量,则需多次调用该方法。
类型参数描述
Stringuid远端用户的 ID。
intvolume播放音量,取值范围为 [0,100]。
0:静音。
100:原始音量。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

adjustPlaybackSignalVolume()

RtcModule.adjustPlaybackSignalVolume({
    "volume":0
    },(res) => {
        //something
})

调节本地播放的所有远端用户音量。

注解

  • 该方法调节的是本地播放的所有远端用户混音后的音量。
类型参数描述
intvolume播放音量,取值范围为 [0, 400]:
0:静音
100:原始音量
400:最大可为原始音量的 4 倍(自带溢出保护)。为避免回声并提升通话质量,我们建议将 volume 值设为 [0,100]。如果 volume 值需超过 100,联系技术支持。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

enableLocalAudio()

RtcModule.enableLocalAudio({
    "enabled":true
    },(res) => {
        //something
})

开/关本地音频采集。

当 App 加入频道时,它的语音功能默认是开启的。该方法可以关闭或重新开启本地语音功能,即停止或重新开始本地音频采集。

该方法不影响接收或播放远端音频流,enableLocalAudio(false) 适用于只听不发的用户场景。

类型参数描述
booleanenabledtrue:重新开启本地语音功能,即开启本地语音采集(默认)
false:关闭本地语音功能,即停止本地语音采集

注解

  • 调用 enableLocalAudio() 关闭本地采集后,系统会走媒体音量;调用 enableLocalAudio() 重新打开本地采集后,系统会恢复为通话音量。
  • 该方法与 muteLocalAudioStream 的区别在于:enableLocalAudio:开启或关闭本地语音采集及处理。使用 enableLocalAudio 关闭或开启本地采集后,本地听远端播放会有短暂中断。
  • muteLocalAudioStream:停止或继续发送本地音频流。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

enableLocalVideo()

RtcModule.enableLocalVideo({
    "enabled":true
    },(res) => {
        //something
})

开/关本地视频采集。

该方法禁用或重新启用本地视频采集。不影响接收远端视频。

调用 enableVideo 后,本地视频即默认开启。 你可以调用 enableLocalVideo() 关闭本地视频采集。关闭后如果想重新开启,则可调用 enableLocalVideo()。

成功禁用或启用本地视频采集后,远端会触发 onRemoteVideoStateChanged 回调。

参数描述
booleanenabled是否启用本地视频:
true:开启本地视频采集和渲染(默认)
false:关闭使用本地摄像头设备。关闭后,远端用户会接收不到本地用户的视频流;但本地用户依然可以接收远端用户的视频流。设置为 false 时,该方法不需要本地有摄像头。

注解

该方法设置的是内部引擎为启用或禁用状态,在 leaveChannel 后仍然有效。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

muteLocalAudioStream()

RtcModule.muteLocalAudioStream({
    "muted":false
    },(res) => {
        //something
})

停止/恢复发送本地音频流。

静音/取消静音。该方法用于允许/禁止往网络发送本地音频流。

成功调用该方法后,远端会触发 onRemoteAudioStateChanged 回调。

类型参数描述
booleanmutedtrue:停止发送本地音频流。
false:继续发送本地音频流(默认)。

注解

  • 该方法不影响录音状态,并没有禁用麦克风。
  • 如果你在该方法后调用 setChannelProfile 方法,SDK 会根据你设置的频道模式以及用户角色,重新设置是否停止发送本地音频。因此我们建议在 setChannelProfile 后调用该方法。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

muteLocalVideoStream()

RtcModule.muteLocalVideoStream({
    "muted":false
    },(res) => {
        //something
})

停止/恢复发送本地视频流。

成功调用该方法后,远端会触发 onRemoteVideoStateChanged 回调。

参数描述
booleanmuted发送本地视频流:
true:不发送本地视频流
false:发送本地视频流(默认)

注解

  • 调用该方法时,SDK 不再发送本地视频流,但摄像头仍然处于工作状态。相比于 enableLocalVideo () 用于控制本地视频流发送的方法,该方法响应速度更快。
  • 该方法不影响本地视频流获取,没有禁用摄像头。如果你在该方法后调用 setChannelProfile 方法,SDK 会根据你设置的频道模式以及用户角色,重新设置是否停止发送本地视频。因此我们建议在 setChannelProfile 后调用该方法。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

muteRemoteAudioStream()

RtcModule.muteRemoteAudioStream({
    "uid":"",
    "muted":false
    },(res) => {
        //something
})

停止/恢复接收指定音频流。

类型参数描述
Stringuid指定的用户 ID
booleanmutetrue:停止接收指定用户的音频流。
false:继续接收指定用户的音频流(默认) 注解。

注解

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

muteRemoteVideoStream()

RtcModule.muteRemoteVideoStream({
    "uid":"",
    "muted":false
    },(res) => {
        //something
})

停止/恢复接收指定视频流。

类型参数描述
Stringuid指定的用户 ID
booleanmutetrue:停止接收指定用户的视频流。
false:(默认)继续接收指定用户的视频流。

注解

如果之前有调用过 muteAllRemoteVideoStreams (true) 停止接收所有远端视频流,在调用本 API 之前请确保你已调用 muteAllRemoteVideoStreams (false)。 muteAllRemoteVideoStreams 是全局控制,muteRemoteVideoStream 是精细控制。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

muteAllRemoteAudioStreams()

RtcModule.muteAllRemoteAudioStreams({
    "muted":false
    },(res) => {
        //something
})

停止/恢复接收所有音频流。

类型参数描述
booleanmutetrue:停止接收所有远端音频流 false:继续接收所有远端音频流(默认)

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

muteAllRemoteVideoStreams()

RtcModule.muteAllRemoteVideoStreams({
    "muted":false
    },(res) => {
        //something
})

停止/恢复接收所有视频流。

类型参数描述
booleanmutedtrue:停止接收所有远端视频流。
false:继续接收所有远端视频流(默认)。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

setDefaultMuteAllRemoteAudioStreams()

RtcModule.setDefaultMuteAllRemoteAudioStreams({
    "muted":false
    },(res) => {
        //something
})

设置是否默认接收音频流。

该方法在加入频道前后都可调用。如果在加入频道后调用 setDefaultMuteAllRemoteAudioStreams(), 会接收不到后面加入频道的用户的音频流。

注解

停止接收音频流后,如果想要恢复接收,请调用 muteRemoteAudioStream(),并指定你想要接收的远端用户的 ID。 如果想恢复接收多个用户的音频流,则需要多次调用 muteRemoteAudioStreamsetDefaultMuteAllRemoteAudioStreams() 只能恢复接收设置后加入频道的用户的音频流。

类型参数描述
booleanmuted是否默认不接收所有远端音频:
true:默认不接收所有远端音频流
false:默认接收所有远端音频流(默认)

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

setDefaultMuteAllRemoteVideoStreams()

RtcModule.setDefaultMuteAllRemoteVideoStreams({
    "muted":false
    },(res) => {
        //something
})

设置是否默认接收视频流。

该方法在加入频道前后都可调用。如果在加入频道后调用 setDefaultMuteAllRemoteVideoStreams(), 会接收不到后面加入频道的用户的音频流。

注解

停止接收视频流后,如果想要恢复接收,请调用 muteRemoteVideoStream(),并指定你想要接收的远端用户的 ID。 如果想恢复接收多个用户的视频流,则需要多次调用 muteRemoteVideoStreamsetDefaultMuteAllRemoteVideoStreams() 只能恢复接收设置后加入频道的用户的视频流。

类型参数描述
booleanmuted是否默认不接收所有远端视频流:
true:默认不接收所有远端视频流。
false:默认继续接收所有远端视频流(默认)。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

setCameraTorchOn()

RtcModule.setCameraTorchOn({
    "isOn":false
    },(res) => {
        //something
})

设置是否打开闪光灯。

类型参数描述
booleanisOn是否打开闪光灯:
true:打开
false:关闭

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

isCameraTorchSupported()

RtcModule.setCameraTorchOn((res) => {
    //something
})

检测设备是否支持闪光灯常开。

注解

一般情况下,App 默认开启前置摄像头,因此如果你的前置摄像头不支持闪光灯常开,直接使用该方法会返回 false。如果需要检查后置摄像头是否支持闪光灯常开,需要先使用 switchCamera 切换摄像头,再使用该方法。

返回

  • res.code

    • true: 设备支持闪光灯常开
    • false: 设备不支持闪光灯常开

    addPublishStreamUrl()

    RtcModule.addPublishStreamUrl({
        "url":"",
        "transcodingEnabled":false
        },(res) => {
            //something
    })
    

增加旁路推流地址。

类型参数描述
StringurlCDN 推流地址,格式为 RTMP。该字符串长度不能超过 1024 字节。URL 不支持中文等特殊字符。
booleantranscodingEnabled是否转码 。true:转码(转码是指在旁路推流时对音视频流做一些转码处理后再推送到其他 RTMP 服务器,常见的适用场景是对多主播进行混流、合图)。如果设为 YES,需先调用 setLiveTranscoding 方法
false:不转码。

注解

该方法用于添加旁路推流地址,调用该方法后,SDK 会在本地触发 onRtmpStreamingStateChanged 回调,报告增加旁路推流地址的状态。

  • 该方法仅适用于直播场景。

  • 请确保在成功加入频道后再调用该接口。

  • 请确保已开通旁路推流的功能

  • 该方法每次只能增加一路旁路推流地址。若需推送多路流,则需多次调用该方法

    返回

  • res.code

    • 0:方法调用成功

    • 其他:方法调用失败

      removePublishStreamUrl()

      RtcModule.removePublishStreamUrl({
          "url":"",
          },(res) => {
              //something
      })
      

      删除旁路推流地址。

      注解

该方法用于删除旁路推流过程中已经设置的 RTMP 推流地址。调用该方法后,SDK 会在本地触发 onRtmpStreamingStateChanged 回调,报告删除旁路推流地址的状态。

  • 该方法仅适用于直播场景。

  • 该方法每次只能删除一路旁路推流地址。若需删除多路流,则需多次调用该方法。

  • URL 不支持中文等特殊字符。

    返回

  • res.code

    • 0:方法调用成功

    • 其他:方法调用失败

      setLiveTranscoding()

      RtcModule.setLiveTranscoding({
          "transcoding": {
                "width": 640.0, //推流视频的总尺寸(宽),单位为像素
                "height": 480.0, //推流视频的总尺寸(高),单位为像素
                "videoBitrate": 400, //用于旁路直播的输出视频的码率。单位为 Kbps。400 Kbps 为默认值
                "videoFramerate": 15, //用于旁路直播的输出视频的帧率。取值范围是 (0,30],单位为 fps。
                "videoGop": 30, //用于旁路直播的输出视频的 GOP。单位为帧。默认值为 30 帧
                "audioSampleRate": 0, //用于旁路直播的输出音频的采样率
                "audioBitrate": 48, //用于旁路直播的输出音频的码率。单位为 Kbps,默认值为 48,最大值为 128
                "audioChannels": 1, // 用于旁路直播的输出音频的声道数,默认值为 1
                "audioCodecProfile": 0, // 用于旁路直播输出音频的编码规格
                "videoCodecProfile": 100, //用于旁路直播的输出视频的编码规格
                "userConfigExtraInfo": "", //预留参数:用户自定义的发送到旁路推流客户端的信息,用于填充 H264/H265 视频中 SEI 帧内容
                "watermark": { //用于旁路直播的输出视频上的水印图片
                    "url": "", //直播视频上图片的 HTTP/HTTPS 地址,字符长度不得超过 1024 字节。
                    "x": 0.0,
                    "y": 0.0,
                    "width": 0.0,
                    "height": 0.0
                },
                "backgroundImage": { //用于旁路直播的输出视频上的背景图片
                    "url": "", //直播视频上图片的 HTTP/HTTPS 地址,字符长度不得超过 1024 字节。
                    "x": 0.0,
                    "y": 0.0,
                    "width": 0.0,
                    "height": 0.0
                },
                "backgroundColor": { //用于旁路直播的输出视频的背景色
                    "red": 0.0;
                    "green": 0.0,
                    "blue": 0.0
                },
                "transcodingUsers": {
                    [
                        {
                            "uid": "", //旁路推流的用户 ID
                            "x": 0.0,
                            "y": 0.0,
                            "width": 50.0,
                            "height": 50.0,
                            "zOrder": 0.0, //直播视频上用户视频帧的图层编号
                            "alpha": 1.0, //直播视频上用户视频的透明度
                            "audioChannel": 0.0 //直播音频所在声道, 取值范围为 [0,5],默认值为 0
                        }
                    ]
                }
          }
          },(res) => {
              //something
      })
      

      设置直播转码。

      注解

      该方法用于旁路推流的视图布局及音频设置等。调用该方法更新转码设置后本地会触发 rtcEngineTranscodingUpdated 回调。

      • 该方法仅适用于直播场景。

      • 请确保已开通 CDN 旁路推流的功能

      • 首次调用该方法更新转码设置时,不会触发 onTranscodingUpdated 回调。

        返回

      • res.code

        • 0:方法调用成功
        • 其他:方法调用失败

Component

startPreview()

this.$refs.video.startPreview((res) => {
    //something
})

开启视频预览。

该方法用于在进入频道前启动本地视频预览。调用该 API 前,必须:

调用 enableVideo 开启视频功能

调用 setupLocalVideo 设置预览窗口及属性

注解

  • 本地预览默认开启镜像功能
  • 使用该方法启用了本地视频预览后,如果直接调用 leaveChannel 退出频道,并不会关闭预览。如需关闭预览,请调用 stopPreview

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

stopPreview()

this.$refs.video.stopPreview((res) => {
    //something
})

停止视频预览。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

setupLocalVideo()

this.$refs.video.setupLocalVideo({
    "uid":"",
    "channelId":"",
    "renderMode":1,
    "mirrorMode":0
},(res) => {
    //something
})

初始化本地视图。

该方法初始化本地视图并设置本地用户视频显示信息,只影响本地用户看到的视频画面,不影响本地发布视频。 调用该方法绑定本地视频流的显示视窗(View),并设置本地用户视图的渲染模式和镜像模式。

类型参数描述
Stringuid用户 ID。
StringchannelId能标识频道的频道名,长度在 64 字节以内的字符。以下为支持的字符集范围(共 89 个字符):
26 个小写英文字母 a-z;
26 个大写英语字母 A-Z;
10 个数字 0-9;
空格;
"!"、"#"、"$"、"%"、"&"、"("、")"、"+"、"-"、":"、";"、"<"、"="、"."、">"、"?"、"@"、"["、"]"、"^"、" {"、"}"、"
intrenderMode视频渲染模式:
1: 优先保证视窗被填满。视频尺寸等比缩放,直至整个视窗被视频填满。如果视频长宽与显示窗口不同,多出的视频将被截掉。
2: 优先保证视频内容全部显示。视频尺寸等比缩放,直至视频窗口的一边与视窗边框对齐。如果视频长宽与显示窗口不同,视窗上未被填满的区域将被涂黑。
3: 该模式已废弃,不推荐使用。
4: 视频尺寸进行缩放和拉伸以充满显示视窗。
intmirrorMode视图镜像模式:
0:(默认)由 SDK 决定镜像模式。
1:开启镜像模式。
2:关闭镜像模式。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败

setupRemoteVideo()

this.$refs.video.setupRemoteVideo({
    "uid":"",
    "channelId":"",
    "renderMode":0,
    "mirrorMode":0
},(res) => {
    //something
})

初始化远端用户视图。

该方法绑定远端用户和显示视图,并设置远端用户视图在本地显示时的渲染模式和镜像模式,只影响本地用户看到的视频画面。

如果 App 不能事先知道对方的用户 ID,可以在 APP 收到 onUserJoined 事件时设置。如果启用了视频录制功能,视频录制服务会做为一个哑客户端加入频道,因此其他客户端也会收到它的 onUserJoined 事件,App 不应给它绑定视图(因为它不会发送视频流),如果 App 不能识别哑客户端,可以在 onFirstRemoteVideoDecoded 事件时再绑定视图。解除某个用户的绑定视图可以把 view 设置为空。退出频道后,SDK 会把远程用户的绑定关系清除掉。

类型参数描述
Stringuid用户 ID。
StringchannelId能标识频道的频道名,长度在 64 字节以内的字符。以下为支持的字符集范围(共 89 个字符):
26 个小写英文字母 a-z;
26 个大写英语字母 A-Z;
10 个数字 0-9;
空格;
"!"、"#"、"$"、"%"、"&"、"("、")"、"+"、"-"、":"、";"、"<"、"="、"."、">"、"?"、"@"、"["、"]"、"^"、" {"、"}"、"
intrenderMode视频渲染模式:
1: 优先保证视窗被填满。视频尺寸等比缩放,直至整个视窗被视频填满。如果视频长宽与显示窗口不同,多出的视频将被截掉。
2: 优先保证视频内容全部显示。视频尺寸等比缩放,直至视频窗口的一边与视窗边框对齐。如果视频长宽与显示窗口不同,视窗上未被填满的区域将被涂黑。
3: 该模式已废弃,不推荐使用。
4: 视频尺寸进行缩放和拉伸以充满显示视窗。
intmirrorMode视图镜像模式:
0:(默认)由 SDK 决定镜像模式。
1:开启镜像模式。
2:关闭镜像模式。

返回

  • res.code
    • 0:方法调用成功
    • 其他:方法调用失败