agoraVideo

来自于:开发者立即使用

音频、基础类

视频类

概述

声网, Agora。一个专注移动端的高清实时通话云服务解决方案的服务商。

团队

声网团队90%都是技术人员。除了赵斌,联合创始人还包括YY前技术委员会执行主席;团队中还有由IEEE DSP 特邀编辑领衔的音视频算法团队。整个团队拥有超过 20 年的 VoIP 技术积累,有年服务 4000 亿分钟语音通话的经验。

服务

声网在全球部署了近百个数据中心和近千台服务器,能够保障跨大洲、跨国家、跨运营商网络的实时数据传输质量。团队很有自信地宣称,在语音通话的质量上,他们有信心打败最有竞争力的技术对手,哪怕在硅谷。 由于是 To B 的云服务,声网的盈利模式也相对简单。声网面向企业收费,标准是每 1000分钟0.99美元,国内海外统一。这个基于规模效益的定价贴近于目前产品的成本价格,远低于客户自己运营维护这类服务的成本。 目前声网已经和国内许多产品在接洽合作,但团队没有透露具体已达成的合作。在国外,由于声网的海外版上线更早,已经有合作一段时间的产品了,比如针对“语言技能交换”的语音社交应用 HelloTalk。

优势

超便宜,每分钟0.00099 美元起。

超简单接入,30 分钟出 Demo。

多平台,Native 和 Web 互通。

1,实时通信 API 7x24 质量保证,新型实时传输网 SD-RTN,连接全球 200 多个国家和地区,无论何地,都能享受高质量的实时通话。为开发者提供保障 7x24 高质量的跨国跨网通话服务,无论你的用户身处何时何地,都能享受高质量的实时通话

2,整套 API 灵活调用。一个 SDK 一套 API ,实现音视频通话、多人连麦全互动直播。创建频道、录制、白板、屏幕共享等均有独立接口

3,通话质量数据实时监控。 ·通话质量数据 ·终端用户分布地区 ·通话设备平台分布 ·网络状况分布

4,全网 256 加密,美国 HIPAA 安全认证。 ·全网采用 256 加密,数据传输绝对安全 ·符合美国最严格 HIPAA 加密安全认证,医疗和多行业适用 ·提供加密 API,可行业定制加密

用户

小米,陌陌,talkSpace,TAL好未来,途牛,春雨国际,海尔,LeVR

模块简述

agoraVideo 封装了声网直播的开放 SDK。声网直播功能强大。使用本模块前,需先到声网官方网站注册申请开发者账号,然后创建 app 获取 app id 等相关信息。本模块为收费模块,模块是对声网直播 SDK 的一层封装,以方便 APICloud 平台上的开发者,能迅速的集成声网直播功能。模块内涉及到的功能,以及产生的费用都是与声网之间的行为,与本模块及其开发者无关。模块开发者会定期维护更新优化升级该模块。

本模块分为两部分:

1,音频直播类:使用此类接口无需关心 UI 界面层,只需按照声网的规范要求设计自己的代码逻辑即可。

2,视频直播类:该类接口的 initVideoRect 相当于 open 了一个 frame。开发者可将直播视频区域当成一个 frame 层添加到 windows 上。然后自己再按照 UI 设计需求结合其它功能接口自定义一个功能 frame 层添加到视频层(模块层)上,以实现直播的功能。

注意:

在 iOS 平台上最低适配版本为 iOS8.0,云编译时需在右上角高级设置里将固件要求自定义最低适配版本号为8.0;

init

初始化引擎

init({params}, callback(ret))

params

appId:

  • 类型:字符串
  • 描述:在声网注册账号创建app后获取的id

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:        //布尔类型;true||false,是否初始化成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.init({
    appId:''
}, function(ret) {
    if (ret.status) {
        alert('初始化成功');
    } 
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

joinChannel

加入通话频道

joinChannel({params}, callback(ret, err))

params

channelKey:

  • 类型:字符串
  • 描述:(可选项)本参数为可选项,可不传。Agora 为应用程序开发者额外签发一个AppCertificate,开发者结合 Agora 提供的算法生成此ChannelKey,用于服务器端用户验证。一般来说使用AppID即可,对于安全有极高要求的使用者需要使用ChannelKey。

channelName:

  • 类型:字符串
  • 描述:标识通话的频道名称,长度在64字节以内的字符串,以下为支持的字符集范围(共89个字 符):a-z A-Z 0-9 空格 ! #$%& ()+, - :;<=. >? @[] ^_` {|} ~

uid:

  • 类型:数字
  • 描述:(可选项) 用户ID,32位无符号整数。建议设置范围:1到(2^32-1),并保证唯一性。如果不指定(即设为 0),SDK会自动分配一个,并在 onJoinChannelSuccess 回调方法中返 回,App层必须记住该返回值并维护,SDK不对该返回值进行维护。uid在SDK内部用32位无符号整数表示,由于Java不支持无符号整数,uid被当成32位有符号整数处理,对于过 大的整数, Java 会表示为负数,如有需要可以用(uid&0xffffffffL)转换成64位整数。

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
      status: true,       //布尔类型;true||false,是否成功进入通话频道
      channel: '123abc',  //字符串类型;频道名
      uid: 1234,          //数字类型;用户id
      elapsed: 100        //数字类型;从 joinChannel 开始到该事件产生的延迟(毫秒)
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code:       //数字类型;错误码,取值范围如下:
                //-2 :传递参数无效
                //-3 :初始化失败,或未初始化
                //-5 :SDK不能发起通话,可能是因为处于另一个通话中,或者创建频道失败
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.joinChannel({
    channelKey: '',
    channelName: '**************',
    uid: 
}, function(ret, err) {
    if (ret.status) {
        api.alert({msg:JSON.stringify(ret)});
    } else {
        api.alert({msg:JSON.stringify(err)});
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

leaveChannel

离开通话频道

leaveChannel(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,        //布尔类型;true||false,是否成功离开频道
    totalDuration: 1000, //数字类型;通话时长(s)
    txBytes: 12342546,   //数字类型;发送字节数( bytes)
    rxBytes: 12343545,   //数字类型;接收字节数( bytes)
    txKBitRate: 100,     //数字类型;发送码率( kbps),iOS 不支持此参数
    rxKBitRate: 123,     //数字类型;接收码率( kbps),iOS 不支持此参数
    cpuTotalUsage: 23,   //数字类型;当前系统的 CPU 使用率( %),iOS 不支持此参数
    cpuAPPUsage:25       //数字类型;当前应用程序的 CPU 使用率( %),iOS 不支持此参数
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.leaveChannel(function(ret) {
    if (ret.status) {
           api.alert({msg:JSON.stringify(ret)});
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

renewChannelKey

更新 ChannelKey。若已启用 ChannelKey 机制,一段时间后 ChannelKey 会失效。当 errorListener 回调 109 时,重新获取 ChannelKey,需调用本接口更新 ChannelKey,否则无法和服务器建立连接。

renewChannelKey({params}, callback(ret))

params

channelKey:

  • 类型:字符串
  • 描述:要更新的 ChannelKey

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true       //布尔类型;true||false,是否更新成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.renewChannelKey({
    channelKey:'*********'
}, function(ret) {
    if (ret.status) {
        api.alert({msg:'更新成功!'});
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

muteLocalAudioStream

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

muteLocalAudioStream({params}, callback(ret))

params

muted:

  • 类型:布尔
  • 描述:(可选项)是否静音
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true       //布尔类型;true||false,操作是否成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.muteLocalAudioStream({
    muted: true
}, function(ret) {
    if (ret.status) {
        api.alert({msg:'操作成功!'});
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

muteAllRemoteAudioStreams

静音所有远端用户/对所有远端用户取消静音,本方法用于允许/禁止播放远端用户的音频流。

muteAllRemoteAudioStreams({params}, callback(ret))

params

muted:

  • 类型:布尔
  • 描述:(可选项)是否静音
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true        //布尔类型;true||false,操作是否成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.muteAllRemoteAudioStreams({
    muted: true
}, function(ret) {
    if (ret.status) {
        api.alert({msg:});
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

muteRemoteAudioStream

静音指定远端用户/对指定远端用户取消静音,本方法用于允许/禁止播放远端用户的音频流。

muteRemoteAudioStream({params}, callback(ret))

params

uid:

  • 类型:数字
  • 描述:指定用户id

muted:

  • 类型:布尔
  • 描述:(可选项)是否静音
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true       //布尔类型;true||false,操作是否成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.muteRemoteAudioStream({
     uid: '*************',
    muted: true
}, function(ret) {
    if (ret.status) {
        alert('操作成功!');
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setEnableSpeakerphone

切换音频输出方式(扬声器、听筒)

setEnableSpeakerphone({params}, callback(ret))

params

enabled:

  • 类型:布尔
  • 描述:(可选项)是否为扬声器
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true        //布尔类型;true||false,是否切换成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.setEnableSpeakerphone({
    enabled: true
}, function(ret) {
    if (ret.status) {
        alert('切换成功!');
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

isSpeakerphoneEnabled

判断当前设备是否是扬声器状态

isSpeakerphoneEnabled(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true       //布尔类型;true||false,是否为扬声器状态
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.isSpeakerphoneEnabled(function(ret) {
    if (ret.status) {
        alert('扬声器');
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setSpeakerphoneVolume

设定扬声器音量

setSpeakerphoneVolume({params}, callback(ret))

params

volume:

  • 类型:数字
  • 描述:音量,最小为 0,最大为 255

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:        //布尔类型;true||false,是否设置成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.setSpeakerphoneVolume({
     volume : '10'
},function(ret) {
    if (ret.status) {
        alert('设置成功');
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

startAudioRecording

在通话中进行录音,该接口需要在 joinChannel 之后调用。leaveChannel 时会自动停止录音

startAudioRecording({params}, callback(ret))

params

filePath:

  • 类型:字符串
  • 描述:录音文件的路径(包含后缀,如:fs://agoraVideo/audio.wav),要求本地路径协议:fs://

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,   //布尔类型;true||false,录音是否成功
    realPath: ''    //字符串类型;录制音频文件绝对路径
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.startAudioRecording({
    filePath: 'fs://agoraVideo/audio.wav'
}, function(ret) {
    if (ret.status) {
        api.alert({msg:JSON.stringify(ret)});
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

stopAudioRecording

停止录音

stopAudioRecording({params}, callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true       //布尔类型;true||false,录音是否成功停止
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.stopAudioRecording(function(ret) {
    if (ret.status) {
        alert('停止录音');
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getCallId

获取当前的通话 ID

getCallId({params}, callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,      //布尔类型;true||false,是否获取成功
    callId: 124325     //字符串类型;本次通话 ID
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.getCallId(function(ret) {
    if (ret.status) {
        api.alert({msg:JSON.stringify(ret)});
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

rate

通话结束后为本次通话评分

rate({params}, callback(ret))

params

callId:

  • 类型:字符串
  • 描述:通过 getCallId 函数获取的通话 ID

rating:

  • 类型:数字
  • 描述:给通话的评分,取值范围:1-10

description:

  • 类型:字符串
  • 描述:(可选项)评分本次通话的描述,小于 800 字节

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:true       //布尔类型;true||false,是否评分成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.rate({
        callId: '4624625624',
        rating: 5,
        description : '很好很强大'
}, function(ret) {
    if (ret.status) {
        alert('评分成功');
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

complain

通话结束后对本次通话质量的投诉

complain({params}, callback(ret))

params

callId:

  • 类型:字符串
  • 描述:通过 getCallId 函数获取的通话 ID

description:

  • 类型:字符串
  • 描述:(可选项)本次通话投诉的描述,小于 800 字节

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true       //布尔类型;true||false,是否投诉成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.complain({
        callId: '24523452345',
        description : '有杂音'
},function(ret) {
    if (ret.status) {
        alert('投诉成功!');
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

monitorHeadsetEvent

监听耳机插拔事件,在加入通话前调用。若不监听,则拔掉耳机时不会自动停止播放声音。iOS 不支持本接口,拔掉耳机即自动停止声音外放

monitorHeadsetEvent({params})

params

monitor:

  • 类型:布尔
  • 描述:是否开启/关闭监听耳机插拔事件

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.monitorHeadsetEvent({
        monitor: true
});

可用性

Android系统

可提供的1.0.0及更高版本

monitorBluetoothHeadsetEvent

监听蓝牙耳机事件,在加入通话前调用。iOS 不支持本接口,拔掉耳机即自动停止声音外放

monitorBluetoothHeadsetEvent({params})

params

monitor:

  • 类型:布尔
  • 描述:是否开启/关闭监听蓝牙耳机插拔事件

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.monitorBluetoothHeadsetEvent({
        monitor: true
});

可用性

Android系统

可提供的1.0.0及更高版本

setPreferHeadset

设置插入耳机时的音频输出设备优先级,需在通话前调用,iOS 不支持本接口

setPreferHeadset({params})

params

enabled:

  • 类型:布尔
  • 描述:当本参数为 true 时表示耳机优先:插入耳机时,无论当前设置为耳机还是扬声器输出,都切换到耳机输出;当本参数为 false 时表示外放优先:插入耳机时,如果当前设置为耳机输出,则切换到耳机,如果当前设置为外放输出,则保留外放输出

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.setPreferHeadset({
        monitor: true
});

可用性

Android系统

可提供的1.0.0及更高版本

enableAudioVolumeIndication

启用说话者音量提示

enableAudioVolumeIndication({params}, callback(ret))

params

interval:

  • 类型:数字
  • 描述:指定音量提示的时间间隔,建议设置大于 200 毫秒。小于等于零时表示禁用音量提示功能,大于零时表示设置的提示间隔,单位为毫秒

smooth:

  • 类型:数字
  • 描述:(可选项)平滑系数
  • 默认:3

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true       //布尔类型;true||false,是否设置成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.enableAudioVolumeIndication({
        interval: '200',
        smooth: 3
}, function(ret) {
    if (ret.status) {
        alert('设置成功');
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setEncryptionSecret

启用内置的加密功能。

在加入频道之前,应用程序需调用本接口指定 secret 来启用内置的加密功能。

同一频道内的所有用户应设置相同的 secret。

当用户离开频道时,该频道的 secret 会自动清除。

如果未指定 secret 或将 secret 设置为空,则无法激活加密功能。

默认 AES-128-XTS 加密方式,若修改加密方式请调用 setEncryptionMode 接口。

setEncryptionSecret({params}, callback(ret))

params

secret:

  • 类型:字符串
  • 描述:加密密码

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true       //布尔类型;true||false,是否设置成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.setEncryptionSecret({
    secret : '123456789'
}, function(ret) {
    if (ret.status) {
        alert('设置成功');
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setEncryptionMode

设置内置的加密方案。

Agora 支持内置加密功能,默认使用 AES-128-XTS 加密方式。

通过本接口可设置使用其他加密方式。

同一频道内的所有用户必须设置相同的加密方式和 secret 才能进行通话。

setEncryptionMode({params}, callback(ret))

params

encryptionMode:

  • 类型:字符串
  • 描述:加密方式
  • 默认:aes-128-xts
  • 取值范围:
    • aes-128-xts: 128 位 AES 加密, XTS 模式
    • aes-256-xts: 256 位 AES 加密, XTS 模式

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true       //布尔类型;true||false,是否设置成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.setEncryptionMode({
    encryptionMode: 'aes-256-xts'
}, function(ret) {
    if (ret.status) {
        alert('设置成功');
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

startRecordingService

启动服务端录音功能

startRecordingService({params}, callback(ret))

params

recordingKey:

  • 类型:字符串
  • 描述:录音KEY

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true       //布尔类型;true||false,是否启动成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.startRecordingService({
        recordingKey : '123456'
},function(ret) {
    if (ret.status) {
        alert('启动成功');
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

stopRecordingService

停止服务端录音功能

stopRecordingService({params}, callback(ret))

params

recordingKey:

  • 类型:字符串
  • 描述:录音KEY

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true        //布尔类型;true||false,是否停止成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.stopRecordingService({
        recordingKey : '123456'
},function(ret) {
    if (ret.status) {
        alert('停止成功');
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setChannelProfile

设置频道通话模式。 Agora 引擎需知道应用程序的使用场景(例如群聊模式或主播模式),从而使用不同的优化手段。

setChannelProfile({params}, callback(ret))

params

profile:

  • 类型:字符串
  • 描述:指定频道的通话模式
  • 取值范围:
    • communication(通信模式:默认)
    • liveBroadcasting (直播模式)

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true       //布尔类型;true||false,是否设置成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.setChannelProfile({
        profile : 'communication'
}, function(ret) {
    if (ret.status) {
        alert('设置成功');
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

startAudioMixing

开启客户端本地混音。指定本地音频文件来和麦克风采集的音频流进行混音和替换(用音频文件替换麦克风采集的音频流),可以通过参数选择是否让对方听到本地播放的音频和指定循环播放的次数。 注:如需使用 startAudioMixing API,要求 Android 4.2 或以上设备,且 API Level>=16

startAudioMixing({params}, callback(ret))

params

filePath:

  • 类型:字符串
  • 描述:需要混音的本地音频文件名和文件路径,支持格式:mp3,aac,m4a,3gp,wav,flac

loopback:

  • 类型:布尔
  • 描述:(可选项)是否只有本地可以听到混音或替换后的音频流
  • 默认:true

replace:

  • 类型:布尔
  • 描述:(可选项)是否将音频文件内容替换本地录音的音频流
  • 默认:true

cycle:

  • 类型:数字
  • 描述:(可选项)指定音频文件循环播放的次数,为-1时表示无限循环
  • 默认:0

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true      //布尔类型;true||false,是否设置成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.startAudioMixing({
    filePath: 'fs://test.mp3',
    loopback: false,
    replace: false,
    cycle: -1
}, function(ret) {
    if (ret.status) {
        alert('设置成功');
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

stopAudioMixing

停止客户端本地混音

stopAudioMixing(callback(ret))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true       //布尔类型;true||false,是否停止成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.stopAudioMixing(function(ret) {
    if (ret.status) {
        alert('操作成功');
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setParameters

特有属性设置

setParameters({params},callback(ret))

params

options:

  • 类型:字符串
  • 描述:将特有参数组装为 json 字符串设置给 Agroa 引擎

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true       //布尔类型;true||false,是否设置成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.setParameters({
  options: ''
}, function(ret) {
    if (ret.status) {
        alert('设置成功');
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getParameters

获取 Agora 引擎特有属性值

getParameters({params},callback(ret))

params

parameter:

  • 类型:字符串
  • 描述:sdk options in json format

args:

  • 类型:字符串
  • 描述:sdk options in json format

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,  //布尔类型;true||false,是否获取成功
    result: ''     //字符串类型;获取的参数
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.getParameters(function(ret) {
    if (ret.status) {
        api.alert({msg:JSON.stringify(ret)});
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

warningListener

监听警告信息

warningListener({params}, callback(ret))

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否启动警告监听
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    errCode: 20     //数字类型;错误码,取值范围如下:
                    //20:AgoraRtc_Warn_Pending
                    //103:AgoraRtc_Warn_NoAvailableChannel
                    //104:AgoraRtc_Warn_LookupChannelTimeout
                    //105:AgoraRtc_Warn_LookupChannelRejected
                    //106:AgoraRtc_Warn_OpenChannelTimeout
                    //107:AgoraRtc_Warn_OpenChannelRejected
                    //1014:AgoraRtc_Warn_Adm_RuntimePlayoutWarning
                    //1016:AgoraRtc_Warn_Adm_RuntimeRecordingWarning
                    //1019:AgoraRtc_Warn_Adm_RecordAudioSilence
                    //1020:AgoraRtc_Warn_Adm_PlaybackMalfunction
                    //1021:AgoraRtc_Warn_Adm_RecordMalfunction
                    //1025:AgoraRtc_Warn_Adm_Interruption
                    //1026:AgoraRtc_Warn_Adm_RouteChange
                    //1051:AgoraRtc_Warn_Apm_Howling
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.warningListener({
     enable:true
},function(ret) {
    api.alert({msg:JSON.stringify(ret)});
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

errorListener

监听错误信息

errorListener({params}, callback(ret))

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否启动错误监听
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    errCode: 101    //数字类型;取值范围如下:
                    // 101:无效的 App ID
                    // 102:无效的频道名
                    // 105:查找频道失败,意味着服务器主动拒绝了请求
                    // 107:加入频道失败,意味着媒体服务器主动拒绝了请求
                    // 1001:加载媒体引擎失败
                    // 1002:打开本地音视频设备、启动通话失败
                    // 1003:打开本地摄像头失败
                    //以下是 iOS 平台上错误码
                    //0:AgoraRtc_Error_NoError
                    //1:AgoraRtc_Error_Failed
                    //2:AgoraRtc_Error_InvalidArgument
                    //3:AgoraRtc_Error_NotReady
                    //4:AgoraRtc_Error_NotSupported
                    //5:AgoraRtc_Error_Refused
                    //6:AgoraRtc_Error_BufferTooSmall
                    //7:AgoraRtc_Error_NotInitialized
                    //8:AgoraRtc_Error_InvalidView
                    //9:AgoraRtc_Error_NoPermission
                    //10:AgoraRtc_Error_TimedOut
                    //11:AgoraRtc_Error_Canceled
                    //12:AgoraRtc_Error_TooOften
                    //13:AgoraRtc_Error_BindSocket
                    //14:AgoraRtc_Error_NetDown
                    //15:AgoraRtc_Error_NoBufs
                    //16:AgoraRtc_Error_InitVideo
                    //17:AgoraRtc_Error_JoinChannelRejected
                    //18:AgoraRtc_Error_LeaveChannelRejected
                    //19:AgoraRtc_Error_AlreadyInUse
                    //101:AgoraRtc_Error_InvalidAppId
                    //102:AgoraRtc_Error_InvalidChannelName
                    //109:AgoraRtc_Error_ChannelKeyExpired
                    //110:AgoraRtc_Error_InvalidChannelKey
                    //111:AgoraRtc_Error_ConnectionInterrupted
                    //112:AgoraRtc_Error_ConnectionLost
                    //113:AgoraRtc_Error_NotInChannel
                    //114:AgoraRtc_Error_SizeTooLarge
                    //115:AgoraRtc_Error_BitrateLimit
                    //116:AgoraRtc_Error_TooManyDataStreams
                    //120:AgoraRtc_Error_DecryptionFailed
                    //1001:AgoraRtc_Error_LoadMediaEngine
                    //1002:AgoraRtc_Error_StartCall
                    //1003:AgoraRtc_Error_StartCamera
                    //1004:AgoraRtc_Error_StartVideoRender
                    //1005:AgoraRtc_Error_Adm_GeneralError
                    //1006:AgoraRtc_Error_Adm_JavaResource
                    //1007:AgoraRtc_Error_Adm_SampleRate
                    //1008:AgoraRtc_Error_Adm_InitPlayout
                    //1009:AgoraRtc_Error_Adm_StartPlayout
                    //1010:AgoraRtc_Error_Adm_StopPlayout
                    //1011:AgoraRtc_Error_Adm_InitRecording
                    //1012:AgoraRtc_Error_Adm_StartRecording
                    //1013:AgoraRtc_Error_Adm_StopRecording
                    //1015:AgoraRtc_Error_Adm_RuntimePlayoutError
                    //1017:AgoraRtc_Error_Adm_RuntimeRecordingError
                    //1018:AgoraRtc_Error_Adm_RecordAudioFailed
                    //1020:AgoraRtc_Error_Adm_Play_Abnormal_Frequency
                    //1021:AgoraRtc_Error_Adm_Record_Abnormal_Frequency
                    //1022:AgoraRtc_Error_Adm_Init_Loopback
                    //1023:AgoraRtc_Error_Adm_Start_Loopback
                    //1501:AgoraRtc_Error_Vdm_Camera_Not_Authorized
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.errorListener({
    enable:true
}, function(ret) {
    api.alert({msg:JSON.stringify(ret)});
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

audioQualityListener

声音质量监听

audioQualityListener({params}, callback(ret))

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否启动声音质量监听
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    uid: 123,  //数字类型;说话方的用户 ID
    quality:0, //数字类型;语音质量评分,取值范围如下:
               //0:AgoraRtc_Quality_Unknown
                  //1:QUALITY_EXCELLENT
                   //2:QUALITY_GOOD
                   //3:QUALITY_POOR
                   //4:QUALITY_BAD
                   //5:QUALITY_VBAD
                   //6:QUALITY_DOWN
    delay:25,  //数字类型;延迟(毫秒)
    lost:10     //数字类型;丢包率(百分比)
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.audioQualityListener({
    enable: true
},function(ret) {
    api.alert({msg:JSON.stringify(ret)});
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

audioVolumeListener

声音音量监听

audioVolumeListener({params}, callback(ret))

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否启动声音音量监听
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    speakers:[{          //JSON 对象;说话的用户数组
        uid: 123,       //数字类型;说话者的用户 ID
        volume: 100     //数字类型;说话者的音量( 0~255)
    }],    
    totalVolume:44     //数字类型;(混音后的)总音量( 0~255)
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.audioVolumeListener({
     enable: true
}, function(ret) {
     api.alert({msg:JSON.stringify(ret)});
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

userJoinedListener

用户加入频道监听

userJoinedListener({params}, callback(ret))

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否启动用户加入频道监听
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    uid: 1234,    //数字类型;用户 ID
    elapsed: 23   //数字类型;joinChannel 开始到该回调触发的延迟(毫秒)
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.userJoinedListener({
        enable: true
},function(ret) {
       api.alert({msg:JSON.stringify(ret)});
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

rejoinChannelListener

再次进入频道监听。

有时候由于网络原因,客户端可能会和服务器失去连接, SDK 会进行自动重连,自动重连成功后触发此监听

rejoinChannelListener({params}, callback(ret))

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否启用再次进入频道监听
  • 默认:true

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,       //布尔类型;是否网络链接中断
    channel: 'apicloud',//字符串类型;频道名
    uid: 1233444,       //数字类型;用户id
    elapsed:100         //数字类型;从 joinChannel 开始到该事件产生的延迟(毫秒)
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.rejoinChannelListener({
     enable: true
}, function(ret) {
     api.alert({msg:JSON.stringify(ret)});
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

userOfflineListener

用户离开频道监听

userOfflineListener({params}, callback(ret))

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否启用户离开频道监听
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    uid: 1234,    //数字类型;用户 ID
    reason: 0,    //数字类型;离线原因,取值范围如下:
                 //0:用户主动离开
                 //1:因过长时间收不到对方数据包,超时掉线。注意:由于 SDK 使用的是不可靠通道,也有可能对方主动离开本方没收到对方离开消息而误判为超时掉线
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.userOfflineListener({
     enable: true
}, function(ret) {
     api.alert({msg:JSON.stringify(ret)});
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

userMuteAudioListener

用户静音监听

userMuteAudioListener({params}, callback(ret))

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否启用户静音监听
  • 默认:true

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    uid:1234,    //数字类型;用户 ID
    muted: true  //布尔类型;为 true 表示该用户将音频静音,反之则该用户取消了音            频静音
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.userMuteAudioListener({
      enable: true
}, function(ret) {
      api.alert({msg:JSON.stringify(ret)});
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

rtcStatsListener

统计数据监听,每两秒触发一次

rtcStatsListener({params}, callback(ret))

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否启统计数据监听
  • 默认:true

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    totalDuration: 34, //数字类型;通话时长(秒)
    txBytes: 900,      //数字类型;发送字节数( bytes)
    rxBytes: 900,      //数字类型;接收字节数( bytes)
    txKBitRate: 78,    //数字类型;发送码率( kbps),iOS 平台不支持
    rxKBitRate: 56,    //数字类型;接收码率( kbps),iOS 平台不支持
    cpuTotalUsage: 23, //数字类型;当前系统的 CPU 使用率( %),iOS 平台不支持
    cpuAPPUsage: 34,   //数字类型;当前应用程序的 CPU 使用率( %),iOS 平台不支持
    users: 134         //数字类型;当前频道内人数
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.rtcStatsListener({
    enable: true
}, function(ret) {
    api.alert({msg:JSON.stringify(ret)});
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

lastmileQualityListener

报告网络质量监听。不在通话中时,不定期触发,向应用程序上报当前网络连接质量

lastmileQualityListener({params}, callback(ret))

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否启用报告网络质量监听
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    quality:1 //数字类型;语音质量评分,取值范围如下:
                  //1:QUALITY_EXCELLENT
                   //2:QUALITY_GOOD
                   //3:QUALITY_POOR
                   //4:QUALITY_BAD
                   //5:QUALITY_VBAD
                   //6:QUALITY_DOWN
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.lastmileQualityListener({
    enable: true
},function(ret) {
    api.alert({msg:JSON.stringify(ret)});
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

connectionInterruptedListener

网络连接中断监听。iOS 平台不支持本接口

connectionInterruptedListener({params}, callback(ret))

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否启用网络连接中断监听
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true        //布尔类型;是否网络链接中断
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.connectionInterruptedListener({
     enable: true
},function(ret) {
     alert(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

connectionLostListener

网络连接丢失监听。客户端和服务器失去了网络连接,并且尝试自动重连一段时间(默认 10 秒) 后仍未连上。iOS 平台不支持本接口

connectionLostListener({params}, callback(ret))

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否启用网络连接丢失监听
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:true        //布尔类型;是否网络链接中断
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.connectionLostListener({
    enable : true
}, function(ret) {
    alert(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

networkQualityListener

网络质量监听

networkQualityListener({params}, callback(ret))

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否启用报告网络质量监听
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    uid: 123,      //数字类型;网络质量监听用户id:
    txQuality: 0,  //数字类型;发送网络质量,取值范围如下:
                        //0:AgoraRtc_Quality_Unknown
                        //1:QUALITY_EXCELLENT
                        //2:QUALITY_GOOD
                        //3:QUALITY_POOR
                        //4:QUALITY_BAD
                        //5:QUALITY_VBAD
                        //6:QUALITY_DOWN
    rxQuality: 0  //数字类型;接受网络质量,取值范围如下:
                        //0:AgoraRtc_Quality_Unknown
                        //1:QUALITY_EXCELLENT
                        //2:QUALITY_GOOD
                        //3:QUALITY_POOR
                        //4:QUALITY_BAD
                        //5:QUALITY_VBAD
                        //6:QUALITY_DOWN
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.lastmileQualityListener({
    enable: true
}, function(ret) {
    api.alert({msg:JSON.stringify(ret)});
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setLogFile

设置 agora 引擎的输出 log 文件。

引擎运行时产生的所有 log 将写入该文件。

应用程序必须保证指定的目录存在而且可写。

setLogFile({params}, callback(ret))

params

filePath:

  • 类型:字符串
  • 描述:日志文件的全路径(包含后缀,如:fs://agoraVideo/log.txt),要求本地路径协议:fs://

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,   //布尔类型;true||false,是否设置成功
    realPath: ''    //字符串类型;日志文件绝对路径
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.setLogFile({
    filePath: 'fs://log.txt'
}, function(ret) {
    if (ret.status) {
        api.alert({msg:JSON.stringify(ret)});
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

initVideoRect

初始化视频(本地、远程)区域

initVideoRect({params})

params

uid:

  • 类型:数字类型
  • 描述:用户id,当为 0 时表示打开本地视频播放区域

rect:

  • 类型:JSON 对象
  • 描述:(可选项)视频区域的位置及尺寸
  • 内部字段:
{
    x: 0,   //(可选项)数字类型;视频区域左上角的 x 坐标(相对于所属的 Window 或 Frame);默认:0
    y: 0,   //(可选项)数字类型;视频区域左上角的 y 坐标(相对于所属的 Window 或 Frame);默认:0
    w: 320, //(可选项)数字类型;视频区域的宽度;默认:屏幕的宽
    h: 480  //(可选项)数字类型;视频区域的高度;默认:屏幕的高
}

fixedOn:

  • 类型:字符串类型
  • 描述:(可选项)模块视图添加到指定 frame 的名字(只指 frame,传 window 无效)
  • 默认:模块依附于当前 window

fixed:

  • 类型:布尔
  • 描述:(可选项)模块是否随所属 window 或 frame 滚动
  • 默认值:true(不随之滚动)

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.initVideoRect({
    uid:123456,
       rect: {
        x: 0,
        y: 0,
        w: 320,
        h: 300
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

enableVideo

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

enableVideo(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: ,      //布尔类型;true||false,是否成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.enableVideo( function(ret) {
    if (ret.status) {
        alert(JSON.stringify(ret));
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

disableVideo

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

disableVideo(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: ,      //布尔类型;true||false,是否成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.disableVideo(function(ret) {
    if (ret.status) {
        alert(JSON.stringify(ret));
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

startPreview

该方法用于启动本地视频预览。在开启预览前,必须先调用 setupLocalVideo 设置预览窗口及 属性,且必须调用 enableVideo 开启视频功能。如果在调用 joinChannel 进入频道之前调用了 startPreview 启动本地视频预览,在调用 leaveChannel 退出频道之后本地预览仍然处于启动 状态,如需要关闭本地预览,需要调用 stopPreview

startPreview(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: ,      //布尔类型;true||false,是否成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.startPreview(function(ret) {
    if (ret.status) {
        alert(JSON.stringify(ret));
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

stopPreview

该方法用于停止本地视频预览

stopPreview(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: ,      //布尔类型;true||false,是否成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.stopPreview(function(ret) {
    if (ret.status) {
        alert(JSON.stringify(ret));
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setVideoProfile

该方法设置视频编码属性(Profile)。每个属性对应一套视频参数,如分辨率、帧率、码率等。 当设备的摄像头不支持指定的分辨率时, SDK 会自动选择一个合适的摄像头分辨率,但是编 码分辨率仍然用 setVideoProfile 指定的

setVideoProfile({params},callback(ret))

params

profile:

  • 类型:字符串类型
  • 描述:视频属性
  • 取值范围:
    • 120P: 分辨率(宽 x 高) 160x120 帧率(fps) 15
    • 120P_3: 分辨率(宽 x 高) 120x120 帧率(fps) 15
    • 180P: 分辨率(宽 x 高) 320x180 帧率(fps) 15
    • 180P_3: 分辨率(宽 x 高) 180x180 帧率(fps) 15
    • 180P_4: 分辨率(宽 x 高) 240x180 帧率(fps)15 比特率(kbps)120;暂仅支持iOS平台
    • 240P: 分辨率(宽 x 高) 320x240 帧率(fps) 15
    • 240P_3: 分辨率(宽 x 高) 240x240 帧率(fps) 15
    • 240P_4: 分辨率(宽 x 高) 424x240 帧率(fps) 15
    • 360P: 分辨率(宽 x 高) 640x360 帧率(fps) 15
    • 360P_3: 分辨率(宽 x 高) 360x360 帧率(fps) 15
    • 360P_4: 分辨率(宽 x 高) 640x360 帧率(fps) 30
    • 360P_6: 分辨率(宽 x 高) 360x360 帧率(fps) 30
    • 360P_7: 分辨率(宽 x 高) 480x360 帧率(fps) 15
    • 360P_8: 分辨率(宽 x 高) 480x360 帧率(fps) 30
    • 360P_9: 分辨率(宽 x 高) 480x360 帧率(fps) 15 比特率(kbps)800;暂仅支持iOS平台
    • 480P: 分辨率(宽 x 高) 640x480 帧率(fps) 15
    • 480P_3: 分辨率(宽 x 高) 480x480 帧率(fps) 15
    • 480P_4: 分辨率(宽 x 高) 640x480 帧率(fps) 30
    • 480P_6: 分辨率(宽 x 高) 480x480 帧率(fps) 30
    • 480P_8: 分辨率(宽 x 高) 848x480 帧率(fps) 15
    • 480P_9: 分辨率(宽 x 高) 848x480 帧率(fps) 30
    • 720P: 分辨率(宽 x 高) 1280x720 帧率(fps) 15
    • 720P_3: 分辨率(宽 x 高) 1280x720 帧率(fps) 30
    • 720P_5: 分辨率(宽 x 高) 960x720 帧率(fps) 15
    • 720P_6: 分辨率(宽 x 高) 960x720 帧率(fps) 30
    • 1080P: 分辨率(宽 x 高) 1920x1080 帧率(fps) 15 比特率(kbps)2080;暂仅支持iOS平台
    • 1080P_3: 分辨率(宽 x 高) 1920x1080 帧率(fps) 30 比特率(kbps)3150;暂仅支持iOS平台
    • 1080P_5: 分辨率(宽 x 高) 1920x1080 帧率(fps) 15 比特率(kbps)4780;暂仅支持iOS平台
    • 1440P: 分辨率(宽 x 高) 2560x1440 帧率(fps) 30 比特率(kbps)4850;暂仅支持iOS平台
    • 1440P_2: 分辨率(宽 x 高) 2560x1440 帧率(fps) 60 比特率(kbps)7350;暂仅支持iOS平台
    • 4K: 分辨率(宽 x 高) 3840x2160 帧率(fps) 30 比特率(kbps)8190;暂仅支持iOS平台
    • 4K_3: 分辨率(宽 x 高) 3840x2160 帧率(fps) 60 比特率(kbps)13500;暂仅支持iOS平台

swapWidthAndHeight:

  • 类型:数字类型
  • 描述:是否交换宽和高
  • 默认值:false

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: ,      //布尔类型;true||false,是否成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.setVideoProfile( {
        profile:'120P',
        swapWidthAndHeight:true
},function(ret) {
        if (ret.status) {
            alert(JSON.stringify(ret));
        }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setupLocalVideo

该方法设置本地视频显示信息,通常在初始化后调用该方法进行本地视频设置,然后再加入频道。

setupLocalVideo({params},callback(ret))

params

renderMode:

  • 类型:字符串类型
  • 描述:视频显示模式
  • 取值范围:
    • RENDER_MODE_HIDDEN : 如果视频尺寸与显示视窗尺寸不一致,则视频流会按照显示视窗比 例进行周边裁剪或图像拉伸后填满视窗。
    • RENDER_MODE_FIT: 如果视频尺寸与显示视窗尺寸不一致,在保持长宽比的前提下,将视频 进行缩放后填满视窗
    • RENDER_MODE_ADAPTIVE:如果自己和对方都是竖屏,或者如果自己和对方都是横屏使用 RENDER_MODE_HIDDEN;如果对方和自己一个竖屏一个横屏,则使用 RENDER_MODE_FIT

uid:

  • 类型:数字类型
  • 描述:本地用户id,与 joinchannel 方法中的 uid 保持一致

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: ,      //布尔类型;true||false,是否成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.setupLocalVideo( {
        renderMode:'RENDER_MODE_HIDDEN'
},function(ret) {
        if (ret.status) {
            alert(JSON.stringify(ret));
        }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setupRemoteVideo

该方法绑定远程用户和显示视图,即设定 uid 指定的用户用哪个视图显示。调用该接口时需要 指定远程视频的 uid

setupRemoteVideo({params},callback(ret))

params

renderMode:

  • 类型:字符串类型
  • 描述:视频显示模式
  • 取值范围:
    • RENDER_MODE_HIDDEN : 如果视频尺寸与显示视窗尺寸不一致,则视频流会按照显示视窗比 例进行周边裁剪或图像拉伸后填满视窗。
    • RENDER_MODE_FIT: 如果视频尺寸与显示视窗尺寸不一致,在保持长宽比的前提下,将视频 进行缩放后填满视窗
    • RENDER_MODE_ADAPTIVE:如果自己和对方都是竖屏,或者如果自己和对方都是横屏使用 RENDER_MODE_HIDDEN;如果对方和自己一个竖屏一个横屏,则使用 RENDER_MODE_FIT

uid:

  • 类型:数字类型
  • 描述:远端用户id

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: ,      //布尔类型;true||false,是否成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.setupRemoteVideo( {
        renderMode:'RENDER_MODE_HIDDEN',
        uid:1
},function(ret) {
        if (ret.status) {
            alert(JSON.stringify(ret));
        }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

switchCamera

该方法用于在前置/后置摄像头间切换

switchCamera({params},callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: ,      //布尔类型;true||false,是否成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.switchCamera(function(ret) {
        if (ret.status) {
            alert(JSON.stringify(ret));
        }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

enableLocalVideo

禁用/启用本地视频功能。该方法用于只看不发的视频场景。该方法不需要本地有摄像头

enableLocalVideo({params},callback(ret))

params

enabled:

  • 类型:布尔类型
  • 描述:是否启用本地视频
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: ,      //布尔类型;true||false,是否成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.enableLocalVideo( {
        enabled:true
},function(ret) {
        if (ret.status) {
            alert(JSON.stringify(ret));
        }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

muteLocalVideoStream

暂停/恢复发送本地视频流。该方法用于允许/禁止往网络发送本地视频流

muteLocalVideoStream({params},callback(ret))

params

muted:

  • 类型:布尔类型
  • 描述:是否禁止发送本地视频流
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: ,      //布尔类型;true||false,是否成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.muteLocalVideoStream( {
        muted:true
},function(ret) {
        if (ret.status) {
            alert(JSON.stringify(ret));
        }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

muteAllRemoteVideoStreams

暂停/恢复所有人视频流。本方法用于允许/禁止播放所有人的视频流

muteAllRemoteVideoStreams({params},callback(ret))

params

muted:

  • 类型:布尔类型
  • 描述:是否停止播放接收到的所有视频流
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: ,      //布尔类型;true||false,是否成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.muteAllRemoteVideoStreams( {
        muted:true
},function(ret) {
        if (ret.status) {
            alert(JSON.stringify(ret));
        }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

muteRemoteVideoStream

暂停/恢复指定远端视频流。本方法用于允许/禁止播放指定远端视频流。

muteRemoteVideoStream({params},callback(ret))

params

uid:

  • 类型:数字类型
  • 描述:用户id

muted:

  • 类型:布尔类型
  • 描述:是否停止播放接收到的视频流
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: ,      //布尔类型;true||false,是否成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.muteRemoteVideoStream( {
        uid:'1,
        muted:true
},function(ret) {
        if (ret.status) {
            alert(JSON.stringify(ret));
        }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

firstLocalVideoFrameListener

提示第一帧本地视频画面已经显示在屏幕上

firstLocalVideoFrameListener({params}, callback(ret))

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否启用第一帧本地视频画面已经显示在屏幕上的回调监听
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    width:        //数字类型;视频流宽(像素)
    height:       //数字类型;视频流高(像素)
    elapsed:      //数字类型;加入频道开始到该回调触发的延迟(毫秒)
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.firstLocalVideoFrameListener({
        enable : true
},function(ret) {
       alert(JSON.stringify(ret));
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

firstRemoteVideoFrameListener

第一帧远程视频显示在视图回调监听

firstRemoteVideoFrameListener({params}, callback(ret))

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否启用第一帧远程视频显示在视图回调监听
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    uid:         //数字类型;用户id
    width:       //数字类型;视频流宽(像素)
    height:      //数字类型;视频流高(像素)
    elapsed:     //数字类型;加入频道开始到该回调触发的延迟(毫秒)
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.firstRemoteVideoFrameListener({
        enable : true
},function(ret) {
       alert(JSON.stringify(ret));
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

firstRemoteVideoDecodedListener

远端视频接收解码回调,收到第一帧远程视频流并解码成功时,触发此调用

firstRemoteVideoDecodedListener({params}, callback(ret))

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否启用远端视频接收解码回调
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    uid:             //数字类型;用户id
    width:          //数字类型;视频流宽(像素)
    height:           //数字类型;视频流高(像素)
    elapsed:        //数字类型;加入频道开始到该回调触发的延迟(毫秒)
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.firstRemoteVideoDecodedListener({
        enable : true
},function(ret) {
       alert(JSON.stringify(ret));
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

userMuteVideoListener

其他用户停止/重启视频回调,iOS 暂不支持本接口

userMuteVideoListener({params}, callback(ret))

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否启用其他用户停止/重启视频回调
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    uid:        //数字类型;用户id
    muted:      //数字类型;True:该用户暂停了视频发送,False:该用户恢复了视频发送
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.userMuteVideoListener({
        enable : true
},function(ret) {
       alert(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

userEnableVideoListener

其他用户启用/关闭视频回调,iOS 暂不支持本接口

userEnableVideoListener({params}, callback(ret))

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否启用其他用户启用/关闭视频回调
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    uid:        //数字类型;用户id
    muted:      //数字类型;True:该用户启用了视频功能,False:该用户关闭了视频功能
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.userEnableVideoListener({
        enable : true
},function(ret) {
       alert(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

localVideoStatListener

本地视频统计回调,报告更新本地视频统计信息,该回调函数每两秒触发一次

localVideoStatListener({params}, callback(ret))

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否启用本地视频统计回调
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    sentBitrate:             //数字类型;(上次统计后)发送的码率(kbps)
    sentFrameRate:           //数字类型;(上次统计后)发送的帧率(fps)
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.localVideoStatListener({
        enable : true
},function(ret) {
       alert(JSON.stringify(ret));
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

remoteVideoStatListener

远端视频统计回调,报告更新远端视频统计信息,该回调函数每两秒触发一次。

remoteVideoStatListener({params}, callback(ret))

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否启用远端视频统计回调
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    uid:                //数字类型;用户id
    width:              //数字类型;视频流宽(像素)
    height:               //数字类型;视频流高(像素)
    receivedBitrate:    //数字类型;接收码率(kbps)
    receivedFrameRate:  //数字类型;接收帧率(fps)
    delay:              //数字类型;延时(毫秒)
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.remoteVideoStatListener({
        enable : true
},function(ret) {
       alert(JSON.stringify(ret));
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

cameraReadyListener

摄像头启用回调,提示已成功打开摄像头,可以开始捕获视频。如果摄像头打开失败,可在 onError()中处理相应错误。 iOS 平台暂不支持本接口

cameraReadyListener({params}, callback(ret))

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否启用摄像头启用回调
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:             //布尔类型;是否启用摄像头
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.cameraReadyListener({
        enable : true
},function(ret) {
       alert(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

videoStoppedListener

视频功能停止回调。 iOS 平台暂不支持本接口

videoStoppedListener({params}, callback(ret))

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否启用视频功能停止回调
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:             //布尔类型;是否停止摄像头
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.videoStoppedListener({
        enable : true
},function(ret) {
       alert(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

streamMessageListener

接收到对方数据流消息的回调

streamMessageListener({params}, callback(ret))

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否启用接收到对方数据流消息的回调
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    uid:         //数字类型;用户id
    streamId:    //数字类型;数据流 ID
    data:        //字符串类型;接收到的数据
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.streamMessageListener({
        enable : true
},function(ret) {
       alert(JSON.stringify(ret));
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

streamMessageErrorListener

接收对方数据流消息错误的回调

streamMessageErrorListener({params}, callback(ret))

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否启用接收对方数据流消息错误的回调
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    uid:         //数字类型;用户id
    streamId:    //数字类型;数据流 ID
    errMsg:      //字符串类型;错误信息
    missed:      //数字类型;丢失的消息数量
    cached:      //数字类型;数据流中断时,后面缓存的消息数量
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.streamMessageErrorListener({
        enable : true
},function(ret) {
       alert(JSON.stringify(ret));
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

audioMixingFinishedListener

伴奏已播放结束的回调,iOS 平台暂不支持本接口

audioMixingFinishedListener({params}, callback(ret))

params

enable:

  • 类型:布尔
  • 描述:(可选项)是否启用伴奏已播放结束的回调
  • 默认:true

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:             //数字类型;是否结束
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.audioMixingFinishedListener({
        enable : true
},function(ret) {
       alert(JSON.stringify(ret));
});

可用性

Android系统

可提供的1.0.0及更高版本

setClientRole

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

setClientRole({params}, callback(ret))

params

role:

  • 类型:字符串
  • 描述:直播的用户角色
  • 默认:BROADCASTER
  • 取值范围:
    • BROADCASTER:主播用户
    • AUDIENCE:观众用户

permissionKey:

  • 类型:字符串
  • 描述:(可选项)permission key of role change

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: ,      //布尔类型;true||false,是否成功
}

示例代码

var agoraVoice = api.require('agoraVideo');
agoraVideo.setClientRole({
    role: 'AUDIENCE'
}, function(ret) {
    if (ret.status) {
        alert(JSON.stringify(ret));
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

closePreview

关闭视频预览区域

closePreview({params})

params

uid:

  • 类型:数字
  • 描述:指定用户id

示例代码

var agoraVoice = api.require('agoraVideo');
agoraVideo.closePreview({uid:0});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

resetVideoRect

重设视频预览区域

resetVideoRect({params})

params

rect:

  • 类型:JSON 对象
  • 描述:(可选项)视频区域的位置及尺寸
  • 内部字段:
{
    x: 0,   //(可选项)数字类型;视频区域左上角的 x 坐标(相对于所属的 Window 或 Frame);默认:原值
    y: 0,   //(可选项)数字类型;视频区域左上角的 y 坐标(相对于所属的 Window 或 Frame);默认:原值
    w: 320, //(可选项)数字类型;视频区域的宽度;默认:原值
    h: 480  //(可选项)数字类型;视频区域的高度;默认:原值
}

animation:

  • 类型:布尔
  • 描述:重设过程中是否带0.3秒的动画
  • 默认:false

uid:

  • 类型:数字
  • 描述:指定用户id

示例代码

var agoraVoice = api.require('agoraVideo');
agoraVideo.resetVideoRect({
    rect:{
        x:10,
        y:10,
        w:300,
        h:280
    },
    animation: true
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setRemoteVideoStream

设置远程视频流质量

setRemoteVideoStream({params},callback(ret))

params

uid:

  • 类型:数字
  • 描述:指定用户id

type:

  • 类型:字符串
  • 描述:视频质量
  • 默认:medium
  • 取值范围:
    • medium:普通
    • high:高质量
    • low:低质量

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: ,      //布尔类型;true||false,是否成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.setRemoteVideoStream( {
        type:low,
        uid:0
},function(ret) {
        if (ret.status) {
            alert(JSON.stringify(ret));
        }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

enableWebSdkInteroperability

打开与Web SDK的互通

enableWebSdkInteroperability({params},callback(ret))

params

enabled:

  • 类型:布尔
  • 描述:是否已打开与Agora Web SDK的互通:

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: ,      //布尔类型;true||false,是否成功
}

示例代码

var agoraVideo = api.require('agoraVideo');
agoraVideo.enableWebSdkInteroperability( {
    enabled:true    
},function(ret) {
        if (ret.status) {
            alert(JSON.stringify(ret));
        }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本