클래스 | 설명 |
ITMGContext | 주요 API |
ITMGRoom | 방 API |
ITMGRoomManager | 방 관리 API |
ITMGAudioCtrl | 오디오 API |
ITMGAudioEffectCtrl | 음향 효과 및 반주 API |
API | API 설명 |
Init | GME 초기화 |
Poll | 이벤트 콜백 트리거 |
Pause | 시스템 일시 중지 |
Resume | 시스템 복구 |
Uninit | GME 초기화 취소 |
using GME;
//class ITMGContextpublic abstract int Init(string sdkAppID, string openID);
매개변수 | 유형 | 설명 |
sdkAppId | string | |
openID | string | openID는 Int64 유형만 가능하며 string으로 변환되어 전달됩니다. 해당 규칙을 사용자 정의할 수 있으며 App에서 고유해야 합니다. Openid를 문자열로 전달하려면 Submit Ticket하여 신청하십시오. |
반환 값 | 처리 |
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()
API | API 설명 |
GenAuthBuffer | 로컬 인증 키 계산 |
EnterRoom | 라이브 룸 입장 |
ExitRoom | 방 퇴장 |
IsRoomEntered | 사용자의 방 입장 여부 판단 |
SwitchRoom | 방 전환 |
QAVAuthBuffer GenAuthBuffer(int appId, string roomId, string openId, string key)
매개변수 | 유형 | 설명 |
appId | int | Tencent Cloud 콘솔의 AppId. |
roomId | string | 최대 127자의 방 ID. |
openId | string | Init 시 openID와 동일한 사용자 ID. |
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자의 방 ID. |
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 | 방에 입장 중에 이 작업을 반복함. 방 입장 콜백이 반환될 때까지 방 입장 API를 호출하지 않는 것이 좋습니다. |
1003 | 이미 방에 입장한 후에 또 다시 입장 API를 호출함 |
1101 | SDK가 초기화되었는지, OpenId가 규칙을 준수하는지, API가 동일한 스레드에서 호출되는지, Poll API가 정상적으로 호출되는지 확인합니다 |
ITMGContext ExitRoom()
ITMGContext.GetInstance().ExitRoom();
ublic 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 | 입장할 방 ID |
authBuffer | byte[] | 입장할 방의 ID로 새로운 인증 생성 |
API/알림 | 설명 |
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);
API | API 설명 |
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. 기본값: 100. 0은 오디오가 음소거됨을 나타내고 100은 볼륨 레벨이 변경되지 않음을 나타냅니다. |
int micVol = (int)(value * 100);ITMGContext.GetInstance().GetAudioCtrl().SetMicVolume (micVol);
ITMGAudioCtrl GetMicVolume()
ITMGContext.GetInstance().GetAudioCtrl().GetMicVolume();
API | API 설명 |
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. 기본값: 100. 0은 오디오가 음소거됨을 나타내고 100은 볼륨 레벨이 변경되지 않음을 나타냅니다. |
int speVol = (int)(value * 100);ITMGContext.GetInstance().GetAudioCtrl().SetSpeakerVolume(speVol);
ITMGAudioCtrl GetSpeakerVolume()
ITMGContext.GetInstance().GetAudioCtrl().GetSpeakerVolume();
API | API 설명 |
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 | GetMicList에서 반환된 목록의 마이크 ID입니다. |
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 | GetSpeakerList에 의해 반환된 목록의 스피커 ID입니다. |
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 API를 참고하십시오. |
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();
문제 해결에 도움이 되었나요?