如何使用ffmpeg提取视频中每秒的第一帧?

如何使用ffmpeg提取视频中每秒的第一帧?,ffmpeg,Ffmpeg,我试图从视频中提取一秒钟的第一帧。我尝试了不同的方法来实现这一点,但我失败了。这是我试过的命令 ffmpeg -i input.ts -s 400x222 -q:v 3 -start_number 0 -vf fps=1 %d.jpg 稍后,我将尝试使用该特定秒的下面命令再次提取帧。这里我提取了210秒的帧 ffmpeg -ss 210 -i input.ts -s 300x250 -t 1 -start_number 0 images.%d.jpg 我只想提取第二帧的起始帧。比如说从0.0

我试图从视频中提取一秒钟的第一帧。我尝试了不同的方法来实现这一点,但我失败了。这是我试过的命令

ffmpeg -i input.ts -s 400x222 -q:v 3 -start_number 0 -vf fps=1 %d.jpg
稍后,我将尝试使用该特定秒的下面命令再次提取帧。这里我提取了210秒的帧

ffmpeg -ss 210 -i input.ts -s 300x250 -t 1 -start_number 0 images.%d.jpg
我只想提取第二帧的起始帧。比如说从0.001秒开始

当我比较第一个命令提取的210秒帧和第二个命令提取的第一个帧时,它们完全不同

对于以后的使用,为了防止冲突,我只想提取原始输入视频的第一帧。我尝试使用stackoverflow专家过去告诉我的命令。但当我运行它时。它仅提取起始帧(仅1帧)

如何每秒提取视频的起始帧

试试这个命令:

ffmpeg -i input.mp4 -vf "select=between(mod(n\, 25)\, 0\, 0), setpts=N/24/TB" output-%04d.png
你必须在(mod(n\,25)\,0\,0)之间的
中通过你的视频帧速率或
fps
我的视频fps是
25
所以我通过了25

如果您的fps为60,则您必须在(mod(n\,60)\,0\,0)


另外,如果您需要每秒的前5帧,则使用
between(mod(n\,25)\,0\,4)
它将为您提供每秒的前5帧。

是否需要每秒的第一帧?也就是说,如果你的帧速率是25fps,那么你希望每秒25帧中有一帧是我说的对吗?@millan是的。完全正确。对于VFR流来说不可靠。有关一般表达式,请参见我的答案。@Milan我已尝试使用您的命令,但当我重新运行问题中的第二个命令(即再次提取该特定秒的帧)时,第0帧的帧不同。第1个和第2个命令生成的两个帧都不同。您还想从视频的特定第二个帧中提取一个帧,对吗?@MilanTejani-yes。我希望两个命令的第0帧应该相同。@Gyan有什么解决方案吗?