当 Exoplayer 有硬件支持时,我可以配置 Exoplayer 以选择 H265 流而不是 H264 流吗?
Can I configure Exoplayer to pick H265 streams over H264 ones, when it has hardware support?
我正在使用 Exoplayer 播放 HLS 流。由于流需要支持多种设备,因此 HLS 流文件包含 HEVC (H265) 和 AVC (H264) 格式的视频。这个想法是,不支持 HEVC 硬件的旧设备应该播放 H264 流,而硬件支持更新、更好的 H265 格式的设备应该使用这些流。
默认 "SimpleExoplayer" 似乎不会发生这种情况。
可以在以下位置找到具有两种格式的示例流:
https://tungsten.aaplimg.com/VOD/bipbop_adv_example_hevc/master.m3u8
所以问题来了:我可以为 HLS 流配置 Exoplayer 以同时提供 HEVC(H265) 和 AVC(H264) 格式的视频,以便播放 HEVC 流在通过硬件支持它的设备上?
(作为第一步,我也很感兴趣如何确定设备是否具有对给定编解码器的硬件支持。我找到了多种方法来列出 Android 设备上的可用编解码器, 但我没有看到任何信息告诉我它是否受硬件支持。)
是的,你可以做到,
ExoPlayer 在内部使用 mediaCodec 来解码流。考虑以下。
为了让 MediaCodec 选择您的硬件解码器,您需要在设备文件夹中的 media_codecs.xml 文件中添加编解码器配置。根据您的 mime 类型,如下所示。
<MediaCodec name="OMX.*.h264.decode" type="video/avc" >
<Limit name="size" min="48x48" max="3840x2176" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="1" max="783360" />
<Limit name="bitrate" range="1-120000000" />
<Feature name="adaptive-playback" />
<Feature name="secure-playback" required="true" />
<Limit name="concurrent-instances" max="32" />
</MediaCodec>
我正在使用 Exoplayer 播放 HLS 流。由于流需要支持多种设备,因此 HLS 流文件包含 HEVC (H265) 和 AVC (H264) 格式的视频。这个想法是,不支持 HEVC 硬件的旧设备应该播放 H264 流,而硬件支持更新、更好的 H265 格式的设备应该使用这些流。
默认 "SimpleExoplayer" 似乎不会发生这种情况。 可以在以下位置找到具有两种格式的示例流: https://tungsten.aaplimg.com/VOD/bipbop_adv_example_hevc/master.m3u8
所以问题来了:我可以为 HLS 流配置 Exoplayer 以同时提供 HEVC(H265) 和 AVC(H264) 格式的视频,以便播放 HEVC 流在通过硬件支持它的设备上?
(作为第一步,我也很感兴趣如何确定设备是否具有对给定编解码器的硬件支持。我找到了多种方法来列出 Android 设备上的可用编解码器, 但我没有看到任何信息告诉我它是否受硬件支持。)
是的,你可以做到,
ExoPlayer 在内部使用 mediaCodec 来解码流。考虑以下。
为了让 MediaCodec 选择您的硬件解码器,您需要在设备文件夹中的 media_codecs.xml 文件中添加编解码器配置。根据您的 mime 类型,如下所示。
<MediaCodec name="OMX.*.h264.decode" type="video/avc" >
<Limit name="size" min="48x48" max="3840x2176" />
<Limit name="alignment" value="2x2" />
<Limit name="block-size" value="16x16" />
<Limit name="blocks-per-second" min="1" max="783360" />
<Limit name="bitrate" range="1-120000000" />
<Feature name="adaptive-playback" />
<Feature name="secure-playback" required="true" />
<Limit name="concurrent-instances" max="32" />
</MediaCodec>