实时音视频

  • 实时音视频 > 使用指南 > Windows >发布和订阅

    发布和订阅

    最近更新时间: 2022-03-24 14:19:06

    本部分介绍能够实现向房间发布或取消发布媒体流,订阅或停止订阅媒体流等操作。

    发布 Track

    发布 Track 前,需要对 Track 进行配置和创建,详情请见音视频采集,创建好 Track 后即可将该 Track 通过 QNRTCClient.Publish 向房间内进行发布。

    virtual int Publish(LocalTrackList& track_list) = 0;
    

    其中,发布结果通过QNPublishResultCallback 回调了发布操作的结果通知,其接口定义如下:

    class QINIU_EXPORT_DLL QNPublishResultCallback
    {
    public:
        /**
        * 发布成功后触发此回调
        */
        virtual void OnPublished() = 0;
    
        /**
        * 发布失败后触发此回调
        *
        * @param error_code 错误码
        * @param error_message 错误消息
        */
        virtual void OnPublishError(int error_code, const std::string& error_message) = 0;
    protected:
        ~QNPublishResultCallback() {}
    };
    

    发布 Track 成功后,远端用户会收到如下通知回调:

    class QNClientEventListener
    {
    public:
        // 当远端 track 发布时会触发此回调
         virtual void OnUserPublished(const std::string& remote_user_id_, const RemoteTrackList& track_list) = 0;
    }
    

    取消发布 Track

    调用 QNRTCClient.UnPublish 取消发布本地媒体流。

    // 取消发布本地音视频 track,支持可变参数
    virtual int UnPublish(LocalTrackList& track_list) = 0;
    

    取消发布成功后,远端用户会收到如下通知回调:

    class QNClientEventListener
    {
    public:
        // 当远端 track 取消发布时会触发此回调
       virtual void OnUserUnpublished(const std::string& remote_user_id, const RemoteTrackList& track_list) = 0;
    }
    

    订阅远端 Track

    在 v4.x.x 版本后提供了默认自动订阅的功能,用户可以通过调用 QNRTCClient.SetAutoSubscribe 进行对自动订阅功能的开启与关闭,默认为开启状态。

    virtual void SetAutoSubscribe(bool auto_subscribe) = 0;
    

    在自动订阅功能关闭时,用户可以通过调用 QNRTCClient.Subscribe 接口订阅远端 Tracks。

    // 订阅远端音视频 track,支持可变参数
    virtual void Subscribe(const RemoteTrackList& track_list) = 0;
    

    本地订阅远端用户媒体流成功后,会触如下回调:

    class QNClientEventListener 
    {
    public:
        // 当成功订阅远端 track 时会触发此回调
        virtual void OnSubscribed(const std::string& remote_user_id, const RemoteAudioTrackList& remote_audio_track_list, const RemoteVideoTrackList& remote_video_track_list) = 0;
    }
    

    取消订阅远端 Track

    调用 QNRTCClient.UnSubscribe 接口取消订阅远端 Tracks。

    virtual void UnSubscribe(const RemoteTrackList& track_list) = 0;
    
    以上内容是否对您有帮助?
  • Qvm free helper
    Close