类 | 含义 |
ITMGContext | 核心接口 |
ITMGRoom | 房间相关接口 |
ITMGRoomManager | 房间管理接口 |
ITMGAudioCtrl | 音频相关接口 |
ITMGAudioEffectCtrl | 音效及伴奏相关接口 |
接口 | 接口含义 |
Init | 初始化 GME |
Poll | 触发事件回调 |
Pause | 系统暂停 |
Resume | 系统恢复 |
Uninit | 反初始化 GME |
using GME;
//class ITMGContextpublic abstract int Init(string sdkAppID, string openID);
返回值 | 处理 |
QAVError.OK= 0 | 初始化 SDK 成功 |
AV_ERR_SDK_NOT_FULL_UPDATE=7015 | 检查 SDK 文件是否完整,建议删除后重新导入 SDK |
int ret = ITMGContext.GetInstance().Init(sdkAppId, openID);//通过返回值判断是否初始化成功if (ret != QAVError.OK){Debug.Log("SDK初始化失败:"+ret);return;}
ITMGContext public abstract int Poll();
public void Update(){ITMGContext.GetInstance().Poll();}
ITMGContext public abstract int Pause()
ITMGContext public abstract int Resume()
ITMGContext public abstract int Uninit()
接口 | 接口含义 |
GenAuthBuffer | 本地鉴权计算 |
EnterRoom | 加入房间 |
ExitRoom | 退出房间 |
IsRoomEntered | 判断是否已经进入房间 |
SwitchRoom | 快速切换房间 |
QAVAuthBuffer GenAuthBuffer(int appId, string roomId, string openId, string key)
参数 | 类型 | 含义 |
appId | int | 来自腾讯云控制台的 AppID 号码 |
roomId | string | 房间号,最大支持127字符 |
openId | string | 用户标识。与 Init 时候的 openID 相同 |
key | string |
public static byte[] GetAuthBuffer(string AppID, string RoomID,string OpenId, string AuthKey){return QAVAuthBuffer.GenAuthBuffer(int.Parse(AppID), RoomID, OpenId, AuthKey);}
ITMGContext EnterRoom(string roomId, int roomType, byte[] authBuffer)
参数 | 类型 | 含义 |
roomId | string | 房间号,最大支持127字符 |
roomType | ITMGRoomType | |
authBuffer | Byte[] | 鉴权码 |
ITMGContext.GetInstance().EnterRoom(strRoomId, ITMGRoomType.ITMG_ROOM_TYPE_FLUENCY, byteAuthbuffer);
public delegate void QAVEnterRoomComplete(int result, string error_info);public abstract event QAVEnterRoomComplete OnEnterRoomCompleteEvent;
//对事件进行监听:ITMGContext.GetInstance().OnEnterRoomCompleteEvent += new QAVEnterRoomComplete(OnEnterRoomComplete);//监听处理:void OnEnterRoomComplete(int err, string errInfo){if (err != 0) {ShowLoginPanel("错误码:" + err + " 错误信息:" + errInfo);return;}else{//进房成功}}
消息 | Data | 例子 |
ITMG_MAIN_EVENT_TYPE_ENTER_ROOM | result; error_info | {"error_info":"","result":0} |
ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT | result; error_info | {"error_info":"waiting timeout, please check your network","result":0} |
ITMG_MAIN_EVENT_TYPE.ITMG_MAIN_EVENT_TYPE_ROOM_DISCONNECT
,此时 SDK 会自动进行重连,回调是 ITMG_MAIN_EVENT_TYPE_RECONNECT_START
,当重连成功时,会有 ITMG_MAIN_EVENT_TYPE_RECONNECT_SUCCESS
回调。错误码值 | 原因及建议方案 |
7006 | 鉴权失败原因: AppID 不存在或者错误 authbuff 鉴权错误 鉴权过期 OpenId 不符合规范 |
7007 | 已经在其它房间 |
1001 | 已经在进房过程中,然后又重复了此操作。建议在进房回调返回之前不要再调用进房接口 |
1003 | 已经进房了在房间中,又调用一次进房接口 |
1101 | 确保已经初始化 SDK,确保 OpenId 是否符合规则,或者确保在同一线程调用接口,以及确保 Poll 接口正常调用 |
ITMGContext ExitRoom()
ITMGContext.GetInstance().ExitRoom();
public delegate void QAVExitRoomComplete();public abstract event QAVExitRoomComplete OnExitRoomCompleteEvent;
对事件进行监听:ITMGContext.GetInstance().OnExitRoomCompleteEvent += new QAVExitRoomComplete(OnExitRoomComplete);监听处理:void OnExitRoomComplete(){//退出房间后的处理}
ITMGContext abstract bool IsRoomEntered()
ITMGContext.GetInstance().IsRoomEntered();
public abstract int SwitchRoom(string targetRoomID, byte[] authBuffer);
参数 | 类型 | 含义 |
targetRoomID | String | 将要进入的房间号 |
authBuffer | byte[] | 用将要进入的房间号生成的新鉴权 |
接口/通知 | 含义 |
ITMG_MAIN_EVNET_TYPE_USER_UPDATE | 成员状态变化通知 |
AddAudioBlackList | 房间中禁言某成员 |
RemoveAudioBlackList | 移除禁言 |
event_id | 含义 | 应用侧维护内容 |
EVENT_ID_ENDPOINT_ENTER | 有成员进入房间,返回此时进房的 openid | 应用侧维护成员列表 |
EVENT_ID_ENDPOINT_EXIT | 有成员退出房间,返回此时退房的 openid | 应用侧维护成员列表 |
EVENT_ID_ENDPOINT_HAS_AUDIO | 有成员发送音频包,返回此时房间内说话的 openid,通过此事件可以判断用户是否说话,并展示声纹效果 | 应用侧维护通话成员列表 |
EVENT_ID_ENDPOINT_NO_AUDIO | 有成员停止发送音频包,返回此时房间内停止说话的 openid | 应用侧维护通话成员列表 |
public delegate void QAVEndpointsUpdateInfo(int eventID, int count, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)]string[] openIdList);public abstract event QAVEndpointsUpdateInfo OnEndpointsUpdateInfoEvent;//对事件进行监听:ITMGContext.GetInstance().OnEndpointsUpdateInfoEvent += new QAVEndpointsUpdateInfo(OnEndpointsUpdateInfo);//监听处理:void OnEndpointsUpdateInfo(int eventID, int count, string[] openIdList){//进行处理switch (eventID){case EVENT_ID_ENDPOINT_ENTER://有成员进入房间break;case EVENT_ID_ENDPOINT_EXIT://有成员退出房间break;case EVENT_ID_ENDPOINT_HAS_AUDIO://有成员发送音频包break;case EVENT_ID_ENDPOINT_NO_AUDIO://有成员停止发送音频包break;default:break;}break;}
ITMGContext ITMGAudioCtrl AddAudioBlackList(String openId)
参数 | 类型 | 含义 |
openId | String | 需添加黑名单的用户 openid |
ITMGContext.GetInstance().GetAudioCtrl ().AddAudioBlackList (openId);
ITMGContext ITMGAudioCtrl RemoveAudioBlackList(string openId)
参数 | 类型 | 含义 |
openId | String | 需移除黑名单的用户 openid |
ITMGContext.GetInstance().GetAudioCtrl ().RemoveAudioBlackList (openId);
接口 | 接口含义 |
EnableMic | 开关麦克风 |
GetMicState | 获取麦克风状态 |
EnableAudioCaptureDevice | 开关采集设备 |
IsAudioCaptureDeviceEnabled | 获取采集设备状态 |
EnableAudioSend | 打开关闭音频上行 |
IsAudioSendEnabled | 获取音频上行状态 |
GetMicLevel | 获取实时麦克风音量 |
GetSendStreamLevel | 获取音频上行实时音量 |
SetMicVolume | 设置麦克风音量 |
GetMicVolume | 获取麦克风音量 |
ITMGAudioCtrl EnableMic(bool isEnabled)
参数 | 类型 | 含义 |
isEnabled | boolean | 如果需要打开麦克风,则传入的参数为 true,如果关闭麦克风,则参数为 false |
//打开麦克风ITMGContext.GetInstance().GetAudioCtrl().EnableMic(true);
ITMGAudioCtrl GetMicState()
micToggle.isOn = ITMGContext.GetInstance().GetAudioCtrl().GetMicState();
ITMGAudioCtrl int EnableAudioCaptureDevice(bool isEnabled)
参数 | 类型 | 含义 |
isEnabled | bool | 如果需要打开采集设备,则传入的参数为 true,如果关闭采集设备,则参数为 false |
//打开采集设备ITMGContext.GetInstance().GetAudioCtrl().EnableAudioCaptureDevice(true);
ITMGAudioCtrl bool IsAudioCaptureDeviceEnabled()
bool IsAudioCaptureDevice = ITMGContext.GetInstance().GetAudioCtrl().IsAudioCaptureDeviceEnabled();
ITMGAudioCtrl int EnableAudioSend(bool isEnabled)
参数 | 类型 | 含义 |
isEnabled | bool | 如果需要打开音频上行,则传入的参数为 true,如果关闭音频上行,则参数为 false |
ITMGContext.GetInstance().GetAudioCtrl().EnableAudioSend(true);
ITMGAudioCtrl bool IsAudioSendEnabled()
bool IsAudioSend = ITMGContext.GetInstance().GetAudioCtrl().IsAudioSendEnabled();
ITMGAudioCtrl int GetMicLevel
ITMGContext.GetInstance().GetAudioCtrl().GetMicLevel();
ITMGAudioCtrl int GetSendStreamLevel()
int Level = ITMGContext.GetInstance().GetAudioCtrl().GetSendStreamLevel();
ITMGAudioCtrl SetMicVolume(int volume)
参数 | 类型 | 含义 |
volume | int | 取值范围为 0-200,数值为0的时候表示静音,当数值为100的时候表示音量不增不减,默认数值为100 |
int micVol = (int)(value * 100);ITMGContext.GetInstance().GetAudioCtrl().SetMicVolume (micVol);
ITMGAudioCtrl GetMicVolume()
ITMGContext.GetInstance().GetAudioCtrl().GetMicVolume();
接口 | 接口含义 |
EnableSpeaker | 开关扬声器 |
GetSpeakerState | 获取扬声器状态 |
EnableAudioPlayDevice | 开关播放设备 |
IsAudioPlayDeviceEnabled | 获取播放设备状态 |
EnableAudioRecv | 打开关闭音频下行 |
IsAudioRecvEnabled | 获取音频下行状态 |
GetSpeakerLevel | 获取实时扬声器音量 |
GetRecvStreamLevel | 获取房间内其他成员下行实时音量 |
SetSpeakerVolume | 设置扬声器音量 |
GetSpeakerVolume | 获取扬声器音量 |
ITMGAudioCtrl EnableSpeaker(bool isEnabled)
参数 | 类型 | 含义 |
isEnabled | bool | 如果需要关闭扬声器,则传入的参数为 false,如果打开扬声器,则参数为 true |
//打开扬声器ITMGContext.GetInstance().GetAudioCtrl().EnableSpeaker(true);
ITMGAudioCtrl GetSpeakerState()
speakerToggle.isOn = ITMGContext.GetInstance().GetAudioCtrl().GetSpeakerState();
ITMGAudioCtrl EnableAudioPlayDevice(bool isEnabled)
参数 | 类型 | 含义 |
isEnabled | bool | 如果需要关闭播放设备,则传入的参数为 false,如果打开播放设备,则参数为 true |
ITMGContext.GetInstance().GetAudioCtrl().EnableAudioPlayDevice(true);
ITMGAudioCtrl bool IsAudioPlayDeviceEnabled()
bool IsAudioPlayDevice = ITMGContext.GetInstance().GetAudioCtrl().IsAudioPlayDeviceEnabled();
ITMGAudioCtrl int EnableAudioRecv(bool isEnabled)
参数 | 类型 | 含义 |
isEnabled | bool | 如果需要打开音频下行,则传入的参数为 true,如果关闭音频下行,则参数为 false |
ITMGContext.GetInstance().GetAudioCtrl().EnableAudioRecv(true);
ITMGAudioCtrl bool IsAudioRecvEnabled()
bool IsAudioRecv = ITMGContext.GetInstance().GetAudioCtrl().IsAudioRecvEnabled();
ITMGAudioCtrl GetSpeakerLevel()
ITMGContext.GetInstance().GetAudioCtrl().GetSpeakerLevel();
ITMGAudioCtrl int GetRecvStreamLevel(string openId)
参数 | 类型 | 含义 |
openId | string | 房间其他成员的 OpenID |
int Level = ITMGContext.GetInstance().GetAudioCtrl().GetRecvStreamLevel(openId);
public abstract int SetSpeakerVolumeByOpenID(string openid, int volume);
参数 | 类型 | 含义 |
openId | String | 需要调节音量大小的 OpenID |
volume | int | 百分比,建议[0-200],其中100为默认值 |
ITMGAudioCtrl SetSpeakerVolume(int volume)
参数 | 类型 | 含义 |
volume | int | 设置音量,范围0 - 200,当数值为0时,表示静音,当数值为100时,表示音量不增不减,默认数值为100 |
int speVol = (int)(value * 100);ITMGContext.GetInstance().GetAudioCtrl().SetSpeakerVolume(speVol);
ITMGAudioCtrl GetSpeakerVolume()
ITMGContext.GetInstance().GetAudioCtrl().GetSpeakerVolume();
接口 | 接口含义 |
GetMicListCount | 获取麦克风设备数量 |
GetMicList | 枚举麦克风设备 |
GetSpeakerListCount | 获取扬声器设备数量 |
GetSpeakerList | 枚举扬声器设备 |
SelectMic | 选定麦克风设备 |
SelectSpeaker | 选定扬声器设备 |
public abstract int GetMicListCount()
ITMGContext.GetInstance().GetAudioCtrl().GetMicListCount();
public abstract int GetMicList(out List<TMGAudioDeviceInfo> devicesInfo, int count)
参数 | 类型 | 含义 |
ppDeviceInfoList | TMGAudioDeviceInfo | 设备列表 |
count | int | 获取的麦克风设备数量 |
TMGAudioDeviceInfo 参数 | 类型 | 含义 |
m_strDeviceID | string | 设备名称 |
m_strDeviceID | string | 设备 ID |
ITMGContext.GetInstance().GetAudioCtrl().GetMicList(devicesInfo,count);
public abstract int SelectMic(string micID);
参数 | 类型 | 含义 |
pMicID | string | 麦克风设备 ID,设备 ID 来自于 GetMicList 返回列表 |
string deviceID = DEVICE_ID_DEFAULT;if (index != 0){deviceID = listMicInfo[index - 1].m_strDeviceID;}ITMGContext.GetInstance().GetAudioCtrl().SelectMic(deviceID);selectedMicID = deviceID;
public abstract int GetSpeakerListCount();
ITMGContext.GetInstance().GetAudioCtrl().GetSpeakerListCount();
public abstract int GetSpeakerList(out List<TMGAudioDeviceInfo> devicesInfo, int count)
参数 | 类型 | 含义 |
ppDeviceInfoList | TMGAudioDeviceInfo | 设备列表 |
count | int | 获取的扬声器设备数量 |
TMGAudioDeviceInfo 参数 | 类型 | 含义 |
m_strDeviceID | string | 设备名称 |
m_strDeviceID | string | 设备 ID |
int speakerCount = ITMGContext.GetInstance().GetAudioCtrl().GetSpeakerListCount();Debug.LogFormat("speakerCount = {0}", speakerCount);if (speakerCount > 0){int ret = ITMGContext.GetInstance().GetAudioCtrl().GetSpeakerList(out listSpeakerInfo, speakerCount);Debug.LogFormat("GetSpeakerList ret = {0}", ret);if (ret != 0){listSpeakerInfo = null;}}}
public abstract int SelectSpeaker(string speaker);
参数 | 类型 | 含义 |
speaker | string | 扬声器设备 ID,设备 ID 来自于 GetSpeakerList 返回列表 |
speakerDropdown = transform.Find("DevicePanel/SpeakerSelect").GetComponent<Dropdown>();if (speakerDropdown != null){speakerDropdown.onValueChanged.AddListener(delegate (int index){string deviceID = DEVICE_ID_DEFAULT;if (index != 0){deviceID = listSpeakerInfo[index - 1].m_strDeviceID;}ITMGContext.GetInstance().GetAudioCtrl().SelectSpeaker(deviceID);selectedSpeakerID = deviceID;});}
ITMGContext GetAudioCtrl EnableLoopBack(bool enable)
参数 | 类型 | 含义 |
enable | bool | 设置是否启动 |
ITMGContext.GetInstance().GetAudioCtrl().EnableLoopBack(true);
public delegate void QAVOnDeviceStateChangedEvent(int deviceType, string deviceId, bool openOrClose);public abstract event QAVOnDeviceStateChangedEvent OnDeviceStateChangedEvent;
参数 | 类型 | 含义 |
deviceType | int | 1 代表采集设备 2 代表播放设备 |
deviceId | string | 设备 GUID,用于标记设备,仅在 Windows 端和 Mac 端有效 |
openOrClose | bool | 采集设备/播放设备占用或者释放 |
对事件进行监听:ITMGContext.GetInstance().GetAudioCtrl().OnDeviceStateChangedEvent += new QAVAudioDeviceStateCallback(OnAudioDeviceStateChange);监听处理:void QAVAudioDeviceStateCallback(int deviceType, string deviceId, bool openOrClose){//设备占用和释放事件相关回调处理}
ITMGContext ITMGRoom public int GetRoomType()
ITMGContext.GetInstance().GetRoom().GetRoomType();
ITMGContext ITMGRoom public int ChangeRoomType(ITMGRoomType roomtype)
参数 | 类型 | 含义 |
roomtype | ITMGRoomType | 房间切换成的目标类型,房间音频类型参考 EnterRoom 接口 |
ITMGContext.GetInstance().GetRoom().ChangeRoomType(ITMG_ROOM_TYPE_FLUENCY);
返回的参数 | 含义 |
roomtype | 返回切换后的 roomtype 类型 |
public abstract event QAVCallback OnChangeRoomtypeCallback;public abstract event QAVOnRoomTypeChangedEvent OnRoomTypeChangedEvent;
//对事件进行监听:ITMGContext.GetInstance ().OnRoomTypeChangedEvent += new QAVOnRoomTypeChangedEvent (OnRoomTypeChangedEvent);//监听处理:void OnRoomTypeChangedEvent(int roomtype){ShowWarnning (string.Format ("RoomTypeChanged current:{0}",roomtype));}
public delegate void QAVOnRoomTypeChangedEvent(int roomtype);public abstract event QAVOnRoomTypeChangedEvent OnRoomTypeChangedEvent;
//对事件进行监听:ITMGContext.GetInstance().OnRoomTypeChangedEvent += new QAVOnRoomTypeChangedEvent(OnRoomTypeChangedEvent);//监听处理:void OnRoomTypeChangedEvent(int roomtype){//房间类型改变后的处理}
参数 | 类型 | 含义 |
weight | int | 范围是1 - 50,数值为50是音质评分极好,数值为1是音质评分很差,几乎不能使用,数值为0代表初始值,无含义。一般数值在30以下就可以提醒用户网络较差,建议切换网络 |
loss | double | 上行丢包率 |
delay | int | 音频触达延迟时间(ms) |
ITMGContext abstract string GetSDKVersion()
ITMGContext.GetInstance().GetSDKVersion();
ITMGContext SetLogLevel(ITMG_LOG_LEVEL levelWrite, ITMG_LOG_LEVEL levelPrint)
参数 | 类型 | 含义 |
levelWrite | ITMG_LOG_LEVEL | 设置写入日志的等级,TMG_LOG_LEVEL_NONE 表示不写入,默认为 TMG_LOG_LEVEL_INFO |
levelPrint | ITMG_LOG_LEVEL | 设置打印日志的等级,TMG_LOG_LEVEL_NONE 表示不打印,默认为 TMG_LOG_LEVEL_ERROR |
ITMG_LOG_LEVEL | 含义 |
TMG_LOG_LEVEL_NONE | 不打印日志 |
TMG_LOG_LEVEL_ERROR | 打印错误日志(默认) |
TMG_LOG_LEVEL_INFO | 打印提示日志 |
TMG_LOG_LEVEL_DEBUG | 打印开发调试日志 |
TMG_LOG_LEVEL_VERBOSE | 打印高频日志 |
ITMGContext.GetInstance().SetLogLevel(TMG_LOG_LEVEL_INFO,TMG_LOG_LEVEL_INFO);
平台 | 路径 |
Windows | %appdata%\\Tencent\\GME\\ProcessName |
iOS | Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents |
Android | /sdcard/Android/data/xxx.xxx.xxx/files |
Mac | /Users/username/Library/Containers/xxx.xxx.xxx/Data/Documents |
ITMGContext SetLogPath(string logDir)
参数 | 类型 | 含义 |
logDir | String | 路径 |
ITMGContext.GetInstance().SetLogPath(path);
ITMGRoom GetQualityTips()
string tips = ITMGContext.GetInstance().GetRoom().GetQualityTips();
本页内容是否解决了您的问题?