在哪里可以找到要测试的简单 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) 用于按时间戳转换视频(例如: 提取特定时间的帧,ss
在 HH: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。
我需要测试将 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) 用于按时间戳转换视频(例如: 提取特定时间的帧,ss
在 HH: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。