gpt4 book ai didi

android - MediaCodec解码器1080p输出yuv格式

转载 作者:行者123 更新时间:2023-11-29 01:10:24 29 4
gpt4 key购买 nike

Android MediaCodec可用于解码输出yuv420格式。我猜它应该是 NV12 格式,但是当我在 Nexus6 7.1.1 设备上尝试它时。结果很奇怪:

  1. 对于 720p 视频,它工作正常,输出 yuv 可以通过 ffplay 使用以下命令播放:

    ffplay -v info -f rawvideo -pixel_format yuv420p -video_size 1280x720 out.yuv

    out.yuv文件的大小正好是width*height*3/2。

  2. 对于 1080p 视频,输出的 yuv 颜色在顶部不正确。 out.yuv 文件大小为 3133440,但 width*height*3/2 应该是 3110400,所以还有 23040 字节。听起来顶层颜色不正确。

enter image description here

当尝试将其解码到表面时,它看起来不错。所以我猜问题仅来自 1080p YUV 包。

最佳答案

对于1080p,很有可能实际解码后的画面高度是1920x1088,而不是1920x1080。 (1920x1088 加起来大小为 3133440。)最底部的 8 个像素被解码并返回,但您不应该显示它们。

在这种情况下,输出 MediaFormat 中的 MediaFormat.KEY_HEIGHT 字段可能为 1088,而 crop-top 字段为 0 并且crop-bottom 是 1079。参见 https://android.googlesource.com/platform/cts/+/jb-mr2-release/tests/tests/media/src/android/media/cts/EncodeDecodeTest.java#976有关如何读取这些字段的示例。

正如 beetlej 所建议的,如果您使用 ImageMediaCodec.getOutputImage 收到的类(class)方法(自 Android 5.0 起可用),将处理这些细节。

关于android - MediaCodec解码器1080p输出yuv格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43616835/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com