云会议为您提供Windows端的AliMeeting UI SDK,您可以阅读本文,在本地应用程序中快速集成带有UI界面的音视频会议。
               
                  
                     
前提条件
                  开发环境准备。
                  
                     
                     
                        
                        
                     
                     
                        
                           | 类别 | 
                           说明 | 
                        
                     
                     
                        
                           | Windows系统 | 
                           Windows 7及以上。 | 
                        
                        
                           | Microsoft Visual Studio(简称VS) | 
                           Microsoft Visual Studio 2017及以上。 | 
                        
                        
                           | Windows SDK | 
                           10.0.17134.0及以上。 | 
                        
                        
                           | Qt | 
                           5.12.0(该环境为可选项,也可以不使用)。 | 
                        
                     
                  
                
               
                  集成操作
                  
                     - 下载AliMeeting UI SDK并解压。
SDK
文件压缩包中有
AliMeetingUISDK
文件。
                           
                              - bin:包含运行时所需要的dll文件。
 
                              - include:包含SDK的头文件和lib文件。
 
                           
                         
                      
                     - 创建新项目。
                           - 打开Microsoft Visual Studio。在菜单栏中选择。
 
                           - 选择C++的空项目,填写项目名称为
SDKSample。 
                        
                      
                     -  将解压文件夹中的AliMeetingUISDK下的include文件夹和bin文件夹复制到项目文件夹内,与.sln文件同级。
                     
 
                     - 修改项目配置。
                           您需要在菜单栏和项目属性页上修改配置。
                           打开项目属性页:在项目名上单击右键,选择属性。
                           
                         
                        
                           - 配置Release。
                                 
                                    - 在菜单栏中,将Release设置为x86。

 
                                    - 在项目属性页中,将配置改为Release,将平台改为Win32。

 
                                 
                               
                            
                           - 添加头文件。
在项目属性页中,在左侧导航栏中选择。在右侧配置栏中,选择
附加包含目录,添加
../include/header;,单击
应用。

 
                            
                           - 添加依赖库文件。
                                 
                                    - 在项目属性页中,在左侧导航栏中选择。在右侧配置栏中,选择附加库目录,添加
../include/lib;,单击应用。
 
                                    - 在项目属性页中,在左侧导航栏中选择。在右侧配置栏中,选择附加依赖项,添加
AliMeetingUISDK.lib;,单击应用。
 
                                 
                               
                            
                           - 修改输出目录。
在项目属性页中,在左侧导航栏中选择。在右侧配置栏中,选择
输出目录,修改为
../bin,单击
应用。

 
                            
                        
                      
                     - 添加代码文件。
在项目的
头文件文件夹上单击右键,选择新建文件。

 
                        
                           - 新建项为头文件(.h),文件名为
callback.h。在文件中集成AMUiSDKMeetingCallback类。
                                 其中OnInviteMember、OnMeetingUserStatusChange、OnInMeetingButtonClicked、OnChatButtonClicked、OnRightMouseClickOnMemberList函数可以根据需要选择实现(非必须实现)。
                                 
#include "AMUISDKMeetingMainWindow.h"
using namespace AMUISDK;
class CallBack : public AMUISDKMeetingCallBack {
public:
    CallBack();
    ~CallBack();
    void OnMeetingJoined();
    void OnMeetingFinish(AMUISDKFinishCode code, std::string& reason);
    void OnError(AMUISDKErrorCode code, std::string& reason);
    void OnInviteMember(std::string& message);
    void OnMeetingUserStatusChange(AMUISDKMeetingUser* meetingUser, AMUISDKUserStatusEvent event);
    void OnInMeetingButtonClicked(std::string& str);
    void OnChatButtonClicked();
    void OnRightMouseClickOnMemberList(AMUISDKMeetingUser* meetingUser);
    void OnCallUnattendMember(AMUISDKMeetingUser* meetingUser);
};
 
                            
                           - 新建项为C++文件(.cpp),文件名为
callback.cpp。文件内容为定义消息回调的接口,处理回调消息。#include "callback.h"
CallBack::CallBack()
{
}
CallBack::~CallBack()
{
}
void CallBack::OnMeetingJoined()
{
    //todo 入会成功消息处理
}
void CallBack::OnMeetingFinish(AMUISDKFinishCode code, std::string& reason)
{
    //todo 离会成功消息处理
}
void CallBack::OnError(AMUISDKErrorCode code, std::string& reason)
{
    //todo 会议错误消息处理
}
void CallBack::OnInviteMember(std::string& message)
{
    //todo 会中邀请消息处理
}
void CallBack::OnMeetingUserStatusChange(AMUISDKMeetingUser* meetingUser, AMUISDKUserStatusEvent event)
{
    //todo 会中成员状态消息处理
}
void CallBack::OnInMeetingButtonClicked(std::string& str)
{
    //todo 用户会中相关按钮点击事件记录处理
}
void  CallBack::OnChatButtonClicked()
{
    //todo 会中聊天按钮点击事件处理
}
void  CallBack::OnRightMouseClickOnMemberList(AMUISDKMeetingUser* meetingUser)
{
    //todo 参会成员列表鼠标右键点击事件
}
void  CallBack::OnCallUnattendMember(AMUISDKMeetingUser* meetingUser)
{
    //todo 呼叫未入会人员事件
}
 
                            
                           - 新建项为C++文件(.cpp),文件名为
main.cpp。文件内容为构建UI配置信息和入会相关信息,并进入会议。
                                 
                                    - 添加头文件,使用命名空间AMUISDK,并定义main函数。
#include "AMUISDKMeetingMainWindow.h"
#include "callback.h"
#pragma execution_character_set("utf-8")
using namespace AMUISDK;
int main() {
}
 
                                    - 在main函数中创建CallBack类和AMUISDKMeetingMainWindow类的实例。
CallBack *cb_ = new CallBack();
AMUISDKMeetingMainWindow *main_window_ = AMUISDKMeetingMainWindow::MeetingInstance(cb_);
 
                                    - 在main函数中构建UI配置信息。
AMUISDKGuiConfig ui_param;
ui_param.app_logo = "d:/***/test.png";                 
ui_param.app_window_text = "test";                     
ui_param.logo_banner = "";                             
ui_param.meeting_topic = "测试";
ui_param.meeting_time = "";
ui_param.meeting_code = "";
ui_param.meeting_passwd = "";
ui_param.config_path = "d:/xxxxxxx";                   
ui_param.invite_info = "";
ui_param.language = ZH_CN;
ui_param.hasQApplication = false;
ui_param.invite_member = false;
ui_param.use_sdk_chat_module = true;
                                          
                                          注意 
                                             
                                                - UI配置信息中的所有项目均可以为空。
 
                                                - 如果
meeting_topic、meeting_time、meeting_code、meeting_passwd均为空,窗口上方会议主题右侧不显示会议详情的按钮,若有一项不为空,则显示会议详情按钮。通过调用查询会议详情接口获取,更多信息,请参见查询会议详情。
                                                 
                                             
                                           
                                        
                                       
                                          
                                          
                                             
                                             
                                          
                                          
                                             
                                                | 参数 | 
                                                描述 | 
                                             
                                          
                                          
                                             
                                                | app_logo | 
                                                设置WindowsIcon(程序图标)。 | 
                                             
                                             
                                                | app_window_text | 
                                                设置WindowsTest(程序名称)。 | 
                                             
                                             
                                                | logo_banner | 
                                                设置的是会中左下角公司logotip图标的文件地址,图标格式可以为png、jpg,控件大小为130Px × 20Px,图标大小可以不和控件大小一致,但是可能会出现拉伸或挤压的情况。 | 
                                             
                                             
                                                | meeting_topic | 
                                                会议主题 | 
                                             
                                             
                                                | meeting_time | 
                                                会议开始和结束时间 | 
                                             
                                             
                                                | meeting_code | 
                                                会议入会口令 | 
                                             
                                             
                                                | meeting_passwd | 
                                                会议入会密码 | 
                                             
                                             
                                                | config_path | 
                                                自定义设置存储用户配置文件的路径。 | 
                                             
                                             
                                                | invite_info | 
                                                自定义分享时的文案。 | 
                                             
                                             
                                                | language | 
                                                会议的语言文字。 | 
                                             
                                             
                                                | hasQApplication | 
                                                外部封装程序是否启用了QT,并定义了QApplication,取值:true或false。默认为false,不开启。 | 
                                             
                                             
                                                | invite_member | 
                                                是否启用邀请成员功能,取值:true或false。默认为false,不开启。 | 
                                             
                                             
                                                | use_sdk_chat_module | 
                                                是否启用SDK中自带的聊天功能,取值:true或false。默认为true,开启。如果取值false,需要实现AMUiSDKMeetingCallback类中的OnChatButtonClicked回调,实现自己外部的聊天功能。 | 
                                             
                                          
                                       
                                     
                                    - 在main函数中构建入会相关信息。
AMUISDKMeetingConfig meet_param;
meet_param.client_appid = "";  
meet_param.sls_info = "";   
meet_param.meeting_uuid = "";  
meet_param.member_uuid = "";   
meet_param.meeting_token = ""; 
meet_param.meeting_domain = ""; 
meet_param.user_id = "";       
meet_param.user_name = "";     
meet_param.audio_only = false;
meet_param.mute_audio = false;
meet_param.speaker_enabled = true;
meet_param.mute_video = false;
meet_param.beauty_enabled = true;
meet_param.floor_change_disabled = false;
                                          
                                          注意 
                                             
                                                - 入会信息配置项中,参数
client_appid、meeting_uuid、member_uuid、meeting_token、meeting_domain、user_id不可以为空,否则将会入会失败。通过调用检查会议口令接口获取,更多信息,请参见检查会议口令。
                                                 
                                                user_id设为-1,并且传入user_name,可以使用匿名入会,但是如果会中没有成员,不能匿名入会。
                                                 
                                                - 可选配置参数
audio_only、mute_audio、speaker_enabled、mute_video,可以根据需求设置。
                                                 
                                             
                                           
                                        参数说明
                                          
                                          
                                             
                                             
                                          
                                          
                                             
                                                | 参数 | 
                                                描述 | 
                                             
                                          
                                          
                                             
                                                | client_appid | 
                                                企业接入阿里云获得的唯一标识。 | 
                                             
                                             
                                                | sls_info | 
                                                上传日志的地址。可以为空。 | 
                                             
                                             
                                                | meeting_uuid | 
                                                会议的唯一标识。 | 
                                             
                                             
                                                | member_uuid | 
                                                成员的唯一标识。 | 
                                             
                                             
                                                | meeting_token | 
                                                会议校验令牌。 | 
                                             
                                             
                                                | meeting_domain | 
                                                会议连接的域名。 | 
                                             
                                             
                                                | user_id | 
                                                会议中成员的ID。 | 
                                             
                                             
                                                | user_name | 
                                                会议中成员的名字。 | 
                                             
                                             
                                                | audio_only | 
                                                是否开启音频模式,取值:true或false。默认为false,不开启。当取值为true时,则是音频会议,会中不允许再打开摄像头。 | 
                                             
                                             
                                                | mute_audio | 
                                                入会时是否开启音频静音,取值:true或false。默认为false,不开启。 | 
                                             
                                             
                                                | speaker_enabled | 
                                                入会时是否启用扬声器,取值:true或false。默认为true,开启。 | 
                                             
                                             
                                                | mute_video | 
                                                入会时是否开启视频静音,取值:true或false。默认为false,不开启。 | 
                                             
                                             
                                                | beauty_enabled | 
                                                是否启用美颜,取值:true或false。默认为true,开启。 | 
                                             
                                             
                                                | floor_change_disabled | 
                                                是否启用语音激励,发言人自动切换到大窗显示,取值:true或false。默认为false,不开启。 | 
                                             
                                          
                                       
                                     
                                    - 在main函数中构建加入会议代码。
main_window_->JoinMeeting(ui_param, meet_param);
 
                                 
                               
                            
                        
                      
                     - 在菜单栏单击本地Windows调试器,进行编译运行。
                     
 
                  
               
               
                  状态码说明
enum AMUISDKFinishCode {
    AMUISDKFinishCodeLeaveBySelf = 0,                       //主动退出会议
    AMUISDKFinishCodeLeaveByKick = 1,                       //被动退出会议
    AMUISDKFinishCodeLeaveByHangupAll = 2,                  //挂断所有人
    AMUISDKFinishCodeOtherClientJoined = 3,                 //同一个userid的用户进入了会议
    AMUISDKFinishCodeSystemWillSleep = 4                    //系统休眠
};
               
                  错误码说明
enum AMUISDKErrorCode {
    AMUISDKErrorCodeIllegalParameters = 0,                  //非法参数,接口调用参数不正确
    AMUISDKErrorCodeInitializedFailed = 1,                  //会议初始化失败,如无法获取会议信息
    AMUISDKErrorCodeDevicePermissionNotGranted = 2,         //设备无权限
    AMUISDKErrorCodeNoDevice = 3,                           //无麦克风设备
    AMUISDKErrorCodeMediaServerConnectFailed = 4,           //无法连接媒体服务
    AMUISDKErrorCodeRoomFull = 5,                           //会议并发满了
    AMUISDKErrorCodeJoinMeetingTimeout = 6,                 //入会超时
    AMUISDKErrorCodeNetworkUnAvailable = 7,                 //网络不可用
    AMUISDKErrorCodeMediaNegotiationFailed = 8              //媒体协商失败
};
               
                  成员状态事件说明
enum AMUISDKUserStatusEvent{
    AMUISDKUserStatusEventOnline = 0,                        //成员上线
    AMUISDKUserStatusEventOffline = 1,                       //成员离线
    AMUISDKUserStatusEventAudioMute = 2,                     //静音
    AMUISDKUserStatusEventAudioUnmute = 3,                   //取消静音
    AMUISDKUserStatusEventVideoMute = 4,                     //禁视频
    AMUISDKUserStatusEventVideoUnmute = 5,                   //打开视频
    AMUISDKUserStatusEventStartTalking = 6,                  //说话中
    AMUISDKUserStatusEventStopTalking = 7,                   //结束说话
    AMUISDKUserStatusEventMainSpeaker = 8,                   //主讲人切换
};