すべてのプロダクト
Search
ドキュメントセンター

ApsaraVideo Live:RTS を使用した iOS 向けストリームフェッチングの実装

最終更新日:Feb 11, 2026

このトピックでは、ApsaraVideo Player SDK for iOS を使用して RTS を実装する方法について説明します。

前提条件

開発環境に CocoaPods がインストールされています。

SDK の統合

pod メソッドを使用して ApsaraVideo Player SDK の依存関係を追加します。

  1. ターミナルウィンドウを開きます。

  2. プロジェクトディレクトリに移動し、Podfile を作成します。

    pod init

  3. 最新バージョンの依存関係を追加するよう Podfile を編集します。

    player_sdk_version = 'x.x.x' # 最新バージョンの使用を推奨します
    rts_sdk_version = '7.12.0' # このバージョン番号は Player SDK とは独立しています。V7.12.0 が最新です。
    
    # ApsaraVideo Player SDK 
    pod 'AliPlayerSDK_iOS' , player_sdk_version
    # SDK と RTS コンポーネント(AlivcArtc)間のブリッジレイヤー。そのバージョンは Player SDK と同一である必要があります。RTS コンポーネントとともに統合する必要があります。
    pod 'AliPlayerSDK_iOS_ARTC' , player_sdk_version
    # RTS コンポーネント。
    pod 'RtsSDK' , rts_sdk_version 
    重要
    • プレーヤーと RTS コンポーネント(AlivcArtc)間のブリッジレイヤーは、Player SDK と同じバージョン番号を使用する必要があります。RTS コンポーネントとともに統合する必要があります。

    • プレーヤーのバージョンについては、「SDK のダウンロード」をご参照ください。最新バージョンの使用を推奨します。ApsaraVideo Player では、最低サポートバージョン V5.4.5.0 以降の最新バージョンが必要です。

    • よくある質問については、「iOS プレーヤーのよくある質問」をご参照ください。

  4. SDK をインストールします。コマンド実行後、*.xcworkspace ファイルが生成されれば、SDK の統合が完了したことを確認できます。

    pod install

ApsaraVideo Player SDK インターフェイスの使用

ApsaraVideo Player SDK の API を呼び出して、RTS 機能を有効化できます。SDK のその他の機能については、「高度な機能」および「API 操作」をご参照ください。

説明
  • 以下のサンプルコードは一例です。詳細なコードについては、API-ExampleRTS 超低遅延ストリーミング再生 モジュールをご参照ください。このプロジェクトは、Objective-C で記述された ApsaraVideo Player SDK の iOS サンプルプロジェクトであり、開発者がコア SDK 機能を迅速に統合できるように支援します。

  • ApsaraVideo Player を使用して RTS ストリームフェッチングを実装する場合、ライブストリームの一時停止には pause を呼び出さないでください。代わりに、再生を停止するには stop を呼び出し、再生を再開するには prepare を呼び出してください。

  • シーク(ドラッグ)はサポートされていません。

プレーヤーの作成

  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 パラメーターにトレース ID を指定した場合:トレース ID の値は、ユーザーまたはユーザー端末を一意に識別するもの(たとえば、ビジネス上のユーザー ID や IMEI、IDFA などのデバイス ID)とする必要があります。トレース ID を指定すると、イベントトラッキングログ報告機能が有効になり、再生品質モニタリング、単一点トレーシング、動画再生統計の各機能を利用できます。

    • setTraceID パラメーターを DisableAnalytics に設定した場合:イベントトラッキングログ報告機能が無効になります。その後、再生品質モニタリング、単一点トレーシング、動画再生統計のいずれの機能も利用できなくなります。

  2. 再生ソースを設定します。

    プレーヤーは VidSts、VidAuth、VidMps、UrlSource の 4 種類の再生ソースをサポートしています。このうち UrlSource は直接 URL による再生を可能にし、RTS サービスを利用するには URL を artc:// プロトコルに設定する必要があります。

    AVPUrlSource *urlSource = [[AVPUrlSource alloc] 
    urlWithString:@"artc://<streaming URL>"]; 
    [mAliPlayer setUrlSource:urlSource];
    説明

    再生ソースの設定について詳しくは、「基本機能」をご参照ください。

  3. 再生パラメーターを構成します。

    再生パラメーターを構成して、RTS 効果を向上させます。

    説明

    バージョン 6.3.0 以降、プレーヤー SDK は自動最適低遅延構成をサポートしています。再生 URL が artc:// で始まり、かつ AVPConfigMaxDelayTimeHighBufferDurationStartBufferDuration の値を手動で変更していない場合、SDK は実際の再生時にそれぞれ 1000、10、10 の値を自動的に使用します。

    これらのパラメーターをカスタマイズする場合は、以下の例を参考にしてください。

    //1. 構成を取得して変更
    AVPConfig *config = mAliPlayer.getConfig;
    
    if ([playUrl hasPrefix:@"artc://"]) {
        // 最大遅延時間。単位:ミリ秒。この例では 1000(1 秒)に設定します。
        [config setMaxDelayTime:1000];
        // 再生開始時のバッファー期間。
        [config setStartBufferDuration:10];
        // バッファリング不足回復時のバッファー期間。
        [config setHighBufferDuration:10];
    } else {
        // デフォルト構成を使用するか、カスタム値を指定できます。
    }
    
    //2. 構成を適用
    [mAliPlayer setConfig:config];
  4. 再生を開始します。

    // 再生の準備
    [mAliPlayer prepare];
    // prepare 後、start 操作を同期的に呼び出すことができます。onPrepared コールバックが完了すると、再生が自動的に開始されます。
    [mAliPlayer start];

再生の制御

ApsaraVideo Player SDK は、再生の開始や特定の時刻へのシークなど、一般的な再生制御をサポートしています。

  1. 再生を開始

start メソッドを使用して動画再生を開始します。

 [mAliPlayer start];
  1. 再生を停止

stop メソッドを使用して動画再生を停止します。以下に例を示します。

[mAliPlayer stop];
  1. プレーヤーを破棄

プレーヤーを同期的または非同期的に破棄できます。以下に例を示します。

// 同期的にプレーヤーを破棄。システムが自動的に stop メソッドを呼び出します。
[mAliPlayer destroy];
// 非同期的にプレーヤーを破棄。システムが自動的に stop メソッドを呼び出します。
[mAliPlayer destroyAsync];
説明

同期的破棄は、すべてのプレーヤーリソースが完全に解放された後にのみ戻ります。より高速な UI 応答を得るには、非同期的破棄を使用してください。ただし、以下の点にご注意ください。

  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 コールバックがトリガーされます。HTTP 404、403 エラー、またはストリーマーの切断などのエラーは、スペックダウンをトリガーしません。

    • 自動 RTS スペックダウン は、同じドメインを使用して RTS から FLV へとスペックダウンします。RTS と FLV のドメインが異なる場合は、カスタム RTS スペックダウン を設定して、対象となる FLV ドメインを指定してください。

    1. 自動 RTS スペックダウン(デフォルトで有効

      RTS ストリーミング URL の再生中にカスタムスペックダウンが設定されていない場合、RTS ストリームフェッチングが失敗すると、プレーヤーは RTS URL に関連付けられたデフォルトの FLV URL へ自動的にスペックダウンします。例:

      // 1 で有効、0 で無効。デフォルト値は有効(1)です。
      [AliPlayerGlobalSettings setOption:ALLOW_PRE_RENDER valueInt:1];
    2. カスタム RTS スペックダウン

      RTS ストリーミング URL の再生中に、HLS または FLV URL などのスペックダウン先 URL を指定します。RTS ストリームフェッチングが失敗した場合、プレーヤーは指定された URL から自動的に再生を開始します。

      // スペックダウン先の URL を指定
      AVPUrlSource *urlSource = [[AVPUrlSource alloc] urlWithString:downgradeUrl];
      // (任意)その他の設定を構成
      AVPConfig *config = [mAliPlayer getConfig];
      // スペックダウン後のストリーミング URL を指定
      [mAliPlayer enableDowngrade:urlSource config:config];
  3. トレース ID の取得

    各低遅延再生ではトレース ID が生成され、トラブルシューティングに使用できます。トレース ID はプレーヤーのイベントコールバックから取得します。

    // 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;
        }
    }