【发布时间】:2015-11-06 00:30:28
【问题描述】:
这是从MP4 视频中提取帧的代码。
ffmpeg -i above_marathon_250.mp4 images%03d.bmp
但是相同的代码不适用于YUV 格式的视频。
有谁知道如何从YUVformat 视频中提取帧?
【问题讨论】:
这是从MP4 视频中提取帧的代码。
ffmpeg -i above_marathon_250.mp4 images%03d.bmp
但是相同的代码不适用于YUV 格式的视频。
有谁知道如何从YUVformat 视频中提取帧?
【问题讨论】:
您必须指定视频大小-video_size 和帧速率-r 所以使用以下脚本:
ffmpeg.exe -video_size 720x576 -r 25 -ss 00:00:00 -i video_input_720x576_25.yuv -vframes 1 -q:v 1 frame_output_720x576_25.jpg
如果您想指定输入视频格式包括-pixel_format yuv420p 或除yuv420p 之外的任何其他格式。
【讨论】:
它不起作用,因为 yuv 文件没有标题,所以 ffmpeg 不知道文件的大小/pixfmt。您需要手动指定分辨率和 pixmt:
ffmpeg -video_size 1920x1080 -r 25 -pixel_format yuv422p -i file.yuv output-%d.png
然后调整 size/pixfmt 以匹配您的特定视频。
[edit] 我也建议以后在超级用户上发布这样的问题,这与编程无关。
【讨论】:
ffmpeg.org 中给出的命令是
ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg
这将从视频中每秒提取一个视频帧,并将它们输出到名为 foo-001.jpeg、foo-002.jpeg 等的文件中。图像将重新缩放以适应新的 WxH 值。
在你的情况下,你可以将上面的命令修改为
ffmpeg -i inputfile.yuv -r 1 -f image2 images%05d.png
其中 r 是帧速率,应设置为 1,以便从 yuv 中提取单帧
【讨论】:
r=1 ffmpeg -i inputfile.yuv -1 1 -f image2 images%05d.png 不行。
[rawvideo @ 0x7fef6880da00] Could not find codec parameters for stream 0 (Video:rawvideo (I420 / 0x30323449), yuv420p, -4 kb/s):unspecified size Consider increasing the value for the 'analyzeduration' and'probesize' options above_marathon_250.yuv: could not find codec parameters Input #0,rawvideo, from 'above_marathon_250.yuv': Duration:N/A,bitrate:n/a Stream #0:0:Video:rawvideo(I420 / 0x30323449), yuv420p, -4 kb/s, 25 tbr, 25 tbn,25 tbc Output #0,image2,to'images%05d.png': Output file #0 does not contain any stream