as

Settings
Sign out
Notifications
Alexa
亚马逊应用商店
Ring
AWS
文档
Support
Contact Us
My Cases
开发
测试
应用发布
盈利
用户参与
设备规格
资源

隧道模式播放

隧道模式播放

某些Fire TV设备的硬件解码器支持以60 FPS播放4K内容。视频具有如此高的分辨率和帧速率,就对媒体管道的时间控制提出了严格要求。由于内核调度存在限制,应用可能无法以16毫秒间隔渲染4K帧,从而可能导致丢帧以及观影体验欠佳。请使用隧道模式播放,以便发挥硬件的最佳性能。

如何启用隧道模式播放

如需启用隧道模式,需作如下更改:

  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提供了一个写入API,可自动构建附加标头信息。有关详细信息,请参阅此处

隧道模式播放的详细信息

在Fire OS 14及更高版本中,将您的播放器从ExoPlayer更新为Media3

有关更多详细信息,请参阅以下隧道模式播放实现:

隧道模式的限制

此处的隧道模式播放相关信息适用于所有运行Fire OS 6或更高版本的Fire TV设备,但存在以下限制:


Last updated: 2026年6月9日