在哪里可以找到要测试的简单 YUV(可能是 YUV420P)图像? (我可以用 ffmpeg 提取吗?)

Where to find simple YUV (YUV420P possibly) images to test? (can I extract with ffmpeg?)

我需要测试将 YUV420P(和其他 YUV 格式)渲染为 RGB 的 OpenGL 着色器。仅仅为此解码视频太过分了。

是否有任何带有 Y、U 和 V 缓冲区的图像样本供我发送到着色器?

在 google 我只找到不再托管这些图片的旧网站。

也许有一种方法可以使用 ffmpeg 从任何视频中轻松提取帧?

Maybe there's a way to easily extract a frame from any video using ffmpeg?

(1) 用于转换现有图像(例如: PNG):

ffmpeg -i test.png -pix_fmt yuv420p test.yuv

(2) 用于按帧转换视频(例如: 在视频帧 xx 处提取图像):

ffmpeg -i test.mp4 -pix_fmt yuv420p -vf "select=eq(n\,xx)" -frames:v 1 test.yuv

(3) 用于按时间戳转换视频(例如: 提取特定时间的帧,ssHH:MM:SS 格式):

ffmpeg -ss 00:23:00 -i test.mp4 -pix_fmt yuv420p -frames:v 1 test.yuv

PS: 无论是视频还是图像,如果您需要特定分辨率,请使用视频过滤器 scale,其中宽度或高度之一在 W:H 设置中可以替换为 -1 以保持纵横比(如果需要):

ffmpeg -i test.png -pix_fmt yuv420p -vf "scale=1280:720" test.yuv

您可以使用 ffmpeg 生成一个。

ffmpeg -f lavfi -i testsrc2=s=1280x720,format=yuv420p -vframes 1 sample.yuv

请注意,这是平面布局,所以首先是所有 Y 样本,然后是 U,然后是 V。