如何用ffmpeg提取固定数量的帧?
How to extract a fixed number of frames with ffmpeg?
我试图从一堆视频中统一提取固定数量的帧(比如每个视频 50 帧,总共 10,000 个视频)。
由于时长不同,我计算了每个视频的理想输出fps,并将其作为ffmpeg提取的参数,但未能获得所需的帧数。
有谁知道如何用ffmpeg或其他工具提取固定数量的帧?谢谢!
您可以使用缩略图过滤器。它从每组 n
帧(默认为 100)中选择一个代表性帧
因此,如果您的源视频时长为 10 分钟且帧率为 25 fps,那么它总共有 15000 帧。因此,对于 select 50 帧,您将使用
ffmpeg -i input.mp4 -vf thumbnail=300,setpts=N/TB -r 1 -vframes 50 inputframes%03d.png
这 select 是每组 300 帧中的一个代表性帧,因此 15000 帧中的 50 帧。尽管名称缩略图只是 select 帧,但它不会缩小它们以供缩略图使用. setpts
和 r
一起设置以避免重复或丢帧。 vframes
设置为不超过 50 张图像输出。
如果您需要 select 严格每 nth
帧,请使用
ffmpeg -i input.mp4 -vf select='not(mod(n\,300))',setpts=N/TB -r 1 -vframes 50 inputframes%03d.png
我试图从一堆视频中统一提取固定数量的帧(比如每个视频 50 帧,总共 10,000 个视频)。
由于时长不同,我计算了每个视频的理想输出fps,并将其作为ffmpeg提取的参数,但未能获得所需的帧数。
有谁知道如何用ffmpeg或其他工具提取固定数量的帧?谢谢!
您可以使用缩略图过滤器。它从每组 n
帧(默认为 100)中选择一个代表性帧
因此,如果您的源视频时长为 10 分钟且帧率为 25 fps,那么它总共有 15000 帧。因此,对于 select 50 帧,您将使用
ffmpeg -i input.mp4 -vf thumbnail=300,setpts=N/TB -r 1 -vframes 50 inputframes%03d.png
这 select 是每组 300 帧中的一个代表性帧,因此 15000 帧中的 50 帧。尽管名称缩略图只是 select 帧,但它不会缩小它们以供缩略图使用. setpts
和 r
一起设置以避免重复或丢帧。 vframes
设置为不超过 50 张图像输出。
如果您需要 select 严格每 nth
帧,请使用
ffmpeg -i input.mp4 -vf select='not(mod(n\,300))',setpts=N/TB -r 1 -vframes 50 inputframes%03d.png