实时音视频云

  • 快速开始

    最近更新时间:2018-07-05 16:22:08

    1、初始化连麦相关对象

    调用 QNRTCEngine 接口进行全局初始化:

    QNRTCEngine::Init();
    // 配置日志输出等级、目录及文件名,不调用 = 不输出
    QNRTCEngine::SetLogParams(qiniu::LOG_INFO, "rtc-log", "rtc.log");
    

    创建房间 QNRTCRoom 实例(全局唯一):

    QNRTCRoom* _rtc_room_interface = QNRTCRoom::ObtainRoomInterface();
    

    获取连麦音频 QNRTCAudio 接口实例指针,连麦视频 QNRTCVideo 接口实例指针:

    QNRTCAudio* _rtc_audio_interface = _rtc_room_interface->ObtainAudioInterface();
    QNRTCVideo* _rtc_video_interface = _rtc_room_interface->ObtainVideoInterface();
    

    设置房间回调、音频回调以及视频回调:

    // this 为实现了所有回调接口类的对象指针
    _rtc_room_interface->SetRoomListener(this);
    _rtc_audio_interface->SetAudioListener(this);
    _rtc_video_interface->SetVideoListener(this);
    

    其中各个 listener (QNRTCRoom::QNRTCRoomListenerQNRTCAudio::QNRTCAudioListener以及QNRTCVideo::QNRTCVideoListener)的回调相关说明,详见【代理回调】。

    2、设置摄像头相关参数

    设置视频采集、预览、发布等相关参数

    CameraSetting camera_setting;
    camera_setting.render_hwnd = GetDlgItem(IDC_STATIC_VIDEO_PREVIEW)->m_hWnd;
    camera_setting.device_name = unicode2utf(cur_dev_name.GetBuffer());
    camera_setting.device_id   = cur_dev_id;
    camera_setting.width       = std::get<0>(tuple_size);
    camera_setting.height      = std::get<1>(tuple_size);
    camera_setting.max_fps     = 15;
    camera_setting.bitrate     = 500000;
    

    3、加入房间

    _rtc_room_interface->JoinRoom(_room_token);
    

    此处 _room_token 需要 App 从 App Server 中获取,App Server 如何生成 token 可查阅文档

    4、发布本地音/视频流

    enable_audio_true 时可发布音频,而 enable_video_true 时则可发布视频。

    _rtc_room_interface->Publish(true, true);
    

    5、订阅远端用户音视频流

    在远端用户发布媒体流的回调通知中订阅该用户

    void CRtcXXX::OnRemotePublish(const std::string& user_id_, bool has_audio_, bool has_video_){
        // itor->second.render_wnd_ptr->m_hWnd 为渲染视频的窗口句柄
        _rtc_room_interface->Subscribe(user_id_, itor->second.render_wnd_ptr->m_hWnd);
    }
    

    也可以在远端发布后,根据产品需求在合适的时机通过调用如下的方法来订阅:

    virtual int Subscribe(const std::string& user_id_, void* render_hwnd_) = 0;
    

    注:用于渲染视频的窗口句柄,在 MFC 中直接使用窗口类的 m_hWnd 成员变量获取,Qt 中通过窗口类的 winId() 方法进行获取。

    以上内容是否对您有帮助?
  • Close