YouTube Android应用如何选择视频编解码器?

Man*_*ari 12 youtube android

我在YouTube安卓应用中启用了智能手机的统计选项,并在"Vivo V9"和"Nexus 5"设备中播放了相同的视频.

Vivo V9:它以WebM格式播放视频,基本上是"VP8或VP9"编解码器.

Nexus 5:播放MP4格式的视频,基本上是"H264或H265"编解码器.

因此,根据设备YouTube应用选择视频编解码器.

问题:它是如何做的?我在内部知道它使用ExoPlayer播放视频但默认情况下ExoPlayer不提供功能.

LLL*_*LLL 5

不同的编解码器可能需要不同的许可证,这可能会花费很多。此外,编解码器可以是软件,也可以是硬件。许多SW编解码器没有问题,但正如名称所指出的,硬件编解码器需要特定的芯片,这也增加了成本并占用空间。这就是为什么设备制造商之间,甚至同一制造商的两台设备之间存在很大差异的原因。他们只是想削减成本。

一台设备只有最流行的编解码器的一个子集是很常见的,即使说VP8和H264都可以,其中一个可以是HW编解码器,而另一个可以是SW编解码器,在这种情况下通常首选HW编解码器。YouTube(此处是指youtube.com而非YouTube应用)提供了不同格式的视频,因此设备可以为其功能选择最佳的编解码器。

现在,选择正确的编解码器,YouTube应用可以使用Android的MediaCodec API。请检查例如,这个和/或它甚至可以提供它自己的软件编解码器,所以我想说,这种行为取决于平台。

最后的事情是极端情况,例如可以在后台播放/录制某些东西,例如打开相机并在使用YouTube应用程序时进行屏幕录制。同样,它取决于设备,但是硬件编解码器对媒体编解码器实例的数量有所限制,在这种极端情况下,即使设备具有某些硬件编解码器,YouTube应用程序也可能被迫选择SW编解码器。

编辑: 从Android Q开始,还有一个新的API,可让您轻松区分SW和HW编解码器。看看这个