实时语音通话系列文章四。本篇讲述Windows环境下集成即构科技语音通话SDK,实现语音通话功能流程。
一、SDK集成指引
1、准备环境
请确保开发环境满足以下技术要求:
Visual Studio 2013以上版本
Windows7、Windows8、Windows10或以上版本
麦克风、摄像头等支持音视频功能的外部设备
2、下载 SDK
请从 ZegoAudioRoom Windows 下载 SDK。
如果要实现播放本地音频、视频文件的功能(可用于播放背景音乐,播放MV,播放直播音效等场景),请下载包含 MediaPlayer 功能的 SDK,请下载 ZegoAudioRoom_MediaPlayer Windows。
3、集成SDK
3.1 SDK目录说明
SDK包含两个目录,每个目录包含的文件如下。
1、include目录—————包含SDK头文件,API具体参数及说明
2、libs目录——————–包含SDK的.lib和.dll文件
3.2 工程设置
将include目录加入到头文件搜索路径
·工程目录选项右键”属性”–>”C/C++”–>”常规”–>在附加包含目录中添加include目录
将libs\Release目录加入到库搜索路径
·工程目录选项右键”属性”–>”链接器”–>”常规”–>在附加库目录中添加libs目录
指定链接库ZegoAudioRoom.lib
·工程目录选项右键”属性”–>”链接器”–>”输入”–>在附加依赖项中添加ZegoAudioRoom.lib
将ZegoAudioRoom.dll复制到二进制运行文件所在目录下。
二、功能实现流程
实时语音场景的典型之一是,同一会话中的成员进行实时语音对话。
以 2 人间的实时语音为例,主要流程如下:
1、登录房间
用户间进行实时语音对话前,需要先登录到同一个房间。
AudioLive 中登录相关源码片段演实时语音示如下,仅供参考:
ZegoMainDialog.cpp// 登录房间,成功后将会在OnLoginRoom中回调
AUDIOROOM::LoginRoom(sessionID);void ZegoAudioLive::OnLoginRoom(int errorCode, const QString& roomID)
{if (errorCode == 0){addLogString(QStringLiteral("加入session成功"));if (isManual){ui.m_switchStartPublish->setText(QStringLiteral("开始直播"));ui.m_switchStartPublish->setEnabled(true);}}else{addLogString(QStringLiteral("加入session失败: %1").arg(errorCode));}
}
2、发布直播
房间内成员均可发布直播,用户进入房间成功,默认会自动发布直播。此时 SDK 会自动开始推流,用户无需手动触发。
AudioLive 中手动发布直播相关源码片段演示如下,仅供参考:
ZegoMainDialog.cpp// 用户主动点击发布直播按钮
void ZegoAudioLive::OnButtonClickedPublish()
{if (ui.m_switchStartPublish->text() == QStringLiteral("进入")){...//不能重复点击ui.m_switchStartPublish->setEnabled(false);//获取SessionIDm_sessionID = ui.m_edSessionID->text();//以当前时间去生成流IDQTime currentTime = QTime::currentTime();int ms = currentTime.msec();QString strStreamId;strStreamId = QString(QStringLiteral("s-windows-%1-%2")).arg(m_strEdUserId).arg(ms);m_strPublishStreamID = strStreamId;AUDIOROOM::LoginRoom(m_sessionID.toStdString().c_str());AUDIOROOM::SetManualPublish(isManual);addLogString(QStringLiteral("开始加入session: %1").arg(m_sessionID));}...else if (ui.m_switchStartPublish->text() == QStringLiteral("开始直播")){AUDIOROOM::StartPublish();ui.m_switchStartPublish->setEnabled(false);}}
3、播放直播
房间内成员均可播放直播,登录房间成功后,SDK 会自动拉流播放直播。用户无需手动触发拉流。
4、结束音频直播
音频通话结束后的操作主要是登出房间、清理视图或数据等。开发者可按需调用。
AudioLive 中结束音频直播相关源码片段演示如下,仅供参考:
ZegoMainDialog.cpp// 关闭实时语音通话Dialog
void ZegoAudioLive::OnClose()
{streamList.clear();AUDIOROOM::LogoutRoom();this->close();
}