获取 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
    }
}