隧道模式播放
某些Fire TV设备的硬件解码器支持以60 FPS播放4K内容。视频具有如此高的分辨率和帧速率,就对媒体管道的时间控制提出了严格要求。由于内核调度存在限制,应用可能无法以16毫秒间隔渲染4K帧,从而可能导致丢帧以及观影体验欠佳。请使用隧道模式播放,以便发挥硬件的最佳性能。
如何启用隧道模式播放
如需启用隧道模式,需作如下更改:
-
从AudioManager查询AudioTrack会话ID:
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); int audioSessionId = audioManager.generateAudioSessionId(); -
配置隧道模式的视频解码器:
format.setFeatureEnabled(MediaCodecInfo.CodecCapabilities.FEATURE_TunneledPlayback, true); -
使用AudioTrack会话ID配置视频解码器。
format.setInteger(android.media.MediaFormat.KEY_AUDIO_SESSION_ID, audioSessionId); -
用先前查询到的会话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); -
对于视频解码器,请勿调用
dequeueOutputBuffer和releaseOutputBuffer。 -
AudioTrack提供了一个写入API,可自动构建附加标头信息。有关详细信息,请参阅此处。
注意: 附加参数是与正在写入的数据对应的时间戳。
隧道模式播放的详细信息
在Fire OS 14及更高版本中,将您的播放器从ExoPlayer更新为Media3。
有关更多详细信息,请参阅以下隧道模式播放实现:
隧道模式的限制
此处的隧道模式播放相关信息适用于所有运行Fire OS 6或更高版本的Fire TV设备,但存在以下限制:
-
所有运行Fire OS 6或更高版本的Fire TV流媒体播放器均支持VP9隧道模式和HEVC解码器,但存在以下限制:
- 对于Fire TV Cube第2代 (2019): 只有安全解码器可支持隧道模式,但如果要在隧道模式下播放明文内容,应用仍可使用安全解码器管道来实现这一目的。请参阅安全解码器要求。
-
所有Fire TV均支持主流视频编解码器(例如H.265、H.264和VP9)的隧道模式,适用于安全和不安全播放,但存在以下限制:
Last updated: 2026年6月9日

