我有原始的 NV12 YUV 渐进式数据,需要将每帧分割成具有偶数场和奇数场的图像(隔行扫描数据)。
1 回答
如果您想手动完成所有工作:
从 .yuv 文件中提取每一帧
根据流的格式和分辨率,计算一帧的大小。然后,您可以进行提取。
将 .yuv 帧拆分为 .yuv 字段
计算每行的大小,并按奇/偶行分割帧。如果格式是yuv420,请注意uv线。
将 .yuv 字段隐藏到 .bmp 图像
如果格式不是yuv444,那么先转成yuv444。然后,进行 yuv 到 rgb 的转换,并将图像存储为 .bmp 格式。
在 ffmpeg 和 ImageMagick 的帮助下,也可以通过两步(假设帧分辨率为 1920x1080,场为 1920x540)完成(更容易):
将 YUV 转换为图像
ffmpeg -s 1920x1080 -i input.yuv frame_%3d.bmp
-pix_fmt
可用于指定 .yuv 文件的格式(像素布局)。将图像拆分为奇数/偶数
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的最后一部分找到。