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

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

前提條件

  • 您已下載并集成最新版本的SDK。具體操作,請參見iOS端集成SDK

  • 您已獲取加入頻道必需的頻道鑒權令牌(Token)。具體操作,請參見使用Token鑒權

操作步驟

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

    您需要創建DingRtcEngine實例,并注冊回調。如果您在ViewController中持有DingRtcEngine實例,請聲明屬性。具體回調接口請參見回調及監聽

    @interface ViewController () <DingRtcEngineDelegate>
    @property (nonatomic, strong) DingRtcEngine *engine;
    @end
    self.engine = [DingRtcEngine sharedInstance:self extras:@""]; 
    1. 本地預覽。在創建完DingRtcEngine實例后,您可以創建canvas布局進行本地預覽視頻。

      DingRtcVideoCanvas *canvas = [[DingRtcVideoCanvas alloc] init];
      canvas.renderMode = DingRtcRenderModeAuto;
      canvas.view = view; /* 預覽窗口view,iOS為UIView對象,Mac為NSView對象*/
      canvas.mirrorMode = DingRtcRenderMirrorModeOnlyFrontCameraPreviewEnabled;
      [self.engine setLocalViewConfig:canvas forTrack:DingRtcVideoTrackCamera];
      [self.engine startPreview];  
      說明
      • DingRtcRenderMode提供四種渲染模式:

        • DingRtcRenderModeAuto(推薦):自動。

        • DingRtcRenderModeStretch:拉伸填充視圖,不保持視頻比例。

        • DingRtcRenderModeFill:在保持視頻寬高比的同時縮放,填充黑邊。

        • DingRtcRenderModeCrop:在保持視頻寬高比的同時縮放,并裁剪以適合視圖。

      • DingRtcRenderMirrorMode在本地或遠端均可設置鏡像模式,并提供三種鏡像模式:

        • DingRtcRenderMirrorModeOnlyFrontCameraPreviewEnabled:只有前置攝像頭預覽鏡像,其余不鏡像。

        • DingRtcRenderMirrorModeAllEnabled:全部鏡像。

        • DingRtcRenderMirrorModeAllDisabled:全部不鏡像。

    2. 可選:取消本地預覽。

      [self.engine stopPreview];  
    3. 設置發布與訂閱。

      • SDK默認入會后不會自動發布音頻流與視頻流,如果您希望自動發布音頻和視頻,可以在入會前通過以下接口設置:

        [self.engine publishLocalAudioStream:YES];//默認發布音頻流
        [self.engine publishLocalVideoStream:YES];//默認發布視頻流
      • SDK默認入會后自動訂閱遠端的音頻流與視頻流,如果您不希望自動訂閱音頻與視頻,可以在入會前通過以下接口設置:

        [self.engine subscribeAllRemoteAudioStreams:NO];//不訂閱音頻流
        [self.engine subscribeAllRemoteVideoStreams:NO];//不訂閱視頻流
  2. 加入頻道。

    DingRtcAuthInfo *authinfo = [[DingRtcAuthInfo alloc]init];
    authinfo.channelId   	= /* 您的channelId */;
    authinfo.appId     		= /* 您的Appid */;
    authinfo.userId   		= /* 您的userId */;
    authinfo.token     		= /* 您的token */;
    authinfo.gslbServer  	= /* 您的gslb地址 */;
    [self.engine joinChannel:authinfo name:@"userName" onResult:^(NSInteger errCode,NSString * _Nonnull channel,NSInteger elapsed){
         // 加入頻道UI處理
    }];

    參數

    描述

    appId

    應用ID,在控制臺應用管理頁面創建和查看。

    channelId

    頻道ID。1~64位,由大小寫字母、數字、下劃線(_)、短劃線(-)組成。

    userId

    用戶ID。1~64位,由大小寫字母、數字、下劃線(_)、短劃線(-)組成。

    說明

    同一個用戶ID在其他端登錄,先入會的端會被后入會的端踢出頻道。

    token

    頻道鑒權令牌。

    gslbServer

    服務地址,可為空,默認值為:"https://gslb.dingrtc.com",請您通過業務服務器下發到客戶端SDK,不建議您將該地址固化在客戶端代碼。

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

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

      如果您在入會前沒有設置發布音頻流和視頻流,則入會后不會自動發布本地的音頻流和視頻流,需要調用以下接口進行手動發布:

      [self.engine publishLocalAudioStream:YES];//發布音頻流
      [self.engine publishLocalVideoStream:YES];//發布視頻流
    • 取消發布本地音頻流和視頻流

      如果您需要取消發布本地的音頻流和視頻流,請調用以下接口:

      [self.engine publishLocalAudioStream:NO];//取消發布音頻流
      [self.engine publishLocalVideoStream:NO];//取消發布視頻流
  4. 訂閱或取消訂閱遠程流。

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

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

      [self.engine subscribeAllRemoteAudioStreams:YES];//訂閱全部的遠端音頻流
      [self.engine subscribeAllRemoteVideoStreams:YES];//訂閱全部的遠端視頻流

      訂閱成功后,您可以在onRemoteTrackAvailableNotify回調里渲染遠端的視頻畫面:

      - (void)onRemoteTrackAvailableNotify:(NSString *_Nonnull)uid audioTrack:(DingRtcAudioTrack)audioTrack videoTrack:(DingRtcVideoTrack)videoTrack {
          dispatch_async(dispatch_get_main_queue(), ^{
              // UI或者邏輯處理,例如渲染遠端視頻流的操作如下。
              if(videoTrack == DingRtcVideoTrackCamera) {
              // camera track
              DingRtcVideoCanvas *canvas = [[DingRtcVideoCanvas alloc] init];
              canvas.renderMode = /* renderMode */;
              canvas.view = view;/* 渲染view */
              [self.engine setRemoteViewConfig:canvas uid:uid forTrack:DingRtcVideoTrackCamera];
            }
          });
      }  
    • 取消訂閱遠端音頻流和視頻流

      如果您需要取消訂閱遠端的音頻流和視頻流,請調用以下接口:

      [self.engine subscribeAllRemoteAudioStreams:NO];//取消訂閱全部的遠端音頻流
      [self.engine subscribeAllRemoteVideoStreams:NO];//取消訂閱全部的遠端視頻流
    • 訂閱特定用戶的音頻流和視頻流

      當已取消訂閱所有的音頻流和視頻流之后,如果您需要訂閱某個遠端用戶的音頻流和視頻流,可以通過調用以下接口實現(如果需要取消訂閱此遠端用戶的音頻流和視頻流,參數sub傳入NO即可):

      [self.engine subscribeRemoteAudioStream:uid sub:YES];//訂閱特定用戶的音頻流
      [self.engine subscribeRemoteVideoStream:uid track:DingRtcVideoTrackCamera sub:YES];//訂閱特定用戶的視頻流
    • 訂閱不同規格相機流

      如果您需要訂閱流暢規格相機流,請調用以下接口:

      [self.engine setRemoteDefaultVideoStreamType:DingRtcVideoStreamTypeLD];
      說明 此接口作用于后續入會的遠端用戶,對于調用此接口之前已經入會的遠端用戶,此接口不產生影響。
    • 取消訂閱所有遠端用戶音頻流和視頻流

      如果您希望當前會議中及后續入會的用戶全部取消訂閱,請調用以下接口:

      [self.engine subscribeAllRemoteAudioStreams:NO];
      [self.engine subscribeAllRemoteVideoStreams:NO];
  5. 離開頻道。

    [self.engine leaveChannel]; 

后續步驟

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