全部產品
Search
文件中心

ApsaraVideo Live:iOS端實現RTS拉流

更新時間:Feb 11, 2026

通過閱讀本文,您可以瞭解iOS端阿里雲播放器SDK實現超低延時直播的方法。

前提條件

環境中已安裝CocoaPods。

SDK整合

使用pod方式添加阿里雲播放器SDK的依賴檔案。

  1. 開啟終端視窗。

  2. 進入專案所在路徑,建立Podfile檔案。

    pod init

  3. 編輯Podfile檔案,添加最新版本的依賴。

    player_sdk_version = 'x.x.x' # 建議使用最新版本
    rts_sdk_version = '7.12.0' # 獨立版本號碼,目前最新版本
    
    # 播放器SDK 
    pod 'AliPlayerSDK_iOS' , player_sdk_version
    # 播放器與Rts低延時直播組件的橋接層(AlivcArtc),版本號碼需要與播放器一致,需要和 Rts低延時直播組件 一起整合
    pod 'AliPlayerSDK_iOS_ARTC' , player_sdk_version
    # Rts低延時直播組件
    pod 'RtsSDK' , rts_sdk_version 
    重要
    • 播放器與RTS低延時直播組件的橋接層(AlivcArtc)需與播放器版本號碼保持一致,且必須與RTS低延時直播組件同時整合。

    • 播放器版本請參考SDK下載,建議使用最新版本。阿里雲播放器版本要求:推薦使用最新版本,最低支援V5.4.5.0。

    • 常見問題請參見iOS播放器常見問題

  4. 安裝SDK。執行之後,會產生*.xcworkspace檔案,表示SDK整合完畢。

    pod install

阿里雲播放器SDK介面使用

調用阿里雲播放器SDK介面實現超低延時直播功能。更多阿里雲播放器SDK功能,請參見進階功能API說明

說明
  • 以下為範例程式碼。詳細代碼請參見API-Example RTS超低延時直播播放模組,該工程是基於Objective-C的阿里雲播放器SDK iOS樣本工程,能夠協助開發人員快速掌握SDK核心功能整合。

  • 基於阿里雲播放器實現RTS拉流時,不能調用pause暫停直播流。您可以先調用stop停止播放,再調用prepare重新播放。

  • 不支援seek(拖動)。

建立播放器

  1. 建立播放器。

    建立AliPlayer播放器。

    // 建立播放器執行個體
    AliPlayer mAliPlayer = [[AliPlayer alloc] init];
    
    // 建立用於承載播放畫面的視圖容器,並設定播放器渲染視圖
    UIView playerView = [[UIView alloc] initWithFrame:self.view.bounds];
    [self.view addSubview:playerView];
    mAliPlayer.playerView = playerView;
    
    [mAliPlayer setTraceID:traceId];
    說明

    播放器提供的播放品質監控(可查看播放器整體播放品質相關資料)、單點追查(可定位到具體的使用者或裝置,分析其播允許存取為,快速定位播放異常等問題)及視頻播放統計功能都依賴埋點日誌上報功能而實現。

    在建立播放器時,根據setTraceID參數的設定不同,其後續可實現的功能不同,具體如下:

    • setTraceID參數不傳(預設):埋點日誌上報功能開啟,後續可以使用播放品質監控和視頻播放統計功能,無法使用單點追查功能。

    • setTraceID參數傳入traceid:traceid的值由您自行定義,需為您的使用者或使用者裝置的唯一識別碼,例如傳入您業務的userid或者IMEI、IDFA等您業務使用者的裝置ID。傳入traceid後,埋點日誌上報功能開啟,後續可以使用播放品質監控、單點追查和視頻播放統計功能。

    • setTraceID參數設定為DisableAnalytics:關閉埋點日誌上報,後續無法使用播放品質監控、單點追查和視頻播放統計功能。

  2. 設定播放源。

    播放器支援4種播放源:VidSts、VidAuth、VidMps和UrlSource。其中UrlSource是直接URL播放,需要將URL設定為artc://協議,才可以使用RTS服務。

    AVPUrlSource *urlSource = [[AVPUrlSource alloc] 
    urlWithString:"artc://<播流地址>"]; 
    [mAliPlayer setUrlSource:urlSource];
    說明

    更多設定播放源方法,請參見基礎功能

  3. 配置播放參數。

    配置播放參數,提升超低延時直播效果。

    說明

    6.3.0版本以及之後的播放器SDK均支援自動低延時最佳配置,當播放URL為“artc://”開頭,且客戶沒有手工修改過AVPConfigMaxDelayTimeHighBufferDurationStartBufferDuration值時,SDK會自動分別使用1000、10、10值進行實際的播放。

    若想自訂控制,請參考如下樣本:

    //1. 擷取並修改配置
    AVPConfig *config = mAliPlayer.getConfig;
    
    if ([playUrl hasPrefix:@"artc://"]) {
        //最大延時為1秒
        [config setMaxDelayTime:1000];
        //起播緩衝時間長度
        [config setStartBufferDuration:10];
        //卡頓恢複緩衝時間長度
        [config setHighBufferDuration:10];
    } else {
        //config使用預設配置或自訂為其他配置
    }
    
    //2. 應用配置
    [mAliPlayer setConfig:config];
  4. 開始播放。

    // 準備播放
    [mAliPlayer prepare];
    // prepare 以後可以同步調用 start 操作,onPrepared 回調完成後會自動起播
    [mAliPlayer start];

控制播放

iOS播放器SDK支援開始、從指定時間點播放等主流操作。

  1. 開始播放

開始播放視頻,由start介面實現。樣本如下:

 [mAliPlayer start];
  1. 停止播放

停止播放視頻,由stop介面實現。樣本如下:

[mAliPlayer stop];
  1. 銷毀播放器

銷毀播放器執行個體,有同步和非同步兩種銷毀方式,樣本如下:

//同步銷毀,內部會自動調用stop介面
[mAliPlayer destroy];
//非同步銷毀,內部會自動調用stop介面
[mAliPlayer destroyAsync];
說明

調用同步銷毀介面需等待播放器資源完全釋放後才返回。如果您對介面的響應速度有較高要求,建議使用非同步銷毀介面,並注意以下幾點:

  1. 避免在非同步銷毀過程中對播放器對象執行任何其他動作。

  2. 無需在調用非同步銷毀之前手動停止播放器,因為該過程內部已經包含了非同步化的停止流程。

協助工具功能

  1. 日誌開關

    // 開啟日誌
    [mAliPlayer setEnableLog:YES];
    [mAliPlayer setLogCallbackInfo:LOG_LEVEL_TRACE callbackBlock:nil];
    
    // 關閉日誌
    [mAliPlayer setEnableLog:NO];
    [mAliPlayer setLogCallbackInfo:LOG_LEVEL_NONE callbackBlock:nil];
  2. 直播降級

    說明
    • 播放失敗降級僅針對逾時情境,播放逾時情境下若配置了以下任一降級方案,則會進行降級播放處理;否則觸發播放器onError回調。例如404、403或主播斷流等異常不會觸發降級。

    • RTS自動降級使用相同網域名稱實現RTS至FLV降級。若您的RTS與FLV網域名稱不一樣,需配置RTS自訂降級方案以指定目標FLV網域名稱。

    1. RTS自動降級(預設開啟

      在使用超低延時直播RTS地址播放的情境下,當未配置RTS自訂降級且RTS拉流失敗時,會自動降級到RTS對應的預設FLV地址進行播放。樣本如下:

      // 1表示開啟,0表示關閉。預設開啟
      [AliPlayerGlobalSettings setOption:ALLOW_PRE_RENDER valueInt:1];
    2. RTS自訂降級

      在使用超低延時直播RTS地址播放的情境下,通過設定RTS的降級地址(如HLS地址或FLV地址),當RTS拉流失敗時,會自動降級到該地址播放。

      //設定降級源downgradeUrl
      AVPUrlSource *urlSource = [[AVPUrlSource alloc] urlWithString:downgradeUrl];
      //可選,配置config其他項
      AVPConfig *config = [mAliPlayer getConfig];
      //設定降級URL
      [mAliPlayer enableDowngrade:urlSource config:config];
  3. 擷取TraceID

    每一次低延時播放都會有一個traceId,可用於問題排查,可以通過播放器事件回調拿到traceid

    //監聽播放器 onPlayerEvent 回調,並解析 DemuxerTraceID 訊息
    - (void)onPlayerEvent:(AliPlayer*)mAliPlayer eventWithString:(AVPEventWithString)eventWithString description:(NSString *)description {
        switch (eventWithString) {
            case EVENT_PLAYER_DEMUXER_TRACE_ID:
                {
                    NSString *traceId = description;
                }
                    break;
                default:
                    break;
        }
    }