Video SDK for win32 使用指南

适用范围

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

开发环境

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

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

SDK目录概述

Video SDK中有两个子文件夹:lib、include:

  1. include:SDK的头文件。 详细介绍下inlude,所有接口都在这个文件夹中。
    • IYouMeVoiceEngine.h封装了Video SDK的全部功能接口,集成方可通过 IYouMeVoiceEngine::getInstance ()->…来调用语音SDK接口。
    • IYouMeEventCallback.h包含Video SDK的所有回调事件接口,例如初始化结果,频道加入成功等,都将通过此接口通知集成方。
    • YouMeConstDefine.h包含Video SDK的所有枚举类型定义,如错误码等。
    • SDL.h``SDLDisplay.h包含视频渲染相关方法。
  2. lib:库文件,win32库文件夹,win64库文件夹,其中又分为release版本和debug版本。

SDK集成

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

视频通话流程图

流程图

视频通话时序图

时序图

视频通话相关代码

初始化

实现回调监听

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();