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

ApsaraVideo Live:Android での RTS ストリームフェッチングの実装

最終更新日:Dec 06, 2025

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

SDK の統合

次のように ApsaraVideo Player SDK の依存関係ファイルを追加します。

  • Maven 統合

    1. Maven リポジトリのアドレスを追加します。

      ルートディレクトリの build.gradle ファイルに Maven リポジトリのアドレスを追加します。

      // Alibaba Cloud SDK (ApsaraVideo Player) の Maven リポジトリのアドレス
      maven { url 'http://maven.aliyun.com/nexus/content/repositories/releases' }
    2. プロジェクトの app/build.gradle ファイルに ApsaraVideo Player SDK の依存関係ファイルを追加します。

      def player_sdk_version = "x.x.x" // 最新バージョンを使用します。
      def rts_sdk_version = "7.10.0" // 独立したバージョン番号。これは最新バージョンです。
      
      // プレーヤーコアライブラリ
      implementation "com.aliyun.sdk.android:AliyunPlayer:$player_sdk_version-full"
      
      // プレーヤーと RTS コンポーネント間のブリッジレイヤー (AlivcArtc)。バージョン番号はプレーヤーのバージョン番号と同じである必要があります。これは RTS コンポーネントと統合する必要があります。
      implementation "com.aliyun.sdk.android:AlivcArtc:$player_sdk_version"
      
      // RTS コンポーネント
      implementation "com.aliyun.rts.android:RtsSDK:$rts_sdk_version"
      重要
      • プレーヤーと RTS コンポーネント間のブリッジレイヤー (AlivcArtc) のバージョン番号は、プレーヤーのバージョン番号と同じである必要があります。ブリッジレイヤーは RTS コンポーネントと統合する必要があります。

      • プレーヤーのバージョンの詳細については、「SDK のダウンロード」をご参照ください。最新バージョンを使用してください。サポートされているプレーヤーの最小バージョンは V5.4.5.0 です。V7.5.0 以降の使用を推奨します。

      • 詳細については、「ApsaraVideo Player for Android のよくある質問」をご参照ください。

ApsaraVideo Player SDK API の使用

ApsaraVideo Player SDK API を呼び出して、RTS 機能を実装します。ApsaraVideo Player SDK の他の機能の詳細については、「高度な機能」および「API リファレンス」をご参照ください。

説明
  • 次のコードは一例です。詳細なコードについては、API-Example プロジェクトの RTS 再生モジュールをご参照ください。この ApsaraVideo Player SDK for Android 向けの Java ベースのサンプルプロジェクトは、開発者が SDK のコア機能を迅速に統合する方法を学ぶのに役立ちます。

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

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

RTS ライブラリのロード

適切なアクティビティに System.loadLibrary("RtsSDK"); を追加します。

static {
    System.loadLibrary("RtsSDK");
}

プレーヤーの作成

  1. プレーヤーを作成します。

    AliPlayerFactory クラスを使用して AliPlayer インスタンスを作成します。

    // プレーヤーインスタンスを作成します。
    AliPlayer mAliPlayer = AliPlayerFactory.createAliPlayer(context);
    // traceId を渡します。
    // オプション:トレース分析機能を使用します。ApsaraVideo Player SDK での動画再生中に例外が発生した場合、この機能を使用して特定のユーザーまたは再生セッションのエンドツーエンドのトレースを実行できます。これにより、問題を迅速に診断し、再生体験を向上させることができます。
    // traceId の値はユーザー定義です。ビジネスの userid や、国際移動体装置識別番号 (IMEI) や広告主識別子 (IDFA) などのデバイス ID のように、ユーザーまたはそのデバイスの一意の識別子である必要があります。
    mAliPlayer.setTraceId("traceId");
    説明

    プレーヤーが提供する再生品質モニタリングトレース分析、および動画再生統計機能は、イベントトラッキングログレポート機能に依存します。

    プレーヤーを作成する際、利用可能な機能は setTraceId パラメーターの設定方法によって異なります。

    • setTraceId パラメーターが渡されない (デフォルト):イベントトラッキングログレポート機能が有効になります。再生品質モニタリングと動画再生統計機能は使用できますが、トレース分析機能は使用できません。

    • setTraceId パラメーターに traceid が渡される:traceid の値はユーザー定義です。ビジネスのユーザー ID や、IMEI や IDFA などのデバイス ID のように、ユーザーまたはそのデバイスの一意の識別子である必要があります。traceid を渡すと、イベントトラッキングログレポート機能が有効になります。その後、再生品質モニタリング、トレース分析、および動画再生統計機能を使用できます。

    • setTraceId パラメーターが DisableAnalytics に設定される:イベントトラッキングログレポート機能が無効になります。再生品質モニタリング、トレース分析、または動画再生統計機能は使用できません。

  2. 表示ビューを設定します。

    プレーヤーは AliDisplayView (推奨)、SurfaceView、および TextureView をサポートしています。いずれかを選択できます。

    1. XML ファイルでビューを宣言します。

      AliDisplayView (推奨)

      <!-- プレーヤーレンダリングビュー -->
      <com.aliyun.player.videoview.AliDisplayView
          android:id="@+id/ali_display_view"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:layout_gravity="center" />

      SurfaceView

      <!-- プレーヤーレンダリングビュー -->
      <SurfaceView
          android:id="@+id/surface_view"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:layout_gravity="center" />

      TextureView

      <!-- プレーヤーレンダリングビュー -->
      <TextureView
          android:id="@+id/texture_view"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:layout_gravity="center" />
    2. 表示ビューを設定します。

      AliDisplayView (推奨)

      プレーヤーの setDisplayView メソッドを呼び出して、プレーヤービューをアタッチします。

      AliDisplayView mAliDisplayView = findViewById(R.id.display_view);
      // setPreferDisplayView() を使用してプレーヤービューのタイプを設定します。
      mAliDisplayView.setPreferDisplayView(AliDisplayView.DisplayViewType.SurfaceView);
      mAliPlayer.setDisplayView(mAliDisplayView);

      SurfaceView

      プレーヤーの setSurface メソッドを呼び出して、プレーヤービューをアタッチします。

      SurfaceView mSurfaceView = findViewById(R.id.surface_view);
      mSurfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
          @Override
          public void surfaceCreated(@NonNull SurfaceHolder holder) {
              mAliPlayer.setSurface(holder.getSurface());
          }
      
          @Override
          public void surfaceChanged(@NonNull SurfaceHolder holder, int format, int width, int height) {
              mAliPlayer.surfaceChanged();
          }
      
          @Override
          public void surfaceDestroyed(@NonNull SurfaceHolder holder) {
              mAliPlayer.setSurface(null)
          }
      });

      TextureView

      プレーヤーの setSurface メソッドを呼び出して、プレーヤービューをアタッチします。

      TextureView mTextureView = findViewById(R.id.texture_view);
      mTextureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() {
          @Override
          public void onSurfaceTextureAvailable(@NonNull SurfaceTexture surface, int width, int height) {
              mAliPlayer.setSurface(new Surface(surface));
          }
      
          @Override
          public void onSurfaceTextureSizeChanged(@NonNull SurfaceTexture surface, int width, int height) {
              mAliPlayer.surfaceChanged();
          }
      
          @Override
          public boolean onSurfaceTextureDestroyed(@NonNull SurfaceTexture surface) {
              mAliPlayer.setSurface(null);
              return true;
          }
      
          @Override
          public void onSurfaceTextureUpdated(@NonNull SurfaceTexture surface) {
      
          }
      });
  3. 再生ソースを設定します。

    プレーヤーは VidSts、VidAuth、VidMps、UrlSource の 4 種類の再生ソースをサポートしています。UrlSource を使用すると、URL から直接動画を再生できます。RTS サービスを使用するには、URL プロトコルを artc:// に設定します。

    UrlSource urlSource = new UrlSource();
    urlSource.setUri("artc://<ストリーミング URL>");
    mAliPlayer.setDataSource(urlSource);
    説明

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

  4. 再生パラメーターを設定します。

    RTS のパフォーマンスを向上させるために、再生パラメーターを設定します。

    説明

    ApsaraVideo Player SDK V6.3.0 以降は、自動低遅延最適化をサポートしています。再生 URL が "artc://" で始まり、PlayerConfig の値である mMaxDelayTimemHighBufferDuration、または mStartBufferDuration を手動で変更していない場合、SDK は再生中にこれらのパラメーターにそれぞれ 1000、10、10 を自動的に使用します。

    コントロールをカスタマイズするには、次の例をご参照ください。

    // 1. 構成を取得して変更します。
    PlayerConfig config = mAliPlayer.getConfig();
    if (playUrl.startWith("artc://")) {
        // 最大遅延は 1000 ms です。
        config.mMaxDelayTime = 1000;
        // 再生開始時のバッファー時間は 10 ms です。
        config.mStartBufferDuration = 10;
        // 再生停止からの回復のためのバッファー時間は 10 ms です。
        config.mHighBufferDuration = 10;
    } else {
        // config にはデフォルトの構成を使用するか、カスタマイズします。
    }
    
    // 2. 構成を適用します。
    mAliPlayer.setConfig(config);
  5. 再生を開始します。

    // 再生を準備します。
    mAliPlayer.prepare();
    // 再生を開始します。
    mAliPlayer.start();

再生のコントロール

ApsaraVideo Player SDK for Android は、再生の開始や停止などの操作をサポートしています。

  1. 再生を開始します。

    動画の再生を開始するには、start メソッドを使用します。次のコードは一例です。

    mAliPlayer.start();
  2. 再生を停止します。

    動画の再生を停止するには、stop メソッドを使用します。次のコードは一例です。

    mAliPlayer.stop();
  3. プレーヤーを破棄します。

    プレーヤーインスタンスを破棄するには、同期モードまたは非同期モードを使用できます。次のコードは一例です。

    // 同期破棄。stop メソッドは内部で自動的に呼び出されます。
    mAliPlayer.release();
    // 非同期破棄。stop メソッドは内部で自動的に呼び出されます。
    mAliPlayer.releaseAsync();	
    説明

    同期破棄メソッドは、すべてのプレーヤーリソースが解放された後にのみ値を返します。ご利用のインターフェイスが高い応答性を必要とする場合は、非同期破棄メソッドを使用し、次の点に注意してください。

    1. 非同期破棄中は、プレーヤーオブジェクトに対して他の操作を実行しないでください。

    2. 非同期破棄メソッドを呼び出す前にプレーヤーを手動で停止する必要はありません。このプロセスには非同期停止プロシージャが含まれているためです。

補助機能

  1. ロギングを有効または無効にします。

    // ロギングを有効にします。
    Logger.getInstance(context).enableConsoleLog(true);
    Logger.getInstance(context).setLogLevel(Logger.LogLevel.AF_LOG_LEVEL_TRACE);
    // ロギングを無効にします。
    Logger.getInstance(context).enableConsoleLog(false);
    Logger.getInstance(context).setLogLevel(Logger.LogLevel.AF_LOG_LEVEL_NONE);
  2. RTS ストリームフォールバック

    説明
    • 再生フォールバックはタイムアウトシナリオにのみ適用されます。フォールバックソリューションが設定されている場合、プレーヤーは再生タイムアウトが発生したときにそのソリューションへのフォールバックを試みます。それ以外の場合、プレーヤーの onError コールバックがトリガーされます。404、403、またはストリーマーの切断などの例外はフォールバックをトリガーしません。

    • 自動 RTS フォールバックは、同じドメイン名を使用して RTS から FLV にフォールバックします。RTS と FLV のドメイン名が異なる場合は、カスタム RTS フォールバックソリューションを設定して、ターゲットの FLV ドメイン名を指定します。

    1. 自動 RTS フォールバック (デフォルトで有効)

      RTS URL から動画を再生する際、カスタム RTS フォールバックが設定されておらず、RTS ストリームフェッチングが失敗した場合、プレーヤーは RTS URL に対応するデフォルトの FLV URL に自動的にフォールバックします。次のコードは一例です。

      // 1 は有効、0 は無効を示します。この機能はデフォルトで有効です。
      AliPlayerGlobalSettings.setOption(AliPlayerGlobalSettings.ALLOW_RTS_DEGRADE, 1);
    2. カスタム RTS フォールバック

      RTS URL から動画を再生する際、HLS や FLV の URL などのフォールバック URL を設定できます。RTS ストリームフェッチングが失敗した場合、プレーヤーは自動的に指定された URL にフォールバックして再生します。次のコードは一例です。

      PlayerConfig config = mAliPlayer.getConfig();
      // オプション。config 内の他の項目を設定します。
      UrlSource urlSource = new UrlSource();
      urlSource.setUri(downgradeUrl);
      // フォールバック URL を設定します。
      mAliPlayer.enableDowngrade(urlSource, config);
  3. traceId の取得

    各低遅延再生セッションには、トラブルシューティングに使用できる traceId があります。プレーヤーのイベントコールバックを通じて traceId を取得できます。

    // プレーヤーの onInfo コールバックをリッスンし、DemuxerTraceID メッセージを解析します。
    mAliPlayer.setOnInfoListener(infoBean -> {
        if (infoBean.getCode() == InfoCode.DemuxerTraceID) {
            String traceId = infoBean.getExtraMsg();
    });