我目前正在尝试拍摄一段视频input.mp4
并将其转换为整个视频每秒 30 帧的每一帧的图像。我有这个命令几乎可以工作,因为它制作了整个视频但最后一部分的图像
ffmpeg -i input.mp4 -vf "select='lt(n,3696)',scale=320:-1,tile=20x100" -frames:v 1 -y a.jpg
为了找到视频的总帧数,我使用了这个命令
ffprobe -v error -select_streams v:0 -count_packets -show_entries stream=nb_read_packets -of csv=p=0 input.mp4
哪些输出3696
和图像输出大部分,但缺少最后的部分。
tile
您为过滤器设置的最大网格大小为20x100
,这意味着最多只能容纳 2000 帧,并删除最后的 1696 帧。更合适的网格大小可能是
28x132
,它应该能够适合整个视频,因为正好有 3696 个单元格。因此,将视频过滤器的那部分更改为
tile=28x132
应该显示所有帧。