为帮助用户更好更快的使用插件,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。
anyRTC SDK 是anyRTC 为实时互动通信及直播类应用量身打造而成的SDK,包括了实时音频、视频、混音、屏幕共享等功能,适用于娱乐、游戏、教育等场景。支持公有云、混合云、私有云等部署方式。
使用前请前往anyRTC 网站(https://www.anyrtc.io)注册账号,并创建应用。
前端调用 arRtc 插件方法,初始化和加入频道。
建议使用此插件之前先配置 config.xml 文件的 Feature,方法如下
名称:arRtc
参数:appId
描述:配置 arRtc 应用信息
<feature name="arRtc">
<param name="appId" value="123456789" />
</feature>
初始化RTC服务
init({params})
appId:
var arRtc = api.require('arRtc');
arRtc.init({appId:'appId'});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
该方法释放 ARtcKit SDK 使用的所有资源。有些应用程序只在用户需要时才进行语音通话,不需要时则将资源释放出来用于其他操作,该方法对这类程序可能比较有用。 只要调用了 destroy(), 用户将无法再使用和回调该 SDK 内的其它方法。如需再次使用通信功能,必须重新初始化。
destroy()
var arRtc = api.require('arRtc');
arRtc.destroy();
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
该方法返回 SDK 版本号字符串
getSdkVersion(callback(ret))
ret:
var arRtc = api.require('arRtc');
arRtc.getSdkVersion(function(ret){
api.alert({msg:'ARtcKit RTC SDK Version: ' + ret});
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
设置特有参数
setParameters({params}, callback(ret))
params:
ret:
内部字段:
{
code: 0 // 返回的状态码,0为调用成功,否则为调用失败
}
var arRtc = api.require('arRtc');
arRtc.setParameters({
params:''
}, function(ret) {
if (ret.code == 0) {
// success
}
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
设置 SDK 的输出 log 文件。SDK 运行时产生的所有 log 将写入该文件。应用程序必须保证指定的目录存在而且可写。
setLogFile({params}, callback(ret))
path:
ret:
内部字段:
{
code: 0 // 返回的状态码,0为调用成功,否则为调用失败
}
var arRtc = api.require('arRtc');
arRtc.setLogFile({
path:'cache://arRtc.log'
}, function(ret) {
if (ret.code == 0) {
// success
}
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
设置 SDK 的输出日志过滤器。不同的过滤器可以用或组合。
setLogFilter({params}, callback(ret))
filter:
ret:
内部字段:
{
code: 0 // 返回的状态码,0为调用成功,否则为调用失败
}
var arRtc = api.require('arRtc');
arRtc.setLogFilter({
filter:0x080f
}, function(ret) {
if (ret.code == 0) {
// success
}
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
该方法让用户加入通话频道,在同一个频道内的用户可以互相通话,多个用户加入同一个频道,可以群聊。 使用不同 App ID 的应用程序是不能互通的。如果已在通话中,用户必须调用 leaveChannel() 退出当前通话,才能进入下一个频道。
joinChannel({params}, callback(ret))
token:
channel:
uid:
ret:
内部字段:
{
code: 0 // 返回的状态码,0为调用成功,否则为调用失败
}
var arRtc = api.require('arRtc');
arRtc.joinChannel({
channel:'test'
}, function(ret) {
if (ret.code == 0) {
// success
}
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
离开频道,即挂断或退出通话。当调用 joinChannel() API 方法后,必须调用 leaveChannel() 结束通话,否则无法开始下一次通话。不管当前是否在通话中,都可以调用 leaveChannel(),没有副作用。该方法会把会话相关的所有资源释放掉。该方法是异步操作,调用返回时并没有真正退出频道。在真正退出频道后,SDK 会触发 leaveChannelListener 回调。
leaveChannel(callback(ret))
ret:
内部字段:
{
code: 0 // 返回的状态码,0为调用成功,否则为调用失败
}
var arRtc = api.require('arRtc');
arRtc.leaveChannel(function(ret) {
if (ret.code == 0) {
// success
}
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
该方法用于设置频道模式(Profile)。RtcEngine 需知道应用程序的使用场景(例如通信模式或直播模式), 从而使用不同的优化手段。
setChannelProfile({params}, callback(ret))
profile:
ret:
内部字段:
{
code: 0 // 返回的状态码,0为调用成功,否则为调用失败
}
var arRtc = api.require('arRtc');
arRtc. setChannelProfile({
profile: 1
}, function(ret) {
if (ret.code == 0) {
// success
}
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
直播模式下在加入频道前,用户需要通过本方法设置观众(默认)或主播模式。在加入频道后,用户可以通过本方法切换用户模式。
setClientRole({params}, callback(ret))
role:
ret:
内部字段:
{
code: 0 // 返回的状态码,0为调用成功,否则为调用失败
}
var arRtc = api.require('arRtc');
arRtc. setClientRole({
role: 1
}, function(ret) {
if (ret.code == 0) {
// success
}
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
该方法用于更新 Token。如果启用了 Token 机制,过一段时间后使用的 Token 会失效。 当 errorListener 回调报告 ERR_TOKEN_EXPIRED(109) ,或收到 requestTokenListener 回调时,应用程序应重新获取 Token,然后调用该 API 更新 Token,否则 SDK 无法和服务器建立连接。
renewToken({params}, callback(ret))
token:
ret:
内部字段:
{
code: 0 // 返回的状态码,0为调用成功,否则为调用失败
}
var arRtc = api.require('arRtc');
arRtc.renewToken({
token:''
}, function(ret) {
if (ret.code == 0) {
// success
}
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
该方法用于打开视频模式。可以在加入频道前或者通话中调用,在加入频道前调用,则自动开启视频模式,在通话中调用则由音频模式切换为视频模式。调用 disableVideo() 方法可关闭视频模式。
enableVideo(callback(ret))
ret:
内部字段:
{
code: 0 // 返回的状态码,0为调用成功,否则为调用失败
}
var arRtc = api.require('arRtc');
arRtc.enableVideo(function(ret) {
if (ret.code == 0) {
// success
}
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
该方法用于关闭视频。可以在加入频道前或者通话中调用,在加入频道前调用,则自动开启纯音频模式,在通话中调用则由视频模式切换为纯音频频模式。 调用 enableVideo() 方法可开启视频模式。
disableVideo(callback(ret))
ret:
内部字段:
{
code: 0 // 返回的状态码,0为调用成功,否则为调用失败
}
var arRtc = api.require('arRtc');
arRtc.disableVideo(function(ret) {
if (ret.code == 0) {
// success
}
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
该方法用于打开或关闭本地视频采集和渲染。
enableLocalVideo({params}, callback(ret))
enabled:
ret:
内部字段:
{
code: 0 // 返回的状态码,0为调用成功,否则为调用失败
}
var arRtc = api.require('arRtc');
arRtc.enableLocalVideo({
enabled:true
}, function(ret) {
if (ret.code == 0) {
// success
}
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
该方法设置视频编码属性(Profile),如分辨率、帧率、码率等。 当设备的摄像头不支持指定的分辨率时,SDK 会自动选择一个合适的摄像头分辨率,但是编码分辨率仍然用 setVideoProfile() 指定的。
setVideoProfile({params}, callback(ret))
width:
height:
frameRate:
bitrate:
ret:
内部字段:
{
code: 0 // 返回的状态码,0为调用成功,否则为调用失败
}
var arRtc = api.require('arRtc');
arRtc.setVideoProfile({
width: 360,
height: 360,
frameRate: 15,
bitrate: 800
}, function(ret) {
if (ret.code == 0) {
// success
}
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
该方法用于在前置/后置摄像头间切换。
switchCamera(callback(ret))
ret:
内部字段:
{
code: 0 // 返回的状态码,0为调用成功,否则为调用失败
}
var arRtc = api.require('arRtc');
arRtc.switchCamera(function(ret) {
if (ret.code == 0) {
// success
}
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
该方法用于启动本地视频预览。在开启预览前,必须先调用 setupLocalVideo() 设置预览窗口及属性,且必须调用 enableVideo() 开启视频功能。 如果在调用 joinChannel() 进入频道之前调用了 startPreview() 启动本地视频预览,在调用 leaveChannel() 退出频道之后本地预览仍然处于启动状态,如需要关闭本地预览,需要调用 stopPreview()。
startPreview(callback(ret))
ret:
内部字段:
{
code: 0 // 返回的状态码,0为调用成功,否则为调用失败
}
var arRtc = api.require('arRtc');
arRtc.startPreview(function(ret) {
if (ret.code == 0) {
// success
}
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
该方法用于停止本地视频预览。
stopPreview(callback(ret))
ret:
内部字段:
{
code: 0 // 返回的状态码,0为调用成功,否则为调用失败
}
var arRtc = api.require('arRtc');
arRtc.stopPreview(function(ret) {
if (ret.code == 0) {
// success
}
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
该方法设置本地视频显示信息。应用程序通过调用此接口绑定本地视频流的显示视窗,并设置视频显示模式。在应用程序开发中,通常在初始化后调用该方法进行本地视频设置,然后再加入频道。退出频道后,绑定仍然有效,如果需要解除绑定,可以不设置 rect 调用 setupLocalVideo() 。
setupLocalVideo({params}, callback(ret))
rect:
{
x: 0, //(可选项)数字类型;视频区域左上角的 x 坐标(相对于所属的 Window 或 Frame);默认:0
y: 0, //(可选项)数字类型;视频区域左上角的 y 坐标(相对于所属的 Window 或 Frame);默认:0
w: 360, // 数字类型;视频区域的宽度
h: 640 // 数字类型;视频区域的高度
}
fixedOn:
fixed:
renderMode:
ret:
内部字段:
{
code: 0 // 返回的状态码,0为调用成功,否则为调用失败
}
var arRtc = api.require('arRtc');
arRtc.setupLocalVideo({
rect:{ x: 0, y: 0, w: 360, h: 640 },
fixed: false,
renderMode: 1
}, function(ret) {
if (ret.code == 0) {
// success
}
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
该方法绑定远程用户和显示视图,即设定 uid 指定的用户用哪个视图显示。调用该接口时需要指定远程视频的 uid,一般可以在进频道前提前设置好。
如果应用程序不能事先知道对方的 uid,可以在 APP 收到 remoteUserJoinedListener 事件时设置。如果启用了视频录制功能,视频录制服务会做为一个哑客户端加入频道,因此其他客户端也会收到它的 remoteUserJoinedListener 事件,APP 不应给它绑定视图(因为它不会发送视频流),如果 APP 不能识别哑客户端,可以在 firstRemoteVideoDecodedListener 事件时再绑定视图。解除某个用户的绑定视图可以不设置 rect。退出频道后,SDK 会把远程用户的绑定关系清除掉。
setupRemoteVideo({params}, callback(ret))
uid:
rect:
{
x: 0, //(可选项)数字类型;视频区域左上角的 x 坐标(相对于所属的 Window 或 Frame);默认:0
y: 0, //(可选项)数字类型;视频区域左上角的 y 坐标(相对于所属的 Window 或 Frame);默认:0
w: 360, // 数字类型;视频区域的宽度
h: 640 // 数字类型;视频区域的高度
}
fixedOn:
fixed:
renderMode:
ret:
内部字段:
{
code: 0 // 返回的状态码,0为调用成功,否则为调用失败
}
var arRtc = api.require('arRtc');
arRtc.setupRemoteVideo({
uid: '123456'
rect:{ x: 0, y: 0, w: 360, h: 640 },
fixed: false,
renderMode: 1
}, function(ret) {
if (ret.code == 0) {
// success
}
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
暂停/恢复发送本地视频流。注意:该方法不影响本地视频流获取,没有禁用摄像头。
muteLocalVideoStream({params}, callback(ret))
mute:
ret:
内部字段:
{
code: 0 // 返回的状态码,0为调用成功,否则为调用失败
}
var arRtc = api.require('arRtc');
arRtc.muteLocalVideoStream({
mute: true
}, function(ret) {
if (ret.code == 0) {
// success
}
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
暂停/恢复播放所有人的视频流。
muteAllRemoteVideoStreams({params}, callback(ret))
mute:
ret:
内部字段:
{
code: 0 // 返回的状态码,0为调用成功,否则为调用失败
}
var arRtc = api.require('arRtc');
arRtc.muteAllRemoteVideoStreams({
mute: true
}, function(ret) {
if (ret.code == 0) {
// success
}
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
暂停/恢复播放指定的远端视频流。如果之前有调用过 muteAllRemoteVideoStreams(true) 对所有远端视频进行静音,在调用本 API 之前请确保你已调用 muteAllRemoteVideoStreams(false) 。 muteAllRemoteVideoStreams 是全局控制,muteRemoteVideoStream 是精细控制。
muteRemoteVideoStream({params}, callback(ret))
uid:
mute:
ret:
内部字段:
{
code: 0 // 返回的状态码,0为调用成功,否则为调用失败
}
var arRtc = api.require('arRtc');
arRtc.muteRemoteVideoStream({
uid: '123456'
mute: true
}, function(ret) {
if (ret.code == 0) {
// success
}
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
打开音频(默认为开启状态)。
enableAudio(callback(ret))
ret:
内部字段:
{
code: 0 // 返回的状态码,0为调用成功,否则为调用失败
}
var arRtc = api.require('arRtc');
arRtc.enableAudio(function(ret) {
if (ret.code == 0) {
// success
}
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
关闭音频。
disableAudio(callback(ret))
ret:
内部字段:
{
code: 0 // 返回的状态码,0为调用成功,否则为调用失败
}
var arRtc = api.require('arRtc');
arRtc.disableAudio(function(ret) {
if (ret.code == 0) {
// success
}
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
静音/取消静音。该方法用于允许/禁止往网络发送本地音频流。
muteLocalAudioStream({params}, callback(ret))
mute:
ret:
内部字段:
{
code: 0 // 返回的状态码,0为调用成功,否则为调用失败
}
var arRtc = api.require('arRtc');
arRtc.muteLocalAudioStream({
mute:true
}, function(ret) {
if (ret.code == 0) {
// success
}
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
暂停/恢复播放远端用户的音频流,即对所有远端用户进行静音与否。
muteAllRemoteAudioStreams({params}, callback(ret))
mute:
ret:
内部字段:
{
code: 0 // 返回的状态码,0为调用成功,否则为调用失败
}
var arRtc = api.require('arRtc');
arRtc.muteAllRemoteAudioStreams({
mute: 1
}, function(ret) {
if (ret.code == 0) {
// success
}
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
静音/取消静音指定远端用户。如果之前有调用过 muteAllRemoteAudioStreams(true) 对所有远端音频进行静音,在调用本 API 之前请确保你已调用 muteAllRemoteAudioStreams(false) 。 muteAllRemoteAudioStreams 是全局控制,muteRemoteAudioStream 是精细控制。
muteRemoteAudioStream({params}, callback(ret))
uid:
mute:
ret:
内部字段:
{
code: 0 // 返回的状态码,0为调用成功,否则为调用失败
}
var arRtc = api.require('arRtc');
arRtc.muteRemoteAudioStream({
uid: '123456',
mute: true
}, function(ret) {
if (ret.code == 0) {
// success
}
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
该回调方法表示该客户端成功加入了指定的频道。
joinChannelSuccessListener(callback(ret))
ret:
内部字段:
{
channel: 'test' // 字符串类型;频道名
uid: '123456' // 字符串类型;用户 ID。如果 joinChannel 时指定了 uid,则此处返回该 ID;否则使用 ar云平台 服务器自动分配的 ID
}
var arRtc = api.require('arRtc');
arRtc.joinChannelSuccessListener(function(ret) {
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
当用户调用 leaveChannel 离开频道后,SDK 会触发该回调。
leaveChannelListener(callback())
var arRtc = api.require('arRtc');
arRtc.leaveChannelListener(function() {
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
提示第一帧本地视频画面已经显示在屏幕上。
firstLocalVideoFrameListener(callback(ret))
ret:
内部字段:
{
width: 360 // 数字类型;视频宽度。
height: 640 // 数字类型;视频高度。
}
var arRtc = api.require('arRtc');
arRtc.firstLocalVideoFrameListener(function(ret) {
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
提示有用户加入了频道。如果该客户端加入频道时已经有用户在频道中,SDK也会向应用程序上报这些已在频道中的用户。
remoteUserJoinedListener(callback(ret))
ret:
内部字段:
{
uid: 1 // 数字类型;远程用户 ID。
}
var arRtc = api.require('arRtc');
arRtc.remoteUserJoinedListener(function(ret) {
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
提示有用户离开了频道(或掉线)。SDK 判断用户离开频道(或掉线)的依据是超时: 在一定时间内(15 秒)没有收到对方的任何数据包,判定为对方掉线。 在网络较差的情况下,可能会有误报。建议可靠的掉线检测应该由信令来做。
remoteUserOfflineListener(callback(ret))
ret:
内部字段:
{
uid: 1 // 数字类型;远程用户 ID。
}
var arRtc = api.require('arRtc');
arRtc.remoteUserOfflineListener(function(ret) {
//arRtc.setupRemoteVideo({uid:ret.uid});
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
提示已收到第一帧远程视频流并解码。
firstRemoteVideoDecodedListener(callback(ret))
ret:
内部字段:
{
uid: 1 // 数字类型;远程用户 ID。
width: 360 // 数字类型;视频宽度。
height: 640 // 数字类型;视频高度。
}
var arRtc = api.require('arRtc');
arRtc.firstRemoteVideoDecodedListener(function(ret) {
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
在调用 joinChannel 时如果指定了 Token,由于 Token 具有一定的时效,在通话过程中SDK可能由于网络原因和服务器失去连接,重连时可能需要新的 Token。 该回调通知APP需要生成新的 Token,并需调用 renewToken() 为 SDK 指定新的 Token。
requestTokenListener(callback())
var arRtc = api.require('arRtc');
arRtc.requestTokenListener(function() {
//arRtc.renewToken({token:'new token'});
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
该回调方法表示 SDK 运行时出现了(网络或媒体相关的)错误。通常情况下,SDK 上报的错误意味着 SDK 无法自动恢复,需要应用程序干预或提示用户。比如启动通话失败时,SDK 会上报 StartCall(1002) 错误,应用程序可以提示用户启动通话失败,并调用 leaveChannel() 退出频道。
errorListener(callback(ret))
ret:
内部字段:
{
errorCode: 0 // 数字类型;错误代码
}
var arRtc = api.require('arRtc');
arRtc.errorListener(function(ret) {
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本
该回调方法表示 SDK 运行时出现了(网络或媒体相关的)警告。通常情况下,SDK 上报的警告信息应用程序可以忽略,SDK 会自动恢复。比如和服务器失去连接时,SDK 可能会上报 OpenChannelTimeout(106) 警告,同时自动尝试重连。
warningListener(callback(ret))
ret:
内部字段:
{
warningCode: 0 // 数字类型;警告代码
}
var arRtc = api.require('arRtc');
arRtc.warningListener(function(ret) {
});
iOS 系统,Android 系统
可提供的 4.0.0 及更高版本