Talk SDK for Windows 使用指南

适用范围

本规范仅适用于使用游密实时音频引擎win32/win64接口开发多人实时音音频功能的开发者。

开发环境

在开始集成游密Talk SDK 前,请确保开发环境满足以下要求:

  • Visual Studio 2013 或以上版本
  • Microsoft Windows 7 或以上版本
  • Windows PC

SDK目录概述

Talk SDK中有win32、win64两个版本,其中每个版本包含两个子文件夹:lib、include:

  1. include:SDK的头文件,所有接口都在这个文件夹中。
    • IYouMeVoiceEngine.h封装了Talk SDK的全部功能接口,集成方可通过 IYouMeVoiceEngine::getInstance ()->…来调用语音SDK接口。
    • IYouMeEventCallback.h包含Talk SDK的所有回调事件接口,例如初始化结果,频道加入成功等,都将通过此接口通知集成方。
    • YouMeConstDefine.h包含Talk SDK的所有枚举类型定义,如错误码等。
  2. lib:库文件。

SDK集成

  1. 解压SDK,并将SDK文件夹更名为YMTalkSDK(其他名称只要不冲突均可),拷贝至工程目录下(与.sln同级)。
  2. 在Visual Studio的项目-属性-配置属性-C/C++-常规中,添加附加包含目录“..\YMTalkSDK\win32\include”(如果是64位机器,请使用YMTalkSDK\win64\include)。
  3. 在Visual Studio的项目-属性-配置属性-链接器-常规中,添加附加库目录“..\YMTalkSDK\win32\lib\x86”(如果是64位机器,请使用YMTalkSDK\win64\lib\x86_64)。
  4. 在Visual Studio的项目-属性-配置属性-链接器-输入中,添加附加依赖项“youme_voice_engine.lib”。
  5. 拷贝“YMTalkSDK\win32\lib\x86”目录下的所有文件至执行目录(如果是64位机器,请使用YMTalkSDK\win64\lib\x86_64)。

音频通话流程图

流程图

音频通话时序图

时序图

音频通话相关代码

初始化

实现回调监听

class CYMEventCallback : public IYouMeEventCallback
{
  public:
    virtual void onEvent(const YouMeEvent event, const YouMeErrorCode error, const char * room, const char * param) override;
};

初始化Talk SDK:其中appKey和appSecret为在游密后台申请的App Key和App Secret。serverZone:IM服务器区域,一般使用0表示中国,其余设置值可查看官网文档-服务器部署地区定义。

IYouMeVoiceEngine::getInstance()->init(m_pEventCallback, appKey, appSecret, serverZone, "cn");

加入频道

onEvent收到初始化成功消息YouMeEvent.YOUME_EVENT_INIT_OK后:

加入频道: 其中userID:用户标识,channelID:频道标识,userRole:用户在语音频道里面的角色,主要分为YOUME_USER_HOST(可以随时讲话和播放战歌等)、YOUME_USER_LISTENER(只听不讲)、YOUME_USER_TALKER_FREE(自由讲话者)等,详情见YouMeUserRole定义。

IYouMeVoiceEngine::getInstance()->joinChannelSingleMode(userID, channelID, userRole);

开关音频设备

onEvent收到加入频道成功消息YouMeEvent.YOUME_EVENT_JOIN_OK后: 打开/关闭麦克风:其中mute为true表示关闭麦克风,false表示开启麦克风。

IYouMeVoiceEngine::getInstance()->setMicrophoneMute(mute);

打开/关闭扬声器:其中mute为true表示关闭麦克风,false表示开启麦克风。

IYouMeVoiceEngine::getInstance()->setSpeakerMute(mute);

离开频道,反初始化

离开频道。

IYouMeVoiceEngine::getInstance()->leaveChannelAll();

反初始化。

IYouMeVoiceEngine::getInstance()->unInit();