实时音视频RTC

    集成SDK

    开发环境

    请确保开发环境满足以下技术要求:

    • Visual Studio 2017 版本
    • 安装Windows Softerware Development Kit - Windows 10.0.17763.132 及以上
    • 安装Microsoft Visual C++ 2017 Redistributable (x64/x86)
    • Windows7、Windows8、Windows10或以上版本
    • 支持麦克风、摄像头采集,或拥有支持音视频功能的外部设备

    SDK下载

    请前往RTC下载中心进行下载。

    SDK目录说明

    1. include目录 ------ 放置api头文件
    2. libs目录 ------ 放置 RtcWindowsSdkDll.dll 和 RtcWindowsSdkDll.lib,以及证书文件 a
    3. third_libs目录 ------ 是libs目录的子目录,放置依赖的第三方库 ffmpeg.dll/ffmpeg.dll.lib
      websockets_rtc.dll/websockets_rtc.lib
      libcrypto-1_1-x64.dll
      libssl-1_1-x64.dll
      libcurl.dll/libcurl.lib

    SDK集成

    1. 将include目录加入到头文件搜索路径。工程目录选项右键”属性”—->”c/c++”—->”常规”—->附加包含目录 添加include目录,如下图: image.png
    2. 将libs,third_libs 目录加入到库搜索路径。工程目录选项右键”属性”—->”链接器”—->”常规”—->附加库目录 添加libs/third_libs目录,如下图: image.png
    3. 指定链接库,指定libs/third_libs目录下的xxxx.lib。工程目录选项右键”属性”—->”链接器”—->”输入”—->附加依赖项 添加xxxx.lib,如下图: image.png
    4. 将libs 和 third_libs目录下的xxxx.dll复制到二进制运行文件目录下。

    完成以上步骤后,即可开始调用Windows RTC的API。

    API调用流程

    • c++ interface calling flow windows_rtc_multi_instance.png
    • c# interfac calling flow

    API codes使用样例

    ......
    externalVideoCapturer_ = std::make_shared<ExternalVideoCapturer>();
        rtcRoomClient_ = baidurtc::createBaiduRtcRoomClient();
        if (rtcRoomClient_) {
            rtcRoomClient_->initSdk((char*)appid, (char*)token, (char*)cerpath);
            if (isEnableExternalVideoCapturer) {
                rtcRoomClient_->registerExternalVideoCapturer(externalVideoCapturer_);
            }
            rtcRoomClient_->registerVideoFrameObserver(videoFrameListener_, 2);
            rtcRoomClient_->registerRtcMessageListener(this);
            rtcRoomClient_->setBitRate(300000);//500kbs;
        }
    ......
    case WM_COMMAND:
            if (button_ == reinterpret_cast<HWND>(lp)) {
                if (BN_CLICKED == HIWORD(wp)) {
                    //OnDefaultAction();
                    char roomId[52];
                    GetWindowTextA(
                        edit1_,
                        roomId,
                        52);
                    if (roomId[0] == '\0') {
                        MessageBox("提示", "房间号不能为空", true);
                        return false;
                    }
                    //produce random user id
                    int userId = random(10000, 20000);
                    std::string userId_str = int2string(userId);
                    if (isPublisher) {
                        rtcRoomClient_->publishStreaming(roomId, (char*)userId_str.c_str(), true);
                    }
                    else {
                        rtcRoomClient_->subscribeStreaming((char*)roomid, (char*)userid, (char*)feedid);
                    }
                }
            }
    ......

    打包应用程序-依赖的系统库

    • libgcc_s_dw2-1.dll
    • libstdc++-6.dll
    • libwinpthread-1.dll
    • ucrtbased.dll
    • vcruntime140d.dll
    • vc++ 运行环境 vcredist_x64, 在打包程序选项中选中后,会自动打包到安装程序包中
    上一篇
    概述
    下一篇
    开发环境搭建