检查android设备是否支持4K视频?

Aya*_*han 9 java android android-video-player

我正在尝试在我的应用程序中播放4K视频,但只要所有设备都无法播放4K视频,我就会遇到麻烦.

  • 在播放视频之前,如何在运行时检查该设备是否支持该设备?

Mak*_*ele 7

首先,你必须记住4k只是一个分辨率,但你还要记住比特率.

这是测试某个设备上是否可以实现分辨率/比特率组合的方法:

boolean areSizeAndRateSupported (int width, int height, double frameRate)
Run Code Online (Sandbox Code Playgroud)

https://developer.android.com/reference/android/media/MediaCodecInfo.VideoCapabilities.html#areSizeAndRateSupported(int,%20int,%20double)

还有:

isSizeSupported(int width, int height)
Run Code Online (Sandbox Code Playgroud)

这些方法的唯一缺点是它受API级别21的支持.

您还可以使用此方法检查编解码器功能:

MediaCodecInfo.VideoCapabilities.getVideoCapabilities()
Run Code Online (Sandbox Code Playgroud)

https://developer.android.com/reference/android/media/MediaCodecInfo.CodecCapabilities.html#getVideoCapabilities()

但据我所知,他们可以返回低于实际支持的分辨率.

另一方面,在你的情况下,android lollipop下面的设备很可能不够快,无法播放4k视频.或者即使它们可以,它们的分辨率太低而无法从4k分辨率中获得任何好处.

因此,在我看来,最优雅的解决方案是假设android 5.0下面不支持4k并使用上面的方法检查它是否支持android 5.0+.