快速入门

最近更新时间:2019-07-23 15:26:51

为方便 Unreal 开发者调试和接入腾讯云游戏多媒体引擎产品 API,这里向您介绍适用于 Unreal 开发的快速接入文档。

GME 快速入门文档只提供最主要的接入接口,更多详细接口请参考 相关接口文档

重要接口 接口含义
Init 初始化 GME
Poll 触发事件回调
EnterRoom 进房
EnableMic 开麦克风
EnableSpeaker 开扬声器

说明:

  • GME 使用前请对工程进行配置,否则 SDK 不生效。
  • GME 的接口调用成功后返回值为 AV_OK,数值为 0。
  • GME 的接口调用要在同一个线程下。
  • GME 加入房间需要鉴权,请参考文档关于鉴权部分内容。
  • GME 需要周期性的调用 Poll 接口触发事件回调。
  • GME 回调信息参考回调消息列表。
  • 设备的操作要在进房成功之后。
  • 错误码详情可参考 错误码

快速接入步骤

1、获取单例

在使用语音功能时,需要首先获取 ITMGContext 对象。

示例代码

ITMGContext* context = ITMGContextGetInstance();
context->SetTMGDelegate(this);

2、初始化 SDK

参数获取请查看 接入指引
此接口需要来自腾讯云控制台的 SDKAppID 号码作为参数,再加上 openId,这个 openId 是唯一标识一个用户,规则由 App 开发者自行制定,App 内不重复即可(目前只支持 INT64)。

注意:

初始化 SDK 之后才可以进房。

函数原型

ITMGContext virtual int Init(const char* sdkAppId, const char* openID)
参数 类型 意义
sdkAppId char* 来自腾讯云控制台的 sdkAppId 号码
openID char* openID 只支持 Int64 类型(转为 string 传入),必须大于10000,用于标识用户

示例代码

std::string appid = TCHAR_TO_UTF8(CurrentWidget->editAppID->GetText().ToString().operator*());
std::string userId = TCHAR_TO_UTF8(CurrentWidget->editUserID->GetText().ToString().operator*());
ITMGContextGetInstance()->Init(appid.c_str(), userId.c_str());

3、触发事件回调

通过在 Tick 里面周期的调用 Poll 可以触发事件回调。

函数原型

class ITMGContext {
protected:
    virtual ~ITMGContext() {}

public:        
    virtual void Poll()= 0;
}

示例代码

//头文件中的声明
virtual void Tick(float DeltaSeconds);

//代码实现
void AUEDemoLevelScriptActor::Tick(float DeltaSeconds) 
{   
ITMGContextGetInstance()->Poll();
}

4、鉴权信息

生成 AuthBuffer,用于相关功能的加密和鉴权,相关后台部署请参考 鉴权密钥
离线语音获取鉴权时,房间号参数必须填 null。

函数原型

int  QAVSDK_AuthBuffer_GenAuthBuffer(unsigned int dwSdkAppID, const char* strRoomID, const char* strOpenID,
    const char* strKey, unsigned char* strAuthBuffer, unsigned int bufferLength);
参数 类型 意义
dwSdkAppID int 来自腾讯云控制台的 sdkAppId 号码
strRoomID char* 房间号,最大支持 127 字符(离线语音房间号参数必须填 null)
strOpenID char* 用户标识
strKey char* 来自腾讯云 控制台 的密钥
strAuthBuffer char* 返回的 authbuff
bufferLength int 传入的 authbuff 长度,建议为500

示例代码

unsigned int bufferLen = 512;
unsigned char retAuthBuff[512] = {0};
QAVSDK_AuthBuffer_GenAuthBuffer(atoi(SDKAPPID3RD), roomId, "10001", AUTHKEY,retAuthBuff,bufferLen);

5、加入房间

用生成的鉴权信息进房,会收到消息为 ITMG_MAIN_EVENT_TYPE_ENTER_ROOM 的回调。加入房间默认不打开麦克风及扬声器。返回值为 AV_OK 的时候代表成功。

  • 加入房间默认不打开麦克风及扬声器。
  • 在 EnterRoom 接口调用之前要先调用 Init 接口。

函数原型

ITMGContext virtual int EnterRoom(const char*  roomId, ITMG_ROOM_TYPE roomType, const char* authBuff, int buffLen)//普通进房接口
参数 类型 意义
roomId char* 房间号,最大支持127字符
roomType ITMG_ROOM_TYPE 房间音频类型
authBuffer char* 鉴权码
buffLen int 鉴权码长度

房间音频类型请参考 音质选择

示例代码

ITMGContext* context = ITMGContextGetInstance();
context->EnterRoom(roomId, ITMG_ROOM_TYPE_STANDARD, (char*)retAuthBuff,bufferLen);

6、加入房间事件的回调

加入房间完成后会发送信息 ITMG_MAIN_EVENT_TYPE_ENTER_ROOM,在 OnEvent 函数中进行判断。

示例代码


void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){
    switch (eventType) {
            case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM:
        {
        //进行处理
        break;
        }
    }
}

7、开启关闭麦克风

此接口用来开启关闭麦克风。加入房间默认不打开麦克风及扬声器。

函数原型

ITMGAudioCtrl virtual void EnableMic(bool bEnabled)
参数 类型 意义
bEnabled bool 如果需要打开麦克风,则传入的参数为 true,如果关闭麦克风,则参数为 false

示例代码

ITMGContextGetInstance()->GetAudioCtrl()->EnableMic(true);

8、开启关闭扬声器

此接口用于开启关闭扬声器。

函数原型

ITMGAudioCtrl virtual void EnableSpeaker(bool enabled)
参数 类型 意义
enable bool 如果需要关闭扬声器,则传入的参数为 false,如果打开扬声器,则参数为 true

示例代码

ITMGContextGetInstance()->GetAudioCtrl()->EnableSpeaker(true);