1

我有原始的 NV12 YUV 渐进式数据,需要将每帧分割成具有偶数场和奇数场的图像(隔行扫描数据)。

4

1 回答 1

0

如果您想手动完成所有工作:

  1. 从 .yuv 文件中提取每一帧

    根据流的格式和分辨率,计算一帧的大小。然后,您可以进行提取。

  2. 将 .yuv 帧拆分为 .yuv 字段

    计算每行的大小,并按奇/偶行分割帧。如果格式是yuv420,请注意uv线。

  3. 将 .yuv 字段隐藏到 .bmp 图像

    如果格式不是yuv444,那么先转成yuv444。然后,进行 yuv 到 rgb 的转换,并将图像存储为 .bmp 格式。

在 ffmpeg 和 ImageMagick 的帮助下,也可以通过两步(假设帧分辨率为 1920x1080,场为 1920x540)完成(更容易):

  1. 将 YUV 转换为图像

    ffmpeg -s 1920x1080 -i input.yuv frame_%3d.bmp

    -pix_fmt可用于指定 .yuv 文件的格式(像素布局)。

  2. 将图像拆分为奇数/偶数

    convert frame_000.bmp -define sample:offset=25 -sample 100%x50% frame_000_top.bmp convert frame_000.bmp -define sample:offset=75 -sample 100%x50% frame_000_bot.bmp

    这两个命令可以在de-interlace a video frame的最后一部分找到。

于 2016-12-02T05:34:26.027 回答