获取 Android 中 mp4 文件的位深度或颜色 space
Get the bit depth or the color space of a mp4 file in Android
我目前正在 Android 上开发视频播放器。视频播放器应支持 8 位内容和 10 位内容。因为应用程序中的流程不同,我需要在播放视频之前知道内容是否为 10 位 BT2020。我试过 MediaMetadataRetriever
但没有关于位深度、颜色 space、颜色原色、传输特性等的信息。另外,我使用这个项目得到了相同的结果:https://github.com/wseemann/FFmpegMediaMetadataRetriever。
有没有办法获得更多关于 Android 中的颜色 space 或位深度的信息?类似于 MediaInfo 工具的东西。 https://mediaarea.net/en/MediaInfo
一段时间后,我发现我可以使用 MediaExtractor
然后从使用 extractor.getTrackFormat(trackIndex)
创建的 MediaFormat
对象中获取我需要的信息。对于 HDR10,我检查了颜色标准和传递函数。
mediaFormat.containsKey(MediaFormat.KEY_COLOR_STANDARD)
) {
if (mediaFormat.getInteger(MediaFormat.KEY_COLOR_TRANSFER) == MediaFormat.COLOR_TRANSFER_ST2084
&& mediaFormat.getInteger(MediaFormat.KEY_COLOR_STANDARD) == MediaFormat.COLOR_STANDARD_BT2020
) {
return true
}
}
我目前正在 Android 上开发视频播放器。视频播放器应支持 8 位内容和 10 位内容。因为应用程序中的流程不同,我需要在播放视频之前知道内容是否为 10 位 BT2020。我试过 MediaMetadataRetriever
但没有关于位深度、颜色 space、颜色原色、传输特性等的信息。另外,我使用这个项目得到了相同的结果:https://github.com/wseemann/FFmpegMediaMetadataRetriever。
有没有办法获得更多关于 Android 中的颜色 space 或位深度的信息?类似于 MediaInfo 工具的东西。 https://mediaarea.net/en/MediaInfo
一段时间后,我发现我可以使用 MediaExtractor
然后从使用 extractor.getTrackFormat(trackIndex)
创建的 MediaFormat
对象中获取我需要的信息。对于 HDR10,我检查了颜色标准和传递函数。
mediaFormat.containsKey(MediaFormat.KEY_COLOR_STANDARD)
) {
if (mediaFormat.getInteger(MediaFormat.KEY_COLOR_TRANSFER) == MediaFormat.COLOR_TRANSFER_ST2084
&& mediaFormat.getInteger(MediaFormat.KEY_COLOR_STANDARD) == MediaFormat.COLOR_STANDARD_BT2020
) {
return true
}
}