Windows语音通话SDK集成及功能实现(实时语音通话四)

实时语音通话系列文章四。本篇讲述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);

        //获取SessionID
        m_sessionID = ui.m_edSessionID->text();

        //以当前时间去生成流ID
        QTime 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();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值