本文档旨在说明龙图BaseSDK版本语音功能说明。
本文的所述接口需要在接入龙图BaseSDK,并经过打包工具打包之后才可以使用。
语音功能的正常使用需要在游戏角色登陆成功之后才可以使用。
语音功能的接口皆需要在主线程调用。
本文档适用于SDK 接入人员阅读
SDK语音功能封装了腾讯语音接口,以方便开发者接入。
/**
* 开始录音接口
* 此接口完成的回调中会返回地址fileId及转换的文字text
*/
public void LTBaseStartRecordingWithStreamingRecognition();
LTBaseSDK.getInstance(mMainActivity).LTBaseStartRecordingWithStreamingRecognition();
/**
* 停止录音接口
*/
public void LTBaseStopRecording();
LTBaseSDK.getInstance(mMainActivity).LTBaseStopRecording();
/**
* 播放录音接口
* @param fileId 录音完成以后SDK返回的fileid
*/
public void LTBasePlayRecordedFile(String fileId);
LTBaseSDK.getInstance(mMainActivity).LTBasePlayRecordedFile(fileId);
参数 | 类型 | 说明 | 是否必传 |
---|---|---|---|
fileId | String | 录音地址,可在录音完成回调中拿到 | 必传 |
/**
* 播放变声录音接口
* @param fileId 录音完成以后SDK返回的fileid
* @param voiceType 变声参数
*/
public void LTBasePlayRecordedFileVoice(String fileId, int voiceType);
LTBaseSDK.getInstance(mMainActivity).LTBasePlayRecordedFileVoice(fileId, voiceType);
参数 | 类型 | 说明 | 是否必传 |
---|---|---|---|
fileId | String | 录音地址,可在录音完成回调中拿到 | 必传 |
voiceType | int | 变声参数,可在下表中获取 | 必传 |
变声参数如下:
参数名 | 效果说明 | 参数值 |
---|---|---|
LTBaseParam.LTGame_VOICE_TYPE_ORIGINAL_SOUND | 原声 | 0 |
LTBaseParam.LTGame_VOICE_TYPE_LOLITA | 萝莉音 | 1 |
LTBaseParam.LTGame_VOICE_TYPE_UNCLE | 大叔音 | 2 |
LTBaseParam.LTGame_VOICE_TYPE_INTANGIBLE | 空灵 | 3 |
LTBaseParam.LTGame_VOICE_TYPE_DEAD_FATBOY | 死肥宅 | 4 |
LTBaseParam.LTGame_VOICE_TYPE_HEAVY_MENTAL | 重金属 | 5 |
LTBaseParam.LTGame_VOICE_TYPE_DIALECT | 歪果仁 | 6 |
LTBaseParam.LTGame_VOICE_TYPE_INFLUENZA | 感冒 | 7 |
LTBaseParam.LTGame_VOICE_TYPE_CAGED_ANIMAL | 困兽 | 8 |
LTBaseParam.LTGame_VOICE_TYPE_HEAVY_MACHINE | 重机器 | 9 |
LTBaseParam.LTGame_VOICE_TYPE_STRONG_CURRENT | 强电流 | 10 |
LTBaseParam.LTGame_VOICE_TYPE_KINDER_GARTEN | 幼稚园 | 11 |
LTBaseParam.LTGame_VOICE_TYPE_HUANG | 小黄人 | 12 |
/**
* 停止播放语音接口
* 此接口用于停止播放语音。停止播放语音也会有播放完成的回调。
*/
public void LTBaseStopPlayFile;
LTBaseSDK.getInstance(mMainActivity).LTBaseStopPlayFile();
/**
* 取消录音接口
* 调用此接口取消录音。取消之后没有回调。
*/
public void LTBaseStopPlayFile;
LTBaseSDK.getInstance(mMainActivity).LTBaseCancelRecording();
/**
* @param ltMultiMediaCallback 需要实现的回调
*/
public void LTBaseMultiMediaListener(LTMultiMediaCallback ltMultiMediaCallback);
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaListener(new LTMultiMediaCallback() {
@Override
public void LTBaseMultiMediaSuccess(int i, Intent intent) {
final Intent data = intent;
switch (i) {
case LTBaseParam.CODE_PTT_STREAMINGRECOGNITION_SUCCESS: {
//语音转文字识别的文本
String textString = data.getStringExtra("text");
//录音在后台的 url 地址,录音在服务器存放90天
String fileId = data.getStringExtra("file_id");
//录音存放的本地地址
String filePath = data.getStringExtra("file_path");
Toast.makeText(mMainActivity, "录音成功", Toast.LENGTH_LONG).show();
break;
}
case LTBaseParam.CODE_PTT_STREAMINGRECOGNITION_FAIL: {
Log.d(TAG, "录音失败");
Toast.makeText(mMainActivity, "录音失败", Toast.LENGTH_LONG).show();
break;
}
case LTBaseParam.CODE_PTT_PLAY_SUCCESS: {
Log.d(TAG, "播放语音成功");
break;
}
case LTBaseParam.CODE_PTT_PLAY_FAIL: {
Log.d(TAG, "播放语音失败");
break;
}
}
}
@Override
public void LTBaseMultiMediaFail(int i, String s) {
Log.d(TAG, "语音SDK异常");
}
});
参数 | 类型 | 说明 |
---|---|---|
LTBaseParam.CODE_PTT_STREAMINGRECOGNITION_SUCCESS | int | 录音成功 |
LTBaseParam.CODE_PTT_STREAMINGRECOGNITION_FAIL | int | 录音失败 |
LTBaseParam.CODE_PTT_PLAY_SUCCESS | int | 播放录音成功 |
LTBaseParam.CODE_PTT_PLAY_FAIL | int | 播放录音失败 |
/**
* 获取录音文件的时长 单位:毫秒
* @param filePath 录音本地存储路径 录音完成以后SDK返回的filePath
*/
public int LTVoiceGetVoiceFileDuration(String filePath);
LTBaseSDK.getInstance(mMainActivity).LTVoiceGetVoiceFileDuration(filePath);
参数 | 类型 | 说明 | 是否必传 |
---|---|---|---|
filePath | String | 录音本地地址,可在录音完成回调中拿到 | 必传 |
/**
* 获取语音消息麦克风实时音量接口
* 此接口用于获取麦克风实时音量,返回值为 int 类型,值域为0到100。
*/
public int LTBasePttGetMicLevel();
LTBaseSDK.getInstance(mMainActivity).LTBasePttGetMicLevel();
/**
* 设置语音消息录制音量接口
* 此接口用于设置离线语音录制音量,值域为0到200。
* 设置小于100相当于音量缩小,100为音量不增不减,大于100为扩大音量,最高200音量扩大4倍
*/
public void LTBasePttSetMicVolume(int volume);
LTBaseSDK.getInstance(mMainActivity).LTBasePttSetMicVolume(int volume);
/**
* 获取语音消息录制音量接口
* 此接口用于获取离线语音录制音量。返回值为 int 类型,值域为0到200。
*/
public int LTBasePttGetMicVolume();
LTBaseSDK.getInstance(mMainActivity).LTBasePttGetMicVolume();
/**
* 获取语音消息扬声器实时音量接口
* 此接口用于获取扬声器实时音量。返回值为 int 类型,值域为0到100。
*/
public int LTBasePttGetSpeakerLevel();
LTBaseSDK.getInstance(mMainActivity).LTBasePttGetSpeakerLevel();
/**
* 设置语音消息播放音量接口
* 此接口用于设置离线语音播放音量,值域为0到200。
* 设置小于100相当于音量缩小,100为音量不增不减,大于100为扩大音量,最高200音量扩大4倍
*/
public void LTBasePttSetSpeakerVolume(int volume);
LTBaseSDK.getInstance(mMainActivity).LTBasePttSetSpeakerVolume(int volume);
/**
* 获取语音消息播放音量接口
* 此接口用于获取离线语音播放音量。返回值为 int 类型,值域为0到200。
*/
public int LTBasePttGetSpeakerVolume();
LTBaseSDK.getInstance(mMainActivity).LTBasePttGetSpeakerVolume();
说明:实时语音相关接口的调用都需要以进入房间为基础
/**
* 实时语音需要先进入房间,进入房间默认不打开麦克风和扬声器
* @param roomId 房间号 最大支持127字符
* @param roomType 音质类型(延时高低区别) LTBaseParam.CODE_ROOM_TYPE_FLUENCY:流畅音质
* LTBaseParam.CODE_ROOM_TYPE_STANDARD:标准音质 LTBaseParam.CODE_ROOM_TYPE_HIGHQUALITY:高清音质
* 音质类型游戏类应用建议 1:流畅音质
* 进入房间事件回调通过回调通知接口返回
* 回调事件为:LTBaseParam.CODE_ROOM_ENTERROOM_SUCCESS 进入房间成功
* LTBaseParam.CODE_ROOM_ENTERROOM_FAIL 进入房间失败
*/
public void LTBaseMultiMediaEnterRoom(String roomId, int roomType);
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaEnterRoom(String roomId, int roomType);
说明:实时语音相关接口的调用都需要以进入房间为基础
非特殊需求不需使用此接口
/**
* 实时语音需要先进入房间,进入房间默认不打开麦克风和扬声器
* @param roomId 房间号 最大支持127字符
* @param roomType 音质类型(延时高低区别)
* @param authBuffer 鉴权码(用于相关功能的加密和鉴权)
* LTBaseParam.CODE_ROOM_TYPE_FLUENCY:流畅音质
* LTBaseParam.CODE_ROOM_TYPE_STANDARD:标准音质 LTBaseParam.CODE_ROOM_TYPE_HIGHQUALITY:高清音质
* 音质类型游戏类应用建议 1:流畅音质
* 进入房间事件回调通过回调通知接口返回
* 回调事件为:LTBaseParam.CODE_ROOM_ENTERROOM_SUCCESS 进入房间成功
* LTBaseParam.CODE_ROOM_ENTERROOM_FAIL 进入房间失败
*/
public void LTBaseMultiMediaEnterRoom(String roomId, int roomType, byte[] authBuffer);
/**
* 判断是否已经进入房间
* @return true:已经进入房间 false:未进入房间
*/
public boolean LTBaseMultiMediaIsRoomEntered();
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaIsRoomEntered();
/**
* 实时语音,退出房间
* 退出房间事件回调通过回调通知接口返回
* 回调事件为:LTBaseParam.CODE_ROOM_EXITROOM_SUCCESS
*/
public void LTBaseMultiMediaExitRoom();
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaExitRoom();
/**
* 修改用户房间音频类型 类型参考进入房间接口
* 修改事件回调通过回调通知接口返回
* 回调事件为:LTBaseParam.CODE_ROOM_CHANGEROOMTYPE_COMPLETE
*/
public void LTBaseMultiMediaChangeRoomType(int roomType);
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaChangeRoomType(int roomType);
/**
* 获取用户房间音频类型
* @return 类型参考进入房间接口 返回0时代表获取用户房间音频类型发生错误
*/
public int LTBaseMultiMediaGetRoomType();
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaGetRoomType();
/**
* 开启关闭麦克风
* @param isEnableMic true:打开 false:关闭
*/
public void LTBaseMultiMediaEnableMic(boolean isEnableMic);
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaEnableMic(boolean isEnableMic);
/**
* 获取麦克风状态
* @return 0:关闭 1:打开
*/
public int LTBaseMultiMediaGetMicState();
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaGetMicState();
/**
* 设置麦克风的音量
* 当数值为0的时候表示静音,当数值为100 的时候表示音量不增不减,默认数值为100
* 范围0-200
*/
public void LTBaseMultiMediaSetMicVolume(int volume);
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaSetMicVolume(int volume);
/**
* 获取麦克风的音量
* @return 返回值为一个int类型数值,返回值为101代表没调用过接口 LTBaseMultiMediaSetMicVolume
*/
public int LTBaseMultiMediaGetMicVolume();
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaGetMicVolume();
/**
* 开启关闭扬声器
* @param isEnableSpeaker true:开启 false:关闭
*/
public void LTBaseMultiMediaEnableSpeaker(boolean isEnableSpeaker);
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaEnableSpeaker(boolean isEnableSpeaker);
/**
* 扬声器状态获取
* @return 0:关闭 1:打开 2:设备正在操作中
*/
public int LTBaseMultiMediaGetSpeakerState();
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaGetSpeakerState();
/**
* 设置扬声器的音量
* 当数值为0时,表示静音,当数值为100时,表示音量不增不减,默认数值为 100
* @param volume 范围为0-200
*/
public void LTBaseMultiMediaSetSpeakerVolume(int volume);
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaSetSpeakerVolume(int volume);
/**
* 获取扬声器的音量
* @return 返回值为101代表没调用过接口 LTBaseMultiMediaSetSpeakerVolume
*/
public int LTBaseMultiMediaGetSpeakerVolume();
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaGetSpeakerVolume();
/**
* 此功能无需接口调用,房间成员的变化通过回调通知接口返回
* 具体参考回调通知接口LTBaseParam.CODE_ROOM_USERROOM_ENTER;
* LTBaseParam.CODE_ROOM_USERROOM_EXIT
*/
/**
* 此功能无需接口调用,消息通过回调通知接口返回
* 具体参考回调通知接口LTBaseParam.CODE_ROOM_CHANGEROOMTYPE_COMPLETE
*/
/**
* 此功能无需接口调用,消息通过回调通知接口返回
* 具体参考回调通知接口LTBaseParam.CODE_ROOM_QUALITY
*/
/**
* 采集设备状态获取
* @return true:打开 false:关闭
*/
public boolean LTBaseMultiMediaGetAudioCaptureDeviceState();
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaGetAudioCaptureDeviceState();
/**
* 开启关闭采集设备
* @param isEnableAudioCaptureDevice true:打开 false:关闭
*/
public void LTBaseMultiMediaEnableAudioCaptureDevice(boolean isEnableAudioCaptureDevice);
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaEnableAudioCaptureDevice(
boolean isEnableAudioCaptureDevice);
/**
* 音频上行状态获取
* @return true:打开 false:关闭
*/
public boolean LTBaseMultiMediaGetAudioSendEnabledState();
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaGetAudioSendEnabledState();
/**
* 打开关闭音频上行
* @param isEnableAudioSend true:打开 false:关闭
*/
public void LTBaseMultiMediaEnableAudioSend(boolean isEnableAudioSend);
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaEnableAudioSend(
boolean isEnableAudioSend);
/**
* 获取麦克风实时音量,返回值为 int 类型。建议 20ms 获取一次
*/
public int LTBaseMultiMediaGetMicLevel();
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaGetMicLevel();
/**
* 获取音频上行实时音量 返回值为 int 类型,取值范围为0到100
*/
public int LTBaseMultiMediaGetSendStreamLevel();
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaGetSendStreamLevel();
/**
* 开启关闭播放设备
* @param isEnableAudioPlayDevice true:打开 false:关闭
*/
public void LTBaseMultiMediaEnableAudioPlayDevice(boolean isEnableAudioPlayDevice);
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaEnableAudioPlayDevice(
boolean isEnableAudioPlayDevice);
/**
* 播放设备状态获取
* @return true:打开 false:关闭
*/
public boolean LTBaseMultiMediaGetAudioPlayDeviceState();
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaGetAudioPlayDeviceState();
/**
* 打开关闭音频下行
* 如果播放设备已经打开,那么会播放房间里其他人的音频数据。如果播放设备没有打开,那么仍旧 * 无声
* @param isEnableAudioRecv true:打开 false:关闭
*/
public void LTBaseMultiMediaEnableAudioRecv(boolean isEnableAudioRecv);
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaEnableAudioRecv(
boolean isEnableAudioRecv);
/**
* 音频下行状态获取
* @return true:打开 false:关闭
*/
public boolean LTBaseMultiMediaGetAudioRecvState();
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaGetAudioRecvState();
/**
* 获取扬声器实时音量
* 返回值为 int 类型数值,表示扬声器实时音量。建议 20ms 获取一次
*/
public int LTBaseMultiMediaGetSpeakerLevel();
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaGetSpeakerLevel();
/**
* 获取房间内其他成员下行实时音量
* 返回值为 int 类型,取值范围为0到100
* @param openId 此参数可以从3.31接口获取玩家openId
*/
public int LTBaseMultiMediaGetRecvStreamLevel(String openId);
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaGetRecvStreamLevel(String openId);
/**
* 启动耳返
* @param isEnableLoopBack true:打开 false:关闭
*/
public void LTBaseMultiMediaEnableLoopBack(boolean isEnableLoopBack);
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaEnableLoopBack(boolean isEnableLoopBack);
/**
* 如果已经接入离线语音回调通知接口,实时语音可以和离线语音共用同一个回调通知接口
* @param ltMultiMediaCallback 需要实现的回调
*/
public void LTBaseMultiMediaListener(LTMultiMediaCallback ltMultiMediaCallback);
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaListener(new LTMultiMediaCallback() {
@Override
public void LTBaseMultiMediaSuccess(int i, Intent intent) {
final Intent data = intent;
switch (i) {
//进入房间成功
case LTBaseParam.CODE_ROOM_ENTERROOM_SUCCESS: {
Toast.makeText(activity, "成功进入房间", Toast.LENGTH_LONG).show();
break;
}
//进入房间失败
case LTBaseParam.CODE_ROOM_ENTERROOM_FAIL: {
/**
* 错误码:7007:已经在其他房间
* 1001:已经在进房过程中,然后又重复了此操作。建议在进房回调返回之前不要再调用进房接口
* 1003:已经进房了在房间中,又调用一次进房接口
*/
Toast.makeText(activity, "进入房间失败:code=" + data.getIntExtra("result", -1), Toast.LENGTH_LONG).show();
break;
}
//退出了房间
case LTBaseParam.CODE_ROOM_EXITROOM_SUCCESS: {
Toast.makeText(activity, "退出房间", Toast.LENGTH_LONG).show();
break;
}
//切换了房间
case LTBaseParam.CODE_ROOM_SWITCHROOM_SUCCESS:
Log.d(TAG, "切换了房间");
int result = data.getIntExtra("result", 1);
String errorInfo = data.getStringExtra("error_info");
if (result == 0) {
Toast.makeText(activity, "成功切换了房间", Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(activity, "switch room failed.. error info=" + errorInfo, Toast.LENGTH_SHORT).show();
}
break;
//有成员进入了房间
case LTBaseParam.CODE_ROOM_USERROOM_ENTER: {
/**
* listt数组会返回进入房间的成员的id
* 举个例子:
* 房间中有ABC三个成员,D最后进入房间,则ABC收到的user_list只有D,
* 而D收到的user_list包含ABCD
*/
String[] list = data.getStringArrayExtra("user_list");
break;
}
//有成员退出了房间
case LTBaseParam.CODE_ROOM_USERROOM_EXIT: {
//list数组会返回退出房间的成员的id
String[] list = data.getStringArrayExtra("user_list");
break;
}
//有成员发送音频包
case LTBaseParam.CODE_ROOM_USERROOM_HAS_AUDIO: {
break;
}
//有成员停止发送音频包
case LTBaseParam.CODE_ROOM_USERROOM_NO_AUDIO: {
break;
}
//成功切换了房间音频类型
//如需获取更多切换音频类型的状态,请参考下面表格中关于切换状态的CODE码描述
case LTBaseParam.CODE_ROOM_CHANGEROOMTYPE_COMPLETE: {
//type:返回切换了的音质类型,类型参考进房接口
int type = data.getIntExtra("new_room_type", 0)
break;
}
//房间因为网络等原因断开消息
case LTBaseParam.CODE_ROOM_DISCONNECT: {
break;
}
//房间通话质量监控事件
case LTBaseParam.CODE_ROOM_QUALITY: {
/**
* data返回的参数如下
* weight:范围是10 - 50,数值越低音质越差,数值为0代表初始值,无含义
* loss:丢包率
* delay:音频触达延迟时间(ms)
*/
int weight = data.getIntExtra("weight", -1));
double loss = data.getDoubleExtra("loss", -1));
int delay = data.getIntExtra("delay", -1));
break;
}
}
}
@Override
public void LTBaseMultiMediaFail(int i, String s) {
//语音SDK异常
}
});
参数 | 类型 | 说明 |
---|---|---|
LTBaseParam.CODE_ROOM_ENTERROOM_SUCCESS | int | 进入房间成功 |
LTBaseParam.CODE_ROOM_ENTERROOM_FAIL | int | 进入房间失败 |
LTBaseParam.CODE_ROOM_EXITROOM_SUCCESS | int | 退出房间成功 |
LTBaseParam.CODE_ROOM_USERROOM_ENTER | int | 有成员进入了房间 |
LTBaseParam.CODE_ROOM_USERROOM_EXIT | int | 有成员退出了房间 |
LTBaseParam.CODE_ROOM_USERROOM_HAS_AUDIO | int | 有成员发送音频包 |
LTBaseParam.CODE_ROOM_USERROOM_NO_AUDIO | int | 有成员停止发送音频包 |
LTBaseParam.CODE_ROOM_DISCONNECT | int | 房间因为网络等原因断开消息 |
LTBaseParam.CODE_ROOM_QUALITY | int | 房间通话质量监控事件 |
LTBaseParam.CODE_ROOM_CHANGEROOMTYPE_COMPLETE | int | 表示已经在房间,音频类型切换完成 |
LTBaseParam.CODE_ROOM_CHANGEROOMTYPE_ENTERROOM | int | 表示在进房的过程中,自带的音频类型与房间不符合,被修改为所进入房间的音频类型 |
LTBaseParam.CODE_ROOM_CHANGEROOMTYPE_START | int | 表示已经在房间内,音频类型开始切换 |
LTBaseParam.CODE_ROOM_CHANGEROOMTYPE_REQUEST | int | 表示房间成员请求切换房间音频类型 |
/**
* 获取用户ID
* 此接口可用来获取用户id
* 默认返回角色信息设置接口中设置的PlayerId
* 与玩家在实时语音中进房后返回的成员ID一致
*/
public String LTBaseMultiMediaGetOpenId();
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaGetOpenId();
/**
* 接口可以设置最高混音路数,在进房前调用
* 最大混音路数:20
* 不调用此接口,默认为6路
* 混音路数:支持同时多少人说话
* @param count
*/
public void LTBaseMultiMediaSetRecvMixStreamCount(int count);
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaSetRecvMixStreamCount(int count);
说明:
调用此接口快速切换实时语音房间。此接口在进房后调用。切换房间后,不重置设备,即如果在此房间已经是打开麦克风状态,在切换房间后也会是打开麦克风状态。
/**
* @param roomId 将要进入的房间号
* 快速切换房间事件通过回调通知接口返回
* 事件为:LTBaseParam.CODE_ROOM_SWITCHROOM_SUCCESS
* 回调返回值 result 0:成功切换房间 1:切换房间失败
*/
public void LTBaseMultiMediaSwitchRoom(String roomId);
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaSwitchRoom(String roomId);
说明:
调用此接口进行跨房连麦,此接口在进房后调用。调用接口后,本端可以与目标房间的目标 OpenID 用户进行连麦交流。目标房间与本端房间类型相同才能成功。
场景示例:
a 用户在 A 房间中,b 用户在 B 房间中,a 用户可以通过跨房接口与 b 进行通话,A 房间中的用户 c 说话,B 房间的 b 与 d 无法听到;A 房间中的用户 c 只能听到 A 房间的声音以及 B 房间中 b 的声音,B 房间其他人说话 c 无法听到。
/**
* @param roomId 将要连麦的房间号
* @param openId 将要连麦的目标 OpenID
* @return 0 为成功
*/
public int LTBaseMultiMediaStartRoomSharing(String roomId, String openId);
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaStartRoomSharing(String roomId, String openId);
/**
* @return 0 为成功
*/
public int LTBaseMultiMediaStopRoomSharing();
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaStopRoomSharing();
说明:
将某个 ID 加入音频数据黑名单,即不接受某人的语音, 只对本端生效,不会影响其他端。返回值为 0 表示调用成功。例如 :A,B,C 都在同一个房间开麦说话:
如果 A 设置了 C 的黑名单, 则 A 只能听见 B 的声音。
B 因为没有设置黑名单, 仍旧可以听见 A 和 C 的声音。
C 同样因为没有设置黑名单, 可以听见 A 和 B 的声音。
/**
* @param openId 将要禁言的目标 OpenID
* @return 0 为成功
*/
public int LTBaseMultiMediaAddAudioBlackList(String openId);
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaAddAudioBlackList(String openId);
/**
* @param openId 将要解除禁言的目标 OpenID
* @return 0 为成功
*/
public int LTBaseMultiMediaRemoveAudioBlackList(String openId);
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaRemoveAudioBlackList(String openId);
说明:
此接口用于获取实时语音房间号,只能在进房成功之后使用。返回值为 string 字符串
/**
* @return 房间号
*/
public String LTBaseMultiMediaGetRoomID();
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaGetRoomID();
范围语音是专门为吃鸡类游戏开发的定制化产品。其有别于普通小队语音房间的核心能力为:
1:提供吃鸡类游戏、大逃杀类型游戏中特有的“仅小队”或“所有人”的语音模式。
2:依托于范围判断能力,在同一个语音房间内,支持大量用户同时打开麦克风进行语音通话(范围内用户都可以开启麦克风,本端最多接收20路音频)。
3:范围语音基于实时语音接口,进房接口回调接口等皆可复用
4:使用范围语音,需使用流畅音质进入语音房间
说明:通过此方法设置队伍号,必须在 EnterRoom 之前调用。
1:如果是退房后再进房,请在退房成功回调回来之后再调用设置队伍号接口。
2:在退房时,此参数不会自动重置为0,所以一旦决定调用此语音模式,请在每次 EnterRoom 之前都调用此方法设置 TeamID。
/**
* 设置队伍号
* @param TeamID 队伍号,专供范围语音中进行上下行音频流控制
*/
public void LTBaseMultiMediaSetRangeAudioTeamID(int itemId)
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaSetRangeAudioTeamID(int itemId);
说明:通过此方法修改语音模式,可在进房前调用,也可在进房后调用。
1:在进房前调用此方法,方法将影响下一次进房。
2:在进房后调用此方法,将直接改变当前用户的语音模式。
3:在退房时,此参数不会自动重置为 MODE_WORLD,所以一旦决定调用此方法,请在每次 EnterRoom 之前都调用此方法设置语音模式。
4:不同的语音模式下,其具体的声音可达情况如下:
a. 同一小队内,无论距离多远、玩家为何种语音状态都能听见。
b. 不同小队情况下,双方开启“所有人”的语音状态情况下,在距离内可以互相听见。
/**
* 设置语音模式
* @param rangeAudioMode 0(MODE_WORLD) 代表“所有人”,1(MODE_TEAM) 代表"仅小队"
*/
public void LTBaseMultiMediaSetRangeAudioMode(int rangeAudioMode)
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaSetRangeAudioMode(int rangeAudioMode);
说明:通过此方法用于设置接收的语音范围(距离以游戏引擎为准),只支持在进房成功后调用。
1:此方法必须配合 UpdateSelfPosition 更新声源方位联合使用。
2:此方法只需调用一次即可生效。
3:进房成功后,此接口至少调用一次。
/**
* 设置接收语音距离范围
* 3D 音效中,音源音量的大小与音源距离有一定的衰减关系。单位距离超过 range 之后,音量衰减到几乎为零
* @param range 最大可以接收音频的范围,单位为引擎距离单位
*/
public void LTBaseMultiMediaUpdateAudioRecvRange(int range)
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaUpdateAudioRecvRange(int range);
说明:更新声源方位,目的是告诉服务器本端位置,通过本端世界坐标+本端接收音频的范围,与其他端世界坐标+其他端接收音频的范围进行判断,达到范围语音效果。
1:此函数用于更新声源位置信息,只支持在进房成功后调用,且需要每帧调用,以 Unity 引擎为例,此接口需要在 Update 中调用。
2:使用范围语音一定要更新声源方位,如果不需要范围判断能力,也需要进房后调用此接口一次。
3:如果需要同时使用 3D 音效效果,此接口中的参数 axisForward、axisRight 及 axisUp 需要按照下文 3D 语音部分 进行设置。
/**
* 更新声源方位
* @param position 自身在世界坐标系中的坐标,顺序是前、右、上
* @param axisForward 自身坐标系的单位向量
* @param axisRight 自身坐标系的单位向量
* @param axisUp 自身坐标系的单位向量
*/
public void LTBaseMultiMediaUpdateSelfPosition(int position[3], float axisForward[3],
float axisRight[3], float axisUp[3])
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaUpdateSelfPosition(int position[3], float axisForward[3], float axisRight[3], float axisUp[3]);
说明:请直接复制并调用示例代码使用此功能。
Unreal
FVector cameraLocation = UGameplayStatics::GetPlayerCameraManager(GetWorld(), 0)->GetCameraLocation();
FRotator cameraRotation = UGameplayStatics::GetPlayerCameraManager(GetWorld(), 0)->GetCameraRotation();
int position[] = {
(int)cameraLocation.X,
(int)cameraLocation.Y,
(int)cameraLocation.Z };
FMatrix matrix = ((FRotationMatrix)cameraRotation);
float forward[] = {
matrix.GetColumn(0).X,
matrix.GetColumn(1).X,
matrix.GetColumn(2).X };
float right[] = {
matrix.GetColumn(0).Y,
matrix.GetColumn(1).Y,
matrix.GetColumn(2).Y };
float up[] = {
matrix.GetColumn(0).Z,
matrix.GetColumn(1).Z,
matrix.GetColumn(2).Z};
Unity
Transform selftrans = currentPlayer.gameObject.transform;
Matrix4x4 matrix = Matrix4x4.TRS(Vector3.zero, selftrans.rotation, Vector3.one);
int[] position = new int[3] {
selftrans.position.z,
selftrans.position.x,
selftrans.position.y};
float[] axisForward = new float[3] {
matrix.m22,
matrix.m02,
matrix.m12 };
float[] axisRight = new float[3] {
matrix.m20,
matrix.m00,
matrix.m10 };
float[] axisUp = new float[3] {
matrix.m21,
matrix.m01,
matrix.m11 };
说明:此函数用于初始化 3D 音效引擎,在进房后调用。在使用 3D 音效之前必须先调用此接口,只接收 3D 音效而不发出 3D 音效的用户也需要调用此接口。
/**
* 初始化 3D 音效引擎
*/
public void LTBaseMultiMediaInitSpatializer()
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaInitSpatializer();
说明:此函数用于开启或关闭 3D 音效。开启之后可以听到 3D 音效。
/**
* 开启或关闭 3D 音效
* @param enable 开启之后可以听到 3D 音效
* @param applyToTeam 3D语音是否作用于小队内部,仅 enble 为 true 时有效
*/
public void LTBaseMultiMediaEnableSpatializer(boolean enable, boolean applyToTeam)
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaEnableSpatializer(boolean enable, boolean applyToTeam);
说明:获取当前 3D 音效状态
/**
* 获取当前 3D 音效状态
* @return true:开启 false:关闭状态
*/
public boolean LTBaseMultiMediaIsEnableSpatializer()
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaIsEnableSpatializer();
说明:调用此接口设置音频转发规则,此接口在进房成功回调中调用,调用后此次进房生效,退房后失效。
/**
* 自定义路由转发
* @param Sendtype 语音转发类型
* @param OpenIDforSend 语音转发名单
* @param Recvtype 语音接收类型
* @param OpenIDforRecv 语音接收名单
*/
public int LTBaseMultiMediaSetServerAudioRoute(int Sendtype, ArrayList<String> OpenIDforSend,
int Recvtype, ArrayList<String> OpenIDforRecv)
返回值 | 类型 | 说明 |
---|---|---|
0 | int | 设置成功 |
1004 | int | 参数错误,建议重新检查参数是否正确 |
1001 | int | 重复操作 |
1201 | int | 房间不存在 |
10001 以及 1005 | int | 建议重新调用接口一次 |
语音转发类型(Sendtype) | 说明 |
---|---|
LTBaseParam.CODE_ROOM_ROUTE_NOT_SEND_TO_ANYONE | 本端音频上行发送到后台,但后台不转发给任何人,相当于将自己静音,此时参数 OpenIDForSend 无效,只需填 null |
LTBaseParam.CODE_ROOM_ROUTE_SEND_TO_ALL | 本端音频上行将转发给所有人,此时参数 OpenIDForSend 无效,只需填 null |
LTBaseParam.CODE_ROOM_ROUTE_SEND_BLACK_LIST | 本端音频上行将不转发给黑名单的人,黑名单由参数 OpenIDForSend 提供 |
LTBaseParam.CODE_ROOM_ROUTE_SEND_WHITE_LIST | 本端音频上行将只转发给白名单的人,白名单由参数 OpenIDForSend 提供 |
说明
1:如果类型传入 CODE_ROOM_ROUTE_NOT_SEND_TO_ANYONE 以及 CODE_ROOM_ROUTE_SEND_TO_ALL ,此时的参数 OpenIDForSend 不生效,只需要填 null。
2:如果类型传入 CODE_ROOM_ROUTE_SEND_BLACK_LIST ,此时参数 OpenIDForSend 为黑名单列表,最多支持 10 个。
3:如果类型传入 CODE_ROOM_ROUTE_SEND_WHITE_LIST ,此时参数 OpenIDForSend 为白名单列表,最多支持 10 个。
语音接收类型(Recvtype) | 说明 |
---|---|
LTBaseParam.CODE_ROOM_ROUTE_NOT_RECV_FROM_ANYONE | 本端不接受任何音频,相当于关闭房间内扬声器效果,此时参数 OpenIDforRecv 无效,只需填 null |
LTBaseParam.CODE_ROOM_ROUTE_RECV_FROM_ALL | 本端接收所有人的音频,此时参数 OpenIDforRecv 无效,只需填 null |
LTBaseParam.CODE_ROOM_ROUTE_RECV_BLACK_LIST | 本端不接收黑名单的人的音频声音,黑名单由参数 OpenIDforRecv 提供 |
LTBaseParam.CODE_ROOM_ROUTE_RECV_WHITE_LIST | 本端只接收白名单的人的音频声音,白名单由参数 OpenIDforRecv 提供 |
说明
1:如果类型传入 CODE_ROOM_ROUTE_NOT_RECV_FROM_ANYONE 以及 CODE_ROOM_ROUTE_RECV_FROM_ALL OpenIDforRecv 不生效。
2:如果类型传入 CODE_ROOM_ROUTE_RECV_BLACK_LIST ,此时参数 OpenIDforRecv 为黑名单列表,最多支持 10 个。
3:如果类型传入 CODE_ROOM_ROUTE_RECV_WHITE_LIS ,此时参数 OpenIDforRecv 为白名单列表,最多支持 10 个。
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaSetServerAudioRoute(int Sendtype, ArrayList<String> OpenIDforSend,int Recvtype, ArrayList<String> OpenIDforRecv);
说明:调用此接口获取音频转发规则。调用后接口返回规则,传入的数组参数会返回相应规则的 openId。
/**
* 获取音频设置转发规则
* @param RouteType 获取设置类型
* LTBaseParam.CODE_ROOM_TYPE_ROUTE_SEND 转发
* LTBaseParam.CODE_ROOM_TYPE_ROUTE_RECV 接收
*
* @param OpenID 用户id 同一类型,例如白名单中的用户
*/
public int LTBaseMultiMediaGetServerAudioRoute(int RouteType, ArrayList<String> OpenID)
语音转发返回类型 | 说明 |
---|---|
LTBaseParam.CODE_ROOM_ROUTE_NOT_SEND_TO_ANYONE | 本端音频上行发送到后台,但后台不转发给任何人,相当于将自己静音 |
LTBaseParam.CODE_ROOM_ROUTE_SEND_TO_ALL | 本端音频上行将转发给所有人 |
LTBaseParam.CODE_ROOM_ROUTE_SEND_BLACK_LIST | 本端音频上行将不转发给黑名单的人 |
LTBaseParam.CODE_ROOM_ROUTE_SEND_WHITE_LIST | 本端音频上行将只转发给白名单的人 |
LTBaseParam.CODE_ROOM_ROUTE_SEND_INQUIRE_ERROR | 获取出错,检查是否进入房间,是否已经初始化 SDK |
语音接收返回类型 | 说明 |
---|---|
LTBaseParam.CODE_ROOM_ROUTE_NOT_RECV_FROM_ANYONE | 本端不接受任何音频,相当于关闭房间内扬声器效果 |
LTBaseParam.CODE_ROOM_ROUTE_RECV_FROM_ALL | 本端接收所有人的音频 |
LTBaseParam.CODE_ROOM_ROUTE_RECV_BLACK_LIST | 本端不接收黑名单的人的音频声音 |
LTBaseParam.CODE_ROOM_ROUTE_RECV_WHITE_LIST | 本端只接收白名单的人的音频声音 |
LTBaseParam.CODE_ROOM_ROUTE_RECV_INQUIRE_ERROR | 获取出错,检查是否进入房间,是否已经初始化 SDK |
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaGetServerAudioRoute(int RouteType, ArrayList<String> OpenID);
通过客户端房间管理接口,可以简单实现对房间内成员的管理、以及对房间内成员上下麦的管理。
房间管理功能在进房后才可调用,且只能修改房间内成员的状态。
所有接口的结果会通过 LTBaseParam.CODE_ROOM_MANAGEMENT_OPERATOR 回调,回调详情请参考 回调处理。
采集管理接口包含麦克风管理、音频上行管理以及采集硬件设备管理。其中麦克风管理相当于音频上行管理加上采集硬件设备管理,区分出音频数据传输上下行与硬件设备的管理,是因为打开或者关闭采集设备,将会伴随整个设备(采集和播放)重启,如果此时 App 正在播放背景音乐,那么背景音乐的播放也会被中断。利用控制上下行的方式来实现开关麦克风效果,将不会中断播放设备。
注意:采集管理(麦克风管理、音频上行管理以及采集硬件设备管理)可以设置直接关闭,但是打开时出于个人隐私保护最好需要对方授权(腾讯方建议), 因此SDK只做回调消息通知不会直接打开采集管理;也可以接收到回调消息后直接调用设置接口打开,不去请求用户允许,这个看具体业务的策略,但这样不符合个人隐私保护
接口说明:
调用此接口打开或关闭房间内某用户的麦克风,调用成功后,该用户的麦克风将被关闭或打开。
结果通过回调:LTBaseParam.CODE_ROOM_MANAGEMENT_MIC_OP 进行返回
LTBaseMultiMediaRoomManagerEnableMic 相当于同时调用 LTBaseMultiMediaRoomManagerEnableAudioSend 及 LTBaseMultiMediaRoomManagerEnableAudioCaptureDevice。
接口调用示例:
/**
* 麦克风管理
* 调用此接口打开或关闭房间内某用户的麦克风,调用成功后,该用户的麦克风将被关闭或打开。
* @param isEnabled true:打开某用户麦克风,false:关闭某用户麦克风
* @param openId 用户openid (可通过接口3.31获取)
* @return 0:表示接口调用成功,具体结果回调中给出
*/
public int LTBaseMultiMediaRoomManagerEnableMic(boolean isEnabled, String openId);
接口说明:
调用此接口打开或关闭房间内某用户的音频上行。调用成功后,该用户的音频上行将被关闭或打开,但不影响麦克风采集。
结果通过回调:LTBaseParam.CODE_ROOM_MANAGEMENT_AUDIO_SEND_OP进行信息返回
接口调用示例:
/**
* 音频上行管理
* @param isEnabled true:打开某用户上行,false:关闭某用户上行
* @param openId 用户openid (可通过接口3.31获取)
* @return 0:表示接口调用成功,具体结果回调中给出
*/
public int LTBaseMultiMediaRoomManagerEnableAudioSend(boolean isEnabled, String openId);
接口说明:
调用此接口打开或关闭房间内某用户的音频采集硬件设备。
调用成功后,该用户的音频采集硬件设备将被关闭或打开,但不影响上行
结果通过回调:LTBaseParam.CODE_ROOM_MANAGEMENT_CAPTURE_OP进行信息返回
接口调用示例:
/**
* 音频采集硬件设备管理
* @param isEnabled true:打开某用户音频采集硬件设备,false:关闭某用户音频采集硬件设备
* @param openId 用户openid (可通过接口3.31获取)
* @return 0:表示接口调用成功,具体结果回调中给出
*/
public int LTBaseMultiMediaRoomManagerEnableAudioCaptureDevice
(boolean isEnabled, String openId);
播放管理接口包含扬声器管理、音频下行管理以及播放硬件设备管理。其中扬声器管理相当于音频下行管理加上播放硬件设备管理。区分出音频数据传输上下行与硬件设备的管理,是因为打开或者关闭采集设备,将会伴随整个设备(采集及播放)重启,如果此时 App 正在播放背景音乐,那么背景音乐的播放也会被中断。利用控制上下行的方式来实现开关麦克风效果,不会中断播放设备。
注意:播放管理(扬声器管理、音频下行管理以及播放硬件设备管理)接口开关可直接设置,无需用户同意
接口说明:
调用此接口打开或关闭房间内某用户的扬声器。调用成功后,该用户的扬声器将被关闭或打开,听到房间内的音频声音。
结果通过回调:LTBaseParam.CODE_ROOM_MANAGEMENT_SPEAKER_OP进行信息返回
LTBaseMultiMediaRoomManagerEnableSpeaker 相当于同时调用 LTBaseMultiMediaRoomManagerEnableAudioRecv 及 LTBaseMultiMediaRoomManagerEnableAudioPlayDevice。
接口调用示例:
/**
* 扬声器管理
* @param isEnabled true :打开某用户扬声器,false:关闭某用户扬声器
* @param openId 用户openid (可通过接口3.31获取)
* @return 0:表示接口调用成功,具体结果回调中给出
*/
public int LTBaseMultiMediaRoomManagerEnableSpeaker
(boolean isEnabled, String openId);
接口说明:
调用此接口打开或关闭房间内某用户的音频下行。调用成功后,该用户的音频下行将被关闭或打开,但不影响播放设备。
结果通过回调:LTBaseParam.CODE_ROOM_MANAGEMENT_AUDIO_REC_OP进行信息返回
接口调用示例:
/**
* 音频下行管理
* @param isEnabled true :打开某用户音频下行,false:关闭某用户音频下行
* @param openId 用户openid (可通过接口3.31获取)
* @return 0:表示接口调用成功,具体结果回调中给出
*/
public int LTBaseMultiMediaRoomManagerEnableAudioRecv
(boolean isEnabled, String openId);
接口说明:
调用此接口打开或关闭房间内某用户的音频播放硬件设备。调用成功后,该用户的音频播放硬件设备将被关闭或打开。
结果通过回调:LTBaseParam.CODE_ROOM_MANAGEMENT_PLAY_OP进行信息返回
接口调用示例:
/**
* 音频播放硬件设备管理
* @param isEnabled true :打开某用户音频播放硬件设备,false:关闭某用户音频播放硬件设备
* @param openId 用户openid (可通过接口3.31获取)
* @return 0:表示接口调用成功,具体结果回调中给出
*/
public int LTBaseMultiMediaRoomManagerEnableAudioPlayDevice
(boolean isEnabled, String openId);
接口说明:
调用此接口,获取房间内某成员的麦克风状态。
结果通过回调:LTBaseParam.CODE_ROOM_MANAGEMENT_GET_MIC_STATE进行信息返回
接口调用示例:
/**
* 获取某人麦克风状态
* @param openId 用户openid (可通过接口3.31获取)
* @return 0:表示接口调用成功,具体结果回调中给出
*/
public int LTBaseMultiMediaRoomManagerGetMicState(String openId);
接口说明:
调用此接口,获取房间内某成员的扬声器状态。
结果通过回调:LTBaseParam.CODE_ROOM_MANAGEMENT_GET_SPEAKER_STATE进行信息返回
接口调用示例:
/**
* 获取某人扬声器状态
* @param openId 用户openid (可通过接口3.31获取)
* @return 0:表示接口调用成功,具体结果回调中给出
*/
public int LTBaseMultiMediaRoomManagerGetSpeakerState(String openId);
接口说明:
成员进房默认为允许操作麦克风及扬声器,调用此接口可以禁止房间内的某位成员操作麦克风及扬声器,在该成员退出房间后此功能失效。
结果通过回调:LTBaseParam.CODE_ROOM_MANAGERMENT_FOBIN_OP进行信息返回
注意:此接口为true时才是禁止某人操作设备,false时允许操作设备
接口调用示例:
/**
* 禁止某位成员操作麦克风及扬声器
* @param isEnabled true:禁止某用户操作设备,false:允许某用户操作设备
* @param openId 用户openid (可通过接口3.31获取)
* @return 0:表示接口调用成功,具体结果回调中给出
*/
public int LTBaseMultiMediaRoomManagerForbidUserOperation(boolean isEnabled, String openId);
接口说明:
回调接口与语音回调使用同一个接口返回
接口调用示例:
LTBaseSDK.getInstance(mMainActivity).LTBaseMultiMediaListener(new LTMultiMediaCallback() {
@Override
public void LTBaseMultiMediaSuccess(int i, Intent intent) {
final Intent data = intent;
switch (i) {
case LTBaseParam.CODE_ROOM_MANAGEMENT_OPERATOR: {
Toast.makeText(activity, "语音房间管理", Toast.LENGTH_LONG).show();
String SenderID = data.getStringExtra("SenderID");
String ReceiverID = data.getStringExtra("ReceiverID");
int OperateType = data.getIntExtra("OperateType",-1000);
int Result = data.getIntExtra("Result",-1000);
boolean OperateValue = data.getBooleanExtra("OperateValue",false);
if (OperateType == -1000 ||Result == -1000) {
return;
}
switch (OperateType) {
case LTBaseParam.CODE_ROOM_MANAGEMENT_CAPTURE_OP:
if (!LTBaseSDK.getInstance(activity).LTBaseMultiMediaGetOpenId().equals(SenderID)) {
if (OperateValue){
Toast.makeText(activity, "打开:" + ReceiverID, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(activity, "关闭:" + ReceiverID, Toast.LENGTH_LONG).show();
}
}
break;
case LTBaseParam.CODE_ROOM_MANAGEMENT_PLAY_OP:
if (!LTBaseSDK.getInstance(activity).LTBaseMultiMediaGetOpenId().equals(SenderID)) {
if (OperateValue){
Toast.makeText(activity, "打开:" + ReceiverID, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(activity, "关闭:" + ReceiverID, Toast.LENGTH_LONG).show();
}
}
break;
case LTBaseParam.CODE_ROOM_MANAGEMENT_AUDIO_SEND_OP:
if (!LTBaseSDK.getInstance(activity).LTBaseMultiMediaGetOpenId().equals(SenderID)) {
if (OperateValue){
Toast.makeText(activity, "打开:" + ReceiverID, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(activity, "关闭:" + ReceiverID, Toast.LENGTH_LONG).show();
}
}
break;
case LTBaseParam.CODE_ROOM_MANAGEMENT_AUDIO_REC_OP:
if (!LTBaseSDK.getInstance(activity).LTBaseMultiMediaGetOpenId().equals(SenderID)) {
if (OperateValue){
Toast.makeText(activity, "打开:" + ReceiverID, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(activity, "关闭:" + ReceiverID, Toast.LENGTH_LONG).show();
}
}
break;
case LTBaseParam.CODE_ROOM_MANAGEMENT_MIC_OP:
if (!LTBaseSDK.getInstance(activity).LTBaseMultiMediaGetOpenId().equals(SenderID)) {
if (OperateValue){
Toast.makeText(activity, "打开:" + ReceiverID, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(activity, "关闭:" + ReceiverID, Toast.LENGTH_LONG).show();
}
}
break;
case LTBaseParam.CODE_ROOM_MANAGEMENT_SPEAKER_OP:
if (!LTBaseSDK.getInstance(activity).LTBaseMultiMediaGetOpenId().equals(SenderID)) {
if (OperateValue){
Toast.makeText(activity, "打开:" + ReceiverID, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(activity, "关闭:" + ReceiverID, Toast.LENGTH_LONG).show();
}
}
break;
case LTBaseParam.CODE_ROOM_MANAGEMENT_GET_MIC_STATE:
if (!LTBaseSDK.getInstance(activity).LTBaseMultiMediaGetOpenId().equals(SenderID)) {
if (OperateValue){
Toast.makeText(activity, "打开:" + ReceiverID, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(activity, "关闭:" + ReceiverID, Toast.LENGTH_LONG).show();
}
}
break;
case LTBaseParam.CODE_ROOM_MANAGEMENT_GET_SPEAKER_STATE:
if (!LTBaseSDK.getInstance(activity).LTBaseMultiMediaGetOpenId().equals(SenderID)) {
if (OperateValue){
Toast.makeText(activity, "打开:" + ReceiverID, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(activity, "关闭:" + ReceiverID, Toast.LENGTH_LONG).show();
}
}
break;
case LTBaseParam.CODE_ROOM_MANAGERMENT_FOBIN_OP:
if (!LTBaseSDK.getInstance(activity).LTBaseMultiMediaGetOpenId().equals(SenderID)) {
if (OperateValue){
Toast.makeText(activity, "打开:" + ReceiverID, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(activity, "关闭:" + ReceiverID, Toast.LENGTH_LONG).show();
}
}
break;
}
break;
}
}
}
});
回调参数如下:
参数 | 类型 | 说明 |
---|---|---|
SenderID | String | 事件发送者 ID,如果与自己 OpenId 相同,即为本端发送的命令 |
ReceiverID | String | 事件接收者 ID,如果与自己 OpenId 相同,即为本端接收的命令 |
OperateType | int | 事件类型 |
Result | int | 事件结果,0为成功 |
OperateValue | Boolean | 命令详情 |
OperateType:
参数 | 类型 | 说明 |
---|---|---|
LTBaseParam.CODE_ROOM_MANAGEMENT_CAPTURE_OP | int | 控制采集设备硬件回调 |
LTBaseParam.CODE_ROOM_MANAGEMENT_PLAY_OP | int | 控制播放设备硬件回调 |
LTBaseParam.CODE_ROOM_MANAGEMENT_AUDIO_SEND_OP | int | 控制上行回调 |
LTBaseParam.CODE_ROOM_MANAGEMENT_AUDIO_REC_OP | int | 控制下行回调 |
LTBaseParam.CODE_ROOM_MANAGEMENT_MIC_OP | int | 控制麦克风回调 |
LTBaseParam.CODE_ROOM_MANAGEMENT_SPEAKER_OP | int | 控制扬声器回调 |
LTBaseParam.CODE_ROOM_MANAGEMENT_GET_MIC_STATE | int | 获取麦克风状态 |
LTBaseParam.CODE_ROOM_MANAGEMENT_GET_SPEAKER_STATE | int | 获取扬声器状态 |
LTBaseParam.CODE_ROOM_MANAGERMENT_FOBIN_OP | int | 禁止操作麦克风及扬声器事件 |
OperateValue:
成员 | 说明 |
---|---|
boolValue | 0:关闭命令,1:打开命令 |
不同语音模式下,玩家声音可达情况:
假设 A 玩家状态为“所有人”,对应 B 玩家在不同语音模式下声音可达情况:
假设 A 玩家状态为“仅小队“,对应 B 玩家在不同语音模式下声音可达情况:
3D 音效中,音源音量的大小与音源距离有一定的衰减关系。单位距离超过 range 之后,音量衰减到几乎为零。
一般性错误
错误码名称 | 错误码值 | 原因及建议方案 | |
---|---|---|---|
AV_ERR_3DVOICE_ERR_NOT_INITED | 7003 | 需要先调用 InitSpatializer 接口 | |
AV_ERR_NET_REQUEST_FALLED | 7004 | 网络请求失败,一般由网络状态不稳定引起,可参考 实时语音房间问题 进行排查 | |
AV_ERR_CHARGE_OVERDUE | 7005 | 账号欠费导致失败,需要在腾讯云控制台上查看是否欠费 | |
AV_ERR_AUTH_FIALD | 7006 | 鉴权失败 有以下几个原因:1. AppID 不存在或者错误,2. authbuff 鉴权错误,3. 鉴权过期 | |
AV_ERR_IN_OTHER_ROOM | 7007 | 已经在其它房间 | |
AV_ERR_NO_PERMISSION | 7009 | 要进行某个操作的时候,没有权限 | |
AV_ERR_FILE_CANNOT_ACCESS | 7010 | 无法访问文件 | |
AV_ERR_FILE_DAMAGED | 7011 | 文件被损坏 | |
AV_ERR_SERVICE_NOT_OPENED | 7012 | 没有在控制台开通此功能,请在控制台上开通 | |
AV_ERR_USER_CANCELED | 7013 | 用户主动取消此操作,例如没进房成功就进行退房操作 | |
AV_ERR_LOAD_LIB_FAILED | 7014 | 库文件没有正常加载,请检查库文件是否缺失 | |
AV_ERR_SDK_NOT_FULL_UPDATE | 7015 | 升级 SDK 时,没有升级所有的文件,导致某些模块不匹配,请全量升级 SDK | |
AV_ERR_3DVOICE_ERR_FILE_DAMAGED | 7002 | 3D 音效文件未加载成功 |
实时语音客户端错误
错误码名称 | 错误码值 | 含义 | 原因 | 建议方案 |
---|---|---|---|---|
AV_ERR_REPEATED_OPERATION | 1001 | 重复操作 | 已经在进行某种操作,再次去做同样的操作,则会产生这个错误。操作类别主要有:AVContext 类、房间类、设备类、成员类。AVContext 类型的操作:StartContext/StopContext。房间类型的操作:EnterRoom/ExitRoom。设备类型的操作:打开/关闭某个设备。 | 等待上一个操作完成后再进行下一个操作。 |
AV_ERR_EXCLUSIVE_OPERATION | 1002 | 互斥操作 | 已经在进行某种操作,再次去做同类型的其他操作,则会产生这个错误。 | 等待上一个操作完成后再进行下一个操作。 |
AV_ERR_HAS_IN_THE_STATE | 1003 | 重复操作 | 对象已经处于某种状态,再去做使得它进入这种状态的操作时,则会产生这个错误。如已经在房间中,再去做进入房间的操作,就会产生这个错误。 | 由于已经处于所要状态,可以认为该操作已经成功,当作成功来处理。 |
AV_ERR_INVALID_ARGUMENT | 1004 | 错误参数 | 调用 SDK 接口时,传入错误的参数,则会产生这个错误。如进入房间时,传入的房间类型不等于 AVRoom::ROOM_TYPE_PAIR 或 AVRoom::ROOM_TYPE_MULTI,就会产生这个错误。 | 详细阅读 API 文档,获取每个接口的每个参数的有效取值范围,保证传入参数的正确性并进行相应的预防处理。 |
AV_ERR_TIMEOUT | 1005 | 操作超时 | 进行某个操作,在规定的时间内,还未返回操作结果,则会产生这个错误。多数情况下,涉及到信令传输的、且网络出问题的情况下,才容易产生这个错误。如执行进入房间操作时,30s后还没有返回进入房间操作完成的结果的话,就会产生这个错误。 | 确认网络是否有问题,是否能连接到外网环境,并尝试重试。 |
AV_ERR_NOT_IMPLEMENTED | 1006 | 未实现 | 调用 SDK 接口时,如果相应的功能还未支持,则会产生这个错误。 | 暂不支持该功能,找其他替代方案。 |
AV_ERR_NOT_IN_MAIN_THREAD | 1007 | 不在主线程 | SDK 对外接口要求在主线程执行,如果业务侧调用 SDK 接口时,没有在主线程调用,则会产生这个错误。 | 修改业务侧逻辑,确保在主线程调用 SDK 接口。 |
AV_ERR_RESOURCE_IS_OCCUPIED | 1008 | 资源被占用 | 当需要用到某种资源,如摄像头、屏幕等,而这些资源已经被占用了,则会产生这个错误。 | 确认具体要用到哪些资源,及这样资源为什么被占用了,确保在正确的时机使用 SDK 相关功能以保证资源使用不冲突。 |
AV_ERR_CONTEXT_NOT_EXIST | 1101 | AVContext 状态问题 | 当 AVContext 对象未处于 CONTEXT_STATE_STARTED 状态,去调用需要处于这个状态才允许调用的接口时,则会产生这个错误。 | 修改业务侧逻辑,确保调用 SDK 接口时机的正确性。 |
AV_ERR_CONTEXT_NOT_STOPPED | 1102 | AVContext 状态问题 | 当 AVContext 对象未处于 CONTEXT_STATE_STOPPED 状态,去调用需要处于这个状态才允许调用的接口时,则会产生这个错误。如不在这种状态下,去调用 AVContext::DestroyContext 时,就会产生这个错误。 | 修改业务侧逻辑,确保调用 SDK 接口的时机的正确性。 |
AV_ERR_ROOM_NOT_EXIST | 1201 | AVRoom 状态问题 | 当 AVRoom 对象未处于 ROOM_STATE_ENTERED 状态,去调用需要处于这个状态才允许调用的接口时,则会产生这个错误。 | 修改业务侧逻辑,确保调用 SDK 接口的时机的正确性。 |
AV_ERR_ROOM_NOT_EXITED | 1202 | AVRoom 状态问题 | 当 AVRoom 对象未处于 ROOM_STATE_EXITED 状态,去调用需要处于这个状态才允许调用的接口时,则会产生这个错误。如不在这种状态下,去调用 AVContext::StopContext 时,就会产生这个错误。 | 修改业务侧逻辑,确保调用 SDK 接口的时机的正确性。 |
AV_ERR_DEVICE_NOT_EXIST | 1301 | 设备不存在 | 当设备不存在或者设备初始化未完成时,去使用设备,则会产生这个错误。 | 确认设备是否真的存在,确保设备 ID 填写的正确性,确保在设备初始化成功后再去使用设备。 |
AV_ERR_ENDPOINT_NOT_EXIST | 1401 | AVEndpoint 对象不存在 | 当成员没有在发语音或视频文件时,去获取它的 AVEndpoint 对象时,就可能产生这个错误。 | 修改业务侧逻辑,确保调用 SDK 接口的时机的正确性。 |
AV_ERR_ENDPOINT_HAS_NOT_VIDEO | 1402 | 成员没有发视频 | 当成员没有在发视频时,去做需要成员发视频的相关操作时,就可能产生这个错误。如当某个成员没有发送视频时,去请求他的画面,就会产生这个错误。 | 修改业务侧逻辑,确保调用 SDK 接口的时机的正确性。 |
AV_ERR_TINYID_TO_OPENID_FAILED | 1501 | tinyid 转 identifier 失败 | 当收到某个成员信息更新的信令时,需要去把 tinyid 转成 identifier,如果 IMSDK 库相关逻辑存在问题、网络存在问题等,则会产生这个错误。 | 确认网络是否存在问题,查看日志确认 IMSDK 相关逻辑是否存在问题。 |
AV_ERR_OPENID_TO_TINYID_FAILED | 1502 | identifier 转 tinyid 失败 | 当调用 StartContext 接口时,需要去把 identifier 转成 tinyid,如果 IMSDK 库相关逻辑存在问题、网络存在问题、没有处于登录态时等,则会产生这个错误。 | 确认网络是否存在问题,查看日志确认 IMSDK 相关逻辑是否存在问题,确认已经成功调用 IMSDK 的登录接口。 |
AV_ERR_DEVICE_TEST_NOT_EXIST | 1601 | AVDeviceTest 状态问题 | 当 AVDeviceTest 对象未处于 DEVICE_TEST_STATE_STARTED 状态,去调用需要处于这个状态才允许调用的接口时,则会产生这个错误。 | 修改业务侧逻辑,确保调用 SDK 接口的时机的正确性。 |
AV_ERR_DEVICE_TEST_NOT_STOPPED | 1602 | AVDeviceTest 状态问题 | 当 AVDeviceTest 对象未处于 DEVICE_TEST_STATE_STOPPED 状态,去调用需要处于这个状态才允许调用的接口时,则会产生这个错误。如不在这种状态下,去调用 AVContext::StopContext 时,就会产生这个错误。 | 修改业务侧逻辑,确保调用 SDK 接口的时机的正确性。 |
AV_ERR_INVITET_FAILED | 1801 | 发送邀请失败 | 发送邀请时产生的失败。 | 邀请模块只是用于 DEMO 演示方便用,对外暂不支持邀请功能,所以业务侧不需要处理这些错误码。 |
AV_ERR_ACCEPTT_FAILED | 1802 | 接受邀请失败 | 接受邀请时产生的失败。 | 邀请模块只是用于 DEMO 演示方便用,对外暂不支持邀请功能,所以业务侧不需要处理这些错误码。 |
AV_ERR_REFUSE_FAILED | 1803 | 拒绝邀请失败 | 拒绝邀请时产生的失败。 | 邀请模块只是用于 DEMO 演示方便用,对外暂不支持邀请功能,所以业务侧不需要处理这些错误码。 |
QAV_ERR_NOT_TRY_NEW_ROOM | 2001 | 没有尝试进入新房间,将停留在旧房间。 | 切换到新房间失败,但仍然在当前房间 | 在当前房间仍可以正常使用。 |
QAV_ERR_TRY_NEW_ROOM_FAILED | 2002 | 尝试进入新房间,但失败了,旧房间也将关闭。 | 切换到新房间失败,同时已退出原来的房间 | 退出房间,重新进入。 |
实时语音服务端错误
错误码名称 | 错误码值 | 含义 | 原因 | 建议方案 |
---|---|---|---|---|
AV_ERR_SERVER_FAILED | 10001 | 一般错误 | 具体原因需要通过分析日志确认后台返回给客户端的真正错误码才能知道。 | 查看并确认进房 API 中的参数,如 AppID, UIN, AuthBuffer 的合法性(参照文档)。请查看控制台上的相关参数是否与本地的一致。请查看控制台是否欠费。检查开发者测试设备网络环境,是在开发者内网环境还是外网环境。 |
AV_ERR_SERVER_INVALID_ARGUMENT | 10002 | 错误参数 | 调用 SDK 接口时,或 SDK 内部发送信令给后台时,传了错误的参数。 | 确保调用 SDK 接口时所传的参数的正确性。分析日志,获取后台返回给客户端的真正错误码,并联系后台同事协助解决。 |
AV_ERR_SERVER_NO_PERMISSION | 10003 | 没有权限 | 没有权限使用某个功能。如进入房间时所带的签名错误或过期,就会产生这个错误。 | 确保在设置正确的权限参数后才去使用相应的功能。检查 AppID 及权限密钥是否正确。 |
AV_ERR_SERVER_TIMEOUT | 10004 | 超时 | 进行某个操作,在规定的时间内,还未返回操作结果,则会产生这个错误。 | 分析日志,获取后台返回给客户端的真正错误码,并联系后台同事协助解决。 |
AV_ERR_SERVER_ALLOC_RESOURCE_FAILED | 10005 | 网络错误 | 执行某些操作时,网络错误 | 看并确认进房 API 中的参数,例如 AppID, UIN, AuthBuffer 的合法性(参照文档)。如果合法,检查开发者测试设备网络环境,是在开发者内网环境还是外网环境。如果是开发者内网,请开发者探测下 url:openmsf.3g.qq.com:15000 是否能够连接上。如上 url 成功连接,请探测下 url:cloud.tim.qq.com:15000 是否能够连通。 |
AV_ERR_SERVER_ID_NOT_IN_ROOM | 10006 | 不在房间内 | 在不在房间内时,去执行某些操作,则会产生这个错误。 | 确保在正确的时机使用 SDK 相关功能 |
AV_ERR_SERVER_NOT_IMPLEMENT | 10007 | 未实现 | 调用 SDK 接口时,如果相应的功能还未支持,则会产生这个错误。 | 暂不支持该功能,找其他替代方案。 |
AV_ERR_SERVER_REPEATED_OPERATION | 10008 | 重复操作 | 已经在进行某种操作,再次去做同类型的其他操作,则会产生这个错误。 | 等待上一个操作完成后再进行下一个操作。 |
AV_ERR_SERVER_ROOM_NOT_EXIST | 10009 | 房间不存在 | 房间不存在时,去执行某些操作,则会产生这个错误。 | 确保在正确的时机使用 SDK 相关功能 |
AV_ERR_SERVER_ENDPOINT_NOT_EXIST | 10010 | 成员不存在 | 某个成员不存在时,去执行该成员相关的操作,则会产生这个错误。 | 分析日志,获取后台返回给客户端的真正错误码,并联系后台同事协助解决。 |
AV_ERR_SERVER_INVALID_ABILITY | 10011 | 错误能力 | 具体原因需要通过分析日志确认后台返回给客户端的真正错误码才能知道。 | 分析日志,获取后台返回给客户端的真正错误码,并联系后台同事协助解决。 |
语音转文字错误
错误码名称 | 错误码值 | 含义 | 原因 | 建议方案 |
---|---|---|---|---|
RECORDER_PARAM_NULL | 4097 | 录音错误 | 参数为空 | 检查代码中接口参数是否正确。 |
RECORDER_INIT_ERROR | 4098 | 录音错误 | 初始化错误 | 检查设备是否被占用,或者权限是否正常,是否初始化正常。 |
RECORDER_RECORDING_ERR | 4099 | 录音错误 | 正在录制中 | 确保在正确的时机使用 SDK 录制功能。 |
RECORDER_NODATA_ERR | 4100 | 录音错误 | 没有采集到音频数据 | 检查麦克风设备是否正常。 |
RECORDER_OPENFILE_ERR | 4101 | 录音错误 | 录音时,录制文件访问错误 | 确保文件存在,文件路径的合法性。 |
RECORDER_PERMISSION_MIC_ERR | 4102 | 录音错误 | 麦克风未授权错误 | 使用 SDK 需要麦克风权限,添加权限请参考对应引擎或平台的 SDK 工程配置文档。 |
RECORDER_AUDIO_TOO_SHORT | 4103 | 录音错误 | 录音时间太短错误 | 首先,限制录音时长的单位为毫秒,检查参数是否正确;其次,录音时长要1000毫秒以上才能成功录制。 |
RECORDER_RECORD_NOT_START | 4104 | 录音错误 | 没有启动录音操作 | 检查是否已经调用启动录音接口。 |
UPLOAD_FILE_ACCESSERROR | 8193 | 上传错误 | 上传文件时,文件访问错误 | 确保文件存在,文件路径的合法性。 |
UPLOAD_SIGN_CHECK_FAIL | 8194 | 上传错误 | 签名校验失败错误 | 检查鉴权密钥是否正确,检查是否有初始化离线语音。 |
UPLOAD_COS_INTERNAL_FAIL | 8195 | 上传错误 | 网络错误 | 检查设备网络是否可以正常访问外网环境,参考 如何检查网络。 |
UPLOAD_GET_TOKEN_NETWORK_FAIL | 8196 | 上传错误 | 获取上传参数过程中网络失败 | 检查鉴权是否正确,检查设备网络是否可以正常访问外网环境,参考 如何检查网络。 |
UPLOAD_SYSTEM_INNER_ERROR | 8197 | 上传错误 | 获取上传参数过程中回包数据为空 | 检查鉴权是否正确,检查设备网络是否可以正常访问外网环境,参考 如何检查网络。 |
UPLOAD_RSP_DATA_DECODE_FAIL | 8198 | 上传错误 | 获取上传参数过程中回包解包失败 | 检查鉴权是否正确,检查设备网络是否可以正常访问外网环境,参考 如何检查网络。 |
UPLOAD_APPINFO_UNSET | 8200 | 上传错误 | 没有设置 appinfo | 检查 apply 接口是否有调用,或者入参是否为空。 |
DOWNLOAD_FILE_ACCESSERROR | 12289 | 下载错误 | 下载文件时,文件访问错误 | 检查文件路径是否合法。 |
DOWNLOAD_SIGN_CHECK_FAIL | 12290 | 下载错误 | 签名校验失败 | 检查鉴权密钥是否正确,检查是否有初始化离线语音。 |
DOWNLOAD_COS_INTERNAL_FAIL | 12291 | 下载错误 | 网络错误 | 服务器获取语音文件失败,检查接口参数 fileid 是否正确,检查网络是否正常。 |
DOWNLOAD_REMOTEFILE_ACCESSERROR | 12292 | 下载错误 | 服务器文件系统错误 | 检查设备网络是否可以正常访问外网环境,检查服务器上是否有此文件。 |
DOWNLOAD_GET_SIGN_NETWORK_FAIL | 12293 | 下载错误 | 获取下载参数过程中,HTTP 网络失败 | 检查设备网络是否可以正常访问外网环境,参考 如何检查网络。 |
DOWNLOAD_SYSTEM_INNER_ERROR | 12294 | 下载错误 | 获取下载参数过程中,回包数据为空 | 检查设备网络是否可以正常访问外网环境,参考 如何检查网络。 |
DOWNLOAD_GET_SIGN_RSP_DATA_DECODE_FAIL | 12295 | 下载错误 | 获取下载参数过程中,回包解包失败 | 检查设备网络是否可以正常访问外网环境,参考 如何检查网络。 |
DOWNLOAD_APPINFO_UNSET | 12297 | 下载错误 | 没有设置 appinfo | 检查鉴权密钥是否正确,检查是否有初始化离线语音。 |
PLAYER_INIT_ERR | 20481 | 播放错误 | 初始化错误 | 检查设备是否被占用,或者权限是否正常,是否初始化正常。 |
PLAYER_PLAYING_ERR | 20482 | 播放错误 | 正在播放中,试图打断并播放下一个失败了(正常是可以打断的) | 检查代码逻辑是否正确。 |
PLAYER_PARAM_NULL | 20483 | 播放错误 | 参数为空 | 检查代码中接口参数是否正确。 |
PLAYER_OPENFILE_ERR | 20484 | 播放错误 | 播放时,文件访问错误 | 确保文件存在,文件路径的合法性。 |
PLAYER_PLAYER_NOT_START_ERR | 20485 | 播放错误 | 播放未开始 | 确保文件存在,文件路径的合法性。 |
S2T_INTERNAL_ERROR | 32769 | 语音转文字错误 | 内部错误 | 出现此情况请联系腾讯云工作人员,并参照 下载及使用问题 提供日志文件。 |
S2T_NETWORK_FAIL | 32770 | 语音转文字错误 | 网络失败 | 检查设备网络是否可以正常访问外网环境,参考 如何检查网络。 |
S2T_RSP_DATA_DECODE_FAIL | 32772 | 语音转文字错误 | 回包解包失败 | 出现此情况请联系腾讯云工作人员,并参照 下载及使用问题 提供日志文件。 |
S2T_APPINFO_UNSET | 32774 | 语音转文字错误 | 没有设置 appinfo | 检查鉴权密钥是否正确,检查是否有初始化离线语音。 |
STREAMIN_RECORD_SUC_REC_FAIL | 32775 | 流式语音转文本错误 | 流式语音转文本失败,但是录音成功了 | 检查网络是否正确连接,检查权限密钥是否正确。 |
S2T_SIGN_CHECK_FAIL | 32776 | authbuffer 校验失败 | authbuffer 校验失败 | 检查 authbuffer 是否正确。 |
STREAMIN_UPLOADANDRECORD_SUC_REC_FAIL | 32777 | 流式语音转文本错误 | 流式语音转文本失败,但是录音成功了,上传也成功了。 | 检查代码是否有错误。 |
S2T_PARAM_NULL | 32784 | 语音转文字错误 | 语音转文本参数错误 | 检查代码中接口参数 fileid 是否为空。 |
S2T_AUTO_SPEECH_REC_ERROR | 32785 | 语音转文字错误 | 语音转文本翻译返回错误 | 出现此情况请联系腾讯云工作人员,并参照 下载及使用问题 提供日志文件。 |
ERR_VOICE_STREAMIN_RUNING_ERROR | 32786 | 流式语音转文本错误 | 流式语音转文本失败 | 在流式录制状态当中,请等待流式录制接口执行结果返回。 |
ERR_VOICE_STREAMING_ASR_ERROR | 50012 | 流式语音转文本错误 | 请求 ASR 错误 | 重新上传录制文件(UploadRecordedFile),然后调用转文本接口(SpeechToText)。出现此情况请联系腾讯云工作人员,并参照 下载及使用问题 提供日志文件。 |
房间管理返回值信息
返回值 | 含义 |
---|---|
0 | 成功操作。 |
1001 | < 重复操作。已经在进行某种操作,再次去做同样的操作,则返回这个错误。 |
1002 | < 互斥操作。已经在进行某种操作,再次去做同类型的其他操作,则返回这个错误。 |
1003 | < 已经处于所要状态,无需再操作。如设备已经打开,再次去打开,就返回这个错误码。 |
1004 | 错误参数。 |
1005 | 操作超时。 |
1006 | 功能未实现。 |
1007 | 不在主线程中执行操作 |
1101 | AVContext没有启动。 |
1201 | 房间不存在。 |
1301 | 设备不存在。 |
10001 | 服务器返回一般错误。 |
10003 | 没有权限。 |
10004 | 进房间获取房间地址失败。 |
10005 | 进房间连接房间失败。 |
10006 | 免流情况下,免流签名校验失败,导致进房获取房间地址失败。 |
10007 | 游戏应用房间超过90分钟,强制下线。 |
6999 | IMSDK失败。 |
7000 | IMSDK超时。 |
7001 | QAV_ERR_HTTP_REQ_FAIL。 |
7002 | 3d voice model file is damaged.。 |
7003 | should call InitSpatializer first。 |
65536 | 无效值。 |
7004 | QAV_ERR_NET_REQUEST_FALLED。 |
7005 | QAV_ERR_CHARGE_OVERDUE。 |
7006 | QAV_ERR_AUTH_FIALD。 |
7007 | QAV_ERR_IN_OTHER_ROOM。 |
7008 | QAV_ERR_DISSOLVED_OVERUSER。 |
7009 | QAV_ERR_NO_PERMISSION。 |
7010 | QAV_ERR_FILE_CANNOT_ACCESS。 |
7011 | QAV_ERR_FILE_DAMAGED。 |
7012 | QAV_ERR_SERVICE_NOT_OPENED。 |
7013 | QAV_ERR_USER_CANCELED。 |
7014 | QAV_ERR_LOAD_LIB_FAILED。 |
7015 | 升级SDK的时候没有升级所有的文件,导致某些模块不匹配@name 实时语音伴奏相关错误。 |
7016 | QAV_ERR_ROOMMANAGER_TIMESTAMP_CHECK_FAIL。 |
7017 | QAV_ERR_ASR_CONNECT_CLOSED。 |
7018 | iOS静音开关检测错误。 |
4051 | 打开文件失败。 |
4052 | 不支持的文件格式。 |
4053 | 解码失败。 |
4054 | 参数错误。 |
4055 | 内存分配失败。 |
4056 | 创建线程失败。 |
4057 | 状态非法。 |
上海中清龙图软件有限公司