日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

DingRTC的基本功能包含初始化SDK、加入頻道、本地發布、訂閱遠端和離開頻道等。通過閱讀本文,您可以了解DingRTC的基本功能。

前提條件

操作步驟

說明 本文中的實現方法僅供參考,您可以根據實際業務需求進行開發。
  1. 初始化SDK。

    您需要創建RtcEngine實例,并注冊回調。具體回調接口請參見回調及監聽

    engine_ = ding::rtc::RtcEngine::Create(""); // do not pass NULL pointer!
    
    // MyEngineEventListerner實現了RtcEngineEventListener
    listener_ = new MyEngineEventListerner();
    engine_->SetEngineEventListener((ding::rtc::RtcEngineEventListener *)listener_);
    1. 本地預覽。在創建完RtcEngine實例后,您可以創建canvas布局進行本地預覽視頻。

      HWND local_view = GetDlgItem(IDC_STATIC_LOCAL)->m_hWnd;
      ding::rtc::RtcEngineVideoCanvas canvas;
      canvas.displayView = local_view;
      canvas.mirrorMode = ding::rtc::RtcEngineRenderMirrorModeAllMirror;
      canvas.renderMode = ding::rtc::RtcEngineRenderMode::RtcEngineRenderModeCrop;
      engine_->SetLocalViewConfig(canvas, ding::rtc::RtcEngineVideoTrackCamera);
      engine_->StartPreview();
    2. 可選:取消本地預覽。

      engine_->stopPreview();
    3. 設置發布與訂閱。

      • SDK在入會時不會自動推流。想要入會即推流的話,在app里實現

        class MyEngineEventListerner : public ding::rtc::RtcEngineEventListener
        {
        public:
          ..
        	void OnJoinChannelResult(int result, const char *channel,
        		const char *userId, int elapsed) override
        	{
        		// 不建議在SDK消息回調中再調用SDK的API
        		UpdateMeetingInfoParam *param = new UpdateMeetingInfoParam;
        		param->in_room = true;
        		main_wnd_->UpdateUIAsync(param);
        	}
          ..
        };
        
      • SDK默認入會后自動訂閱遠端的音頻流與視頻流,如果您不希望自動訂閱音頻與視頻,可以在入會前通過以下接口設置:

        // 設置自動拉流,以及視頻清晰度
        // 這些值根據需要配置
        bool auto_sub_audio_ = true;
        bool auto_sub_video_ = true;
        ding::rtc::RtcEngineVideoStreamType prefer_video_quality_ = ding::rtc::RtcEngineVideoStreamType::RtcEngineVideoStreamTypeFHD;
        
        engine_->SubscribeAllRemoteAudioStreams(auto_sub_audio_);
        engine_->SubscribeAllRemoteVideoStreams(auto_sub_video_);
        engine_->SetRemoteDefaultVideoStreamType(prefer_video_quality_);
  2. 加入頻道。

    ding::rtc::RtcEngineAuthInfo auth;
    auth.channelId = /* 頻道ID */;
    auth.appId = /* 應用ID */;
    auth.token = /* 頻道鑒權令牌Token */;
    auth.userId = /* 用戶ID */;
    auth.gslbServer = /* GSLB地址. 可不填寫 */;
    engine_->JoinChannel(auth, nick /* 顯示名稱 */);
    

    關于auth字段的定義,參見使用Token鑒權

  3. 發布或取消發布本地流。

    入會之后,也可以改變推流狀態。

    • 發布本地音頻流和視頻流

      如果此時沒有推流,可以調用以下接口進行發布音頻或者視頻:

      engine_->PublishLocalVideoStream(true);
      engine_->PublishLocalAudioStream(true);

      或者取消推流

      engine_->PublishLocalVideoStream(false);
      engine_->PublishLocalAudioStream(false);

      音頻和視頻可以獨立控制。

    • 發布小流

      新SDK擴展了小流概念,使用simulcast支持FHD (>=1080P), HD (>=720P), SD (>=480P), LD (<480P) 4種規格。比如如果您推的是FHD,SDK會自適應為您增加低規格的流。最多增加2層。應用無需編程自動獲得這個能力。

  4. 訂閱或取消訂閱遠程流。

    • 訂閱遠端音頻流和視頻流

      如果您在入會前沒有設置訂閱音頻流和視頻流,則入會后會自動訂閱遠端的音頻流和視頻流;如果您在入會前設置取消自動訂閱音頻流和視頻流,則入會后需要調用以下接口進行手動訂閱:

      //
      // 對整體操作:全部訂閱或者全部不訂閱
      //
      // 音頻
      engine_->SubscribeAllRemoteAudioStreams(true); // false表示不訂閱
      // 視頻
      engine_->SubscribeAllRemoteVideoStreams(true);
      engine_->SetRemoteDefaultVideoStreamType(prefer_video_quality_); // 設置拉流最高質量
      
      //
      // 對個體操作
      //
      // 音頻
      // SDK目前不支持對個體音頻訂閱操作
      // 視頻
      engine_->SubscribeRemoteVideoStream(remoteUid,
          ding::rtc::RtcEngineVideoTrack::RtcEngineVideoTrackCamera,
          true); // false 表示不訂閱
      engine_->SetRemoteVideoStreamType(remoteUid, type);
          // type: RtcEngineVideoStreamTypeFHD, RtcEngineVideoStreamTypeHD
          // RtcEngineVideoStreamTypeSD, RtcEngineVideoStreamTypeLD
          // 表示期望最高訂閱規格。實際碼流還要受限于拉流側的網絡質量

      訂閱視頻還需要設置窗口以便能夠看到視頻內容。比較推薦的時機是在OnRemoteTrackAvailableNotify消息收到時,也可以提前設置,或者晚些時候設置。

      HWND remote_view = GetDlgItem(IDC_STATIC_REMOTE)->m_hWnd;
      ding::rtc::RtcEngineVideoCanvas canvas;
      canvas.displayView = remote_view;
      canvas.mirrorMode = ding::rtc::RtcEngineRenderMirrorModeAllMirror;
      canvas.renderMode = ding::rtc::RtcEngineRenderMode::RtcEngineRenderModeCrop;
      engine_->SetRemoteViewConfig(canvas, p->uid.c_str(), ding::rtc::RtcEngineVideoTrackCamera);
      

  5. 離開頻道。

    engine_->LeaveChannel();

  6. 銷毀引擎。

if(engine_ != NULL) {
		ding::rtc::RtcEngine::Destroy(engine_);
		engine_ = NULL;
}

if(listener_ != NULL) {
    delete listener_;
    listener_ = NULL;
}

后續步驟

您可以下載示例代碼,快速運行Demo,實現頻道內和其他人進行實時音視頻通話,詳情請參見運行 Windows Demo