插件信息类。
public class io.agora.hy.extension.ExtensionManager
该类包含以下成员:
CMakeLists.txt
文件中的 target link library 名称public static final String EXTENSION_NAME
PROVIDER_NAME
public static final String EXTENSION_VENDOR_NAME
extension_provider.h
文件中定义的 audio filter 名称public static final String EXTENSION_AUDIO_FILTER_NAME
添加插件。
public void addExtension(String providerName) {
mExtensionList.add(providerName);
}
该方法是 RtcEngineConfig 类的成员函数。
参数
参数名 | 参数描述 |
---|---|
providerName | 插件的 so 或 aar 文件名 |
启用/禁用插件。
public abstract int enableExtension(String provider, String extension, boolean enable);
参数
参数名 | 参数描述 | 你需要传入的值 |
---|---|---|
provider | 提供插件的服务商名称 | ExtensionManager.EXTENSION_VENDOR_NAME |
extension | 插件的名称 | ExtensionManager.EXTENSION_AUDIO_FILTER_NAME |
enable | 是否启用插件 | true : 启用插件。false : 禁用插件。 |
返回值
设置插件的属性。需要在启用插件后调用。
public abstract int setExtensionProperty(String provider, String extension, String key, String value);
参数
参数名 | 参数描述 | 你需要传入的值 |
---|---|---|
provider | 提供插件的服务商名称 | ExtensionManager.EXTENSION_VENDOR_NAME |
extension | 插件的名称 | ExtensionManager.EXTENSION_AUDIO_FILTER_NAME |
key | 插件属性的 Key | 详见 key-value 列表 |
value | 插件属性 Key 对应的值 | 详见 key-value 列表 |
返回值
设置插件服务商的属性。
public abstract int setExtensionProviderProperty(String provider, String key, String value)
该方法需要在 enableExtension 之后、且启用音频(enableAudio/enableLocalAudio)或启用视频(enableVideo/enableLocalVideo)之前调用。
参数
参数名 | 参数描述 |
---|---|
provider | 提供插件的服务商名称 |
key | 插件事件的 Key,详见 key-value 列表 |
value | 插件事件 Key 对应的值,详见 key-value 列表 |
返回值
插件事件回调。
void onEvent(String provider, String extension, String key, String value);
该回调是 IMediaExtensionObserver
类的成员。为监听插件事件,你需要注册该回调。
参数
参数名 | 参数描述 |
---|---|
provider | 提供插件的服务商名称 |
extension | 插件的名称 |
key | 插件事件的 Key,详见 key-value 列表 |
value | 插件事件 Key 对应的值,详见 key-value 列表 |
启用/禁用插件。
- (int)enableExtensionWithVendor:(NSString * __nonnull)provider extension:(NSString * __nonnull)extension enabled:(BOOL)enabled;
参数
参数名 | 参数描述 | 你需要传入的值 |
---|---|---|
provider | 提供插件的服务商名称 | Hy |
extension | 插件的名称 | IstIts |
enabled | 是否启用插件 | YES : 启用插件。NO : 禁用插件。 |
返回值
设置插件的属性。需要在启用插件后调用。
- (int)setExtensionPropertyWithVendor:(NSString * __nonnull)provider extension:(NSString * __nonnull)extension key:(NSString * __nonnull)key value:(NSString * __nonnull)value;
参数
参数名 | 参数描述 | 你需要传入的值 |
---|---|---|
provider | 提供插件的服务商名称 | Hy |
extension | 插件的名称 | IstIts |
key | 插件属性的 Key | 详见 key-value 列表 |
value | 插件属性 Key 对应的值 | 详见 key-value 列表 |
返回值
设置插件服务商的属性。
- (int) setExtensionProviderPropertyWithVendor:(NSString * __nonnull)provider key:(NSString * __nonnull)key value:(NSString * __nonnull)value;
该方法需要在 enableExtensionWithVendor 之后、且启用音频(enableAudio/enableLocalAudio)或启用视频(enableVideo/enableLocalVideo)之前调用。
参数
参数名 | 参数描述 |
---|---|
provider | 提供插件的服务商名称 |
key | 插件事件的 Key,详见 key-value 列表 |
value | 插件事件 Key 对应的值,详见 key-value 列表 |
返回值
插件事件回调。
- (void)onEvent:(NSString * __nullable)provider
extension:(NSString * __nullable)extension
key:(NSString * __nullable)key
value:(NSString * __nullable)value;
该回调是 AgoraMediaFilterEventDelegate
类的成员。为监听插件事件,你需要注册该回调。
参数
参数名 | 参数描述 |
---|---|
provider | 提供插件的服务商名称 |
extension | 插件的名称 |
key | 插件事件的 Key,详见 key-value 列表 |
value | 插件事件 Key 对应的值,详见 key-value 列表 |
IRtcEngine
类的 loadExtensionProviderIRtcEngine
类的 enableExtensionIRtcEngine
类的 setExtensionPropertyIRtcEngineEventHandler
类的 onExtensionEventkey | 描述 | value |
---|---|---|
start_listening |
启动倾听 | 详见下面的示例 |
flush_listening |
结束音频获取结果 | 无 |
stop_listening |
停止倾听 | 无 |
start_listening 示例
{
// 公共对象。必选。
"common": {
// 应用标识。必选。
"app_id": "aaa",
// API密钥。必选。
"api_key": "bbb",
// API秘密。必选。
"api_secret": "ccc"
},
// 语音转写对象。必选。
"ist": {
// URI。必选。
"uri": "wss://ist-api.xfyun.cn/v2/ist",
// 请求对象。必选。
"req": {
// 业务对象。必选。
"business": {
// 语种。必选。"中译英":"zh_cn";"英译中":"zh_cn"。
"language": "zh_cn",
// 口音。必选。"中译英":"mandarin";"英译中":"mandarin"。
"accent": "mandarin",
// 领域。必选。"中译英":"ist_ed_open";"英译中":"ist_ed_open"。
"domain": "ist_ed_open",
// 语言类型(Int)。取值范围:
// 1:中英文模式,中文英文均可识别。(默认)
// 3:英文模式,只识别出英文
// "中译英":1;"英译中":3。
"language_type": 1,
// 动态修正。
"dwa": "wpgs"
}
}
},
// 文本翻译对象。
"its": {
// URI。必选。
"uri": "https://itrans.xfyun.cn/v2/its",
// 请求对象。必选。
"req": {
// 业务对象。必选。
"business": {
// 源语种。必选。"中译英":"cn";"英译中":"en"。
"from": "cn",
// 目标语种。必选。"中译英":"en";"英译中":"cn"。
"to": "en"
}
}
}
}
log_lv
,设置日志等级。key | 描述 | value |
---|---|---|
error |
错误类型 | 包含以下字段:err_code :Int 型,错误码tip :String 型,提示内容 |
ist_result |
语音转写结果 | 详见 ist_result 示例 |
its_result |
文本翻译结果 | 详见 its_result 示例 |
end |
会话结束的最后事件 | 无 |
ist_result 示例
{
// 错误码,0标识成功。
"code": 0,
// 错误描述
"message": "success",
// 每次会话的唯一标识
"sid": "ist000d6ed7@dx17efb57a7faa497822",
// 识别数据
"data": {
// 识别结果是否结束标识:1:识别中;2:识别结束。
"status": 1,
// 识别结果
"result": {
// 返回结果的序号
"sn": 6,
// 是否是最后一片结果
"ls": false,
// 子句开始时刻,ms。
"bg": 1810,
// 子句结束时刻,ms。
"ed": 3840,
// 开启 wpgs 会有此字段,取值为 "apd"时表示该片结果是追加到前面的最终结果,取值为"rpl" 时表示替换前面的部分结果,替换范围为rg字段。
"pgs": "rpl",
// 替换范围,开启wpgs会有该字段。
"rg": [3, 5],
// 是否子句结束
"sub_end": true,
// 词组
"ws": [
{
// 词相对子句开始时刻,10ms。
"bg": 61,
// 词多候选组
"cw": [
{
"rl": 0,
// 分数
"sc": 0.0,
// 词
"w": "。",
// 词相对子句开始时刻,10ms。
"wb": 61,
"wc": 0.0,
// 词相对子句结束时刻,10ms。
"we": 61,
// 词语的属性,其中n表示正常词、s表示顺滑、p表示标点、g表示分段。
"wp": "p"
}
]
},
{
"bg": 61,
"cw": [
{
"rl": 0,
"sc": 0.0,
"w": "你好",
"wb": 61,
"wc": 0.0,
"we": 112,
"wp": "s"
}
]
}
]
}
},
// 业务上下文id,唯一标识一路完整会话(包括重连成功的请求)。
"context_id": "ZHhpc3QIIKwVpJc3cuhGrtbTFj2t"
}
its_result 示例
{
// 错误码,0标识成功。
"code": 0,
// 错误描述
"message": "success",
// 每次会话的唯一标识
"sid": "its000825bc@dx17efb57b09ba11d902",
// 翻译数据
"data": {
// 结果
"result": {
// 源语种
"from": "cn",
// 目标语种
"to": "en",
// 翻译结果
"trans_result": {
// 源文本
"src": "。你好你好",
// 目标文本
"dst": "。 Hello Hello"
}
}
},
// 语音转写结果序号
"ist_sn": 6
}
错误码 | 说明 | 处理方式 |
---|---|---|
-101 | 未知 | 分析日志 |
-102 | 内部 | 分析日志 |
-103 | 无效参数 | 检查输入参数 |
-104 | 无效参数键 | 检查输入参数键 |
-105 | 无效参数值 | 检查输入参数值 |
-106 | 状态 | 检查当前状态下调用是否合法,空闲才能start_listening,会话才能flush_listening、stop_listening。 |
-107 | 繁忙 | 分析日志 |
-108 | 内存不足 | 检查内存用量 |
-109 | 网络 | 检查网络是否通畅 |
0 | 成功 | 无 |
错误码 | 说明 | 处理方式 |
---|---|---|
10043 | 音频解码失败 | 请检查所传的音频是否与encoding字段描述的编码格式对应。 |
10139 | 参数错误 | 引擎编解码错误 |
10221 | 服务端没有可用连接 | 提交工单 |
10222 | 有服务端组件服务连接超时 | 提交工单 |
10223 | LB找不到引擎节点 | 提交工单 |
10225 | 找不到atmos | 提交工单 |
10317 | 版本非法 | 提交工单 |
11200 | 功能未授权或授权到期 | 提交工单申请权限 |
11201 | 日流控超限 | 额外需求请提交工单 |
11202 | 秒级流控超限 | 额外需求请提交工单 |
11203 | 并发流控超限 | 额外需求请提交工单 |
11204 | 组鉴权未通过,即组内所有功能均受限 | 如有需求请提交工单 |
10160 | 请求数据格式非法 | 检查请求数据是否是合法的json |
10161 | base64解码失败 | 检查发送的数据是否使用base64编码了 |
10163 | 参数校验失败 | 由客户端参数校验失败引起,客户端需要依据返回的message字段中的描述来更改请求参数 |
10200 | 读取数据超时 | 检查是否累计10s未发送数据并且未关闭连接 |
10114 | 会话时间超时 | 会话时间超过了60000s,请控制会话时间,保持不超过60000s。 |
10313 | appid和apikey不匹配或者没有传appid | 检查请求参数 第一帧没有传app_id 或者传 的app_id 与api_key 不匹配。 |
11503 | 服务内部响应数据错误 | 提交工单 |
11502 | 服务配置错误 | 提交工单 |
10118 | 服务端无法解析后端响应数据 | 提交工单 |
12000 | 用户发完数据没有收到结果 | —— |
12001 | 用户没有正常发送完数据 | —— |
99999 | 用户异常断开连接,或者会话超时断开连接 | —— |
错误码 | 说明 |
---|---|
10003 | 无效操作 |
10004 | session 模式非法 |
10008 | 句柄错误(忽略) |
10009 | 输入数据非法 |
10010 | 授权不足 |
10019 | session 会话超时,请先自查客户端发包间隔时长 |
10101 | 引擎回话已结束(忽略) |
10300 | 排序缓冲区为空 |
10301 | 排序 channel 已关闭 |
10400 | pb 协议序列化错误 |
10401 | pb 协议反序列化错误 |
10500 | 内部同步错误 |
10600 | 事件异常错误 |
10700 | 引擎异常 |
错误码 | 说明 | 处理方式 |
---|---|---|
10324 | Sid生成失败 | 联系技术人员 |
10106 | 非法的参数 | 检查参数是否正确上传 |
10107 | 非法参数值 | 检查参数值是否在取值范围内 |
10109 | 非法的data | 检查发送的文本是否合法 |
10114 | 超时 | 检查网络是否通畅 |
11210 | appId不匹配 | 检查appid和key是否匹配 |