本规范仅适用于使用游密实时音视频引擎win32接口开发多人实时音视频功能的开发者。
在开始集成游密Video SDK 前,请确保开发环境满足以下要求:
Video SDK中有两个子文件夹:lib、include:
include
:SDK的头文件。
详细介绍下inlude,所有接口都在这个文件夹中。
IYouMeVoiceEngine.h
封装了Video SDK的全部功能接口,集成方可通过 IYouMeVoiceEngine::getInstance ()->…来调用语音SDK接口。IYouMeEventCallback.h
包含Video SDK的所有回调事件接口,例如初始化结果,频道加入成功等,都将通过此接口通知集成方。YouMeConstDefine.h
包含Video SDK的所有枚举类型定义,如错误码等。SDL.h``SDLDisplay.h
包含视频渲染相关方法。lib
:库文件,win32库文件夹,win64库文件夹,其中又分为release版本和debug版本。实现回调监听
class CYMEventCallback : public IYouMeEventCallback
{
public:
virtual void onEvent(const YouMeEvent event, const YouMeErrorCode error, const char * room, const char * param) override;
};
初始化Video SDK:其中appKey和appSecret为在游密后台申请的App Key和App Secret。serverZone:IM服务器区域,一般使用0表示中国,其余设置值可查看官网文档-服务器部署地区定义。
IYouMeVoiceEngine::getInstance()->init(m_cConfig.m_pEventCallback, m_cConfig.appKey.c_str(), m_cConfig.appSecret.c_str(), RTC_CN_SERVER, "cn");
onEvent收到初始化成功消息YouMeEvent.YOUME_EVENT_INIT_OK后: 设置视频帧率:其中fps为帧率(3-30),默认15帧。
IYouMeVoiceEngine::getInstance()->setVideoFps(fps);
设置本地预览视频分辨率:其中localVideoWidth为宽,localVideoHeight为高。
IYouMeVoiceEngine::getInstance()->setVideoLocalResolution(localVideoWidth, localVideoHeight);
设置网络传输视频分辨率:其中netVideoWidth为宽,netVideoHeight为高。
IYouMeVoiceEngine::getInstance()->setVideoNetResolution(netVideoWidth, netVideoHeight);
加入频道: 其中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);
打开/关闭摄像头(StartCapturer/StopCapturer)。
IYouMeVoiceEngine::getInstance()->StartCapturer();
绑定自己本地的视频流和渲染组件。
HWND hWnd = GetDlgItem(IDC_STATIC_VIDEO2)->m_hWnd; //其中IDC_STATIC_VIDEO2为资源视图的Text Control
IYouMeVideoRenderEngine::getInstance()->createLocalRender(hWnd);
onEvent收到远端视频流开启的消息YouMeEvent.YOUME_EVENT_OTHERS_VIDEO_ON后: 绑定远端视频流和渲染组件:其中userID为远端用户加入频道时的userID,hWnd为渲染窗口句柄。
HWND hWnd = GetDlgItem(IDC_STATIC_VIDEO1)->m_hWnd; //其中IDC_STATIC_VIDEO1为资源视图的Text Control
IYouMeVideoRenderEngine::getInstance()->createRender(userID, hWnd))
onEvent收到远端视频流关闭的消息YouMeEvent.YOUME_EVENT_OTHERS_VIDEO_SHUT_DOWN后: 删除远端视频流渲染:其中userID为远端用户加入频道时的userID。
IYouMeVideoRenderEngine::getInstance()->deleteRender(userID);
离开频道。
IYouMeVoiceEngine::getInstance()->leaveChannelAll();
反初始化。
IYouMeVoiceEngine::getInstance()->unInit();