開発者コンソール

トンネルモードの再生

トンネルモードの再生

Fire TVデバイスの中には、ハードウェアデコーダーが4K@60fpsの再生をサポートしているものがあります。そのように高い解像度とフレームレートでビデオを再生する場合、メディアパイプラインのタイミング要件が非常に厳しくなります。カーネルのスレッドやプロセスのスケジューリング制限によって、アプリが4Kフレームを16ミリ秒間隔でレンダリングできないことがあります。これは結果的にドロップフレームを招き、映画のユーザーエクスペリエンスを標準以下に落としてしまうこともあります。ハードウェア性能を最大限に発揮させるには、トンネルモードでの再生が有効です。

トンネルモードの再生を有効にする方法

トンネルモードの再生を有効にするために必要となる主な変更は、次のとおりです。

  1. AudioManagerからAudioTrackセッションIDを問い合わせます。

    AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
    int audioSessionId = audioManager.generateAudioSessionId();
    
  2. トンネルモードに対応するようにビデオデコーダーを構成します。

    format.setFeatureEnabled(MediaCodecInfo.CodecCapabilities.FEATURE_TunneledPlayback, true);
    
  3. AudioTrackセッションIDをビデオデコーダーに設定します。

    format.setInteger(android.media.MediaFormat.KEY_AUDIO_SESSION_ID, audioSessionId);
    
  4. 問い合わせた上記のセッションIDでAudioTrackを作成し、AudioAttributesフラグFLAG_HW_AV_SYNCを設定します。

    AudioAttributes attributes = new AudioAttributes.Builder()
      .setLegacyStreamType(AudioManager.STREAM_MUSIC)
      .setFlags(AudioAttributes.FLAG_HW_AV_SYNC)
      .build();
     AudioFormat format = new AudioFormat.Builder()
      .setEncoding(targetEncoding)
      .setSampleRate(sampleRate)
      .setChannelMask(channelConfig)
      .build();
     int mode = AudioTrack.MODE_STREAM;
     AudioTrack audioTrack = new AudioTrack(attributes, format, bufferSize, mode, audioSessionId);
    
  5. ビデオデコーダーに対してdequeueOutputBufferreleaseOutputBufferを呼び出さないでください。

  6. AudioTrackには、追加のヘッダー情報を自動的に作成するwrite APIが用意されています。詳細については、こちら(英語のみ)を参照してください。

    注: 追加のパラメーターは、書き込まれるデータに対応するタイムスタンプです。

トンネルモードの再生についての関連項目

トンネルモードの再生を実装する方法の詳細については、以下のExoplayer 2のページを参照してください。

トンネルモードの制限

このドキュメントに記載されたトンネルモードの再生に関する情報は、Fire OS 6以降で動作するすべてのFire TVデバイスに適用されます。ただし、これには以下の制限があります。

  • Fire OS 6以降を搭載するすべてのFire TVストリーミングメディアプレーヤーでは、VP9およびHEVCデコーダーのトンネルモードがサポートされます。ただし、次のような制限事項があります。

    • Fire TV Cube - 第2世代(2019): zトンネルモードはセキュアデコーダーでのみサポートされます。ただし、暗号化されていないコンテンツをアプリがトンネルモードで再生する場合は、再生にセキュアデコーダーパイプラインを使用できます。詳細については、セキュアデコーダーの要件を参照してください。
  • すべてのFire TVでは、セキュア再生と非セキュア再生の両方で、h264、h265、VP9などの一般的なビデオコーデックのトンネルモードがサポートされます。ただし、次のような制限事項があります。


Last updated: 2021年8月23日