ffmpeg版本3.4.8-0ubuntu0.2版权所有(c)2000-2020 FFmpeg开发人员
无论我做什么,ffmpeg都会忽略一切并将其编码为25fps。
-framerate 60
没有任何效果
-t 60
没有任何效果
-r 60
使它插入帧
-r:v 60
也是如此
-vf "fps=60"
也是如此
-vframes <实际帧数>
会使编码过早结束
谷歌搜索显示的所有内容似乎都已经过时了,包括FFmpeg自己的文档。
ffmpeg版本3.4.8-0ubuntu0.2版权所有(c)2000-2020 FFmpeg开发人员
无论我做什么,ffmpeg都会忽略一切并将其编码为25fps。
-framerate 60
没有任何效果
-t 60
没有任何效果
-r 60
使它插入帧
-r:v 60
也是如此
-vf "fps=60"
也是如此
-vframes <实际帧数>
会使编码过早结束
谷歌搜索显示的所有内容似乎都已经过时了,包括FFmpeg自己的文档。
我有过类似的问题。我正在使用ffmpeg 3.4.2,尝试将一组PNG编译成60fps的视频。最终实现的方法如下:
ffmpeg -framerate 60 -i 'foo-%05d.png' -r 60 -c:a aac -vcodec libx264 -vf format=yuv420p foo.mp4
正如其他人在上面提到的,是-framerate 60
使得差异。注意命令行中标志的顺序很重要。
从man页面上不清楚为什么-framerate
会改变行为,不幸的是,在那里该选项没有被记录在文档中,只有这个参考:
-r[:stream_specifier] fps (input/output,per-stream)
Set frame rate (Hz value, fraction or abbreviation).
As an input option, ignore any timestamps stored in the file and instead generate timestamps
assuming constant frame rate fps. This is not the same as the -framerate option used for some
input formats like image2 or v4l2 (it used to be the same in older versions of FFmpeg). If in
doubt use -framerate instead of the input option -r.
ffmpeg -framerate <帧率> -start_number <数字> -i ./<名称>%d.png -r <帧率> -c:v <编码器名称> -r <帧率> -crf <值> -preset <预设名称> <输出文件名> -async 1 -vsync 1
ffmpeg -framerate 60 -start_number 225 -i ./render_%d.png -r 60 -c:v libx264 -r 60 -crf 10 -preset veryslow render4k.mp4 -async 1 -vsync 1
-framerate
的值相同,则不需要-r
(而且您将其列出两次)。-async 1 -vsync 1
是孤立的尾随选项。选项顺序很重要:ffmpeg [input options] input [output options] output
。 - llogan-framerate 60
,而且它是一个输入选项。 - rootffmpeg -framerate 120 -i input%06d.jpg -pix_fmt yuv420p out.mp4
ffmpeg -i input%06d.jpg -pix_fmt yuv420p -framerate 120 out.mp4
ffmpeg -i input%06d.jpg -pix_fmt yuv420p -r 120 out.mp4
ffmpeg -i input%06d.jpg -pix_fmt yuv420p -framerate 120 -r 120 out.mp4
ffmpeg -i input%06d.jpg -pix_fmt yuv420p -r 120 out.mp4
,它的意思是:首先从图像创建一个视频,并使用25fps(默认),然后将25fps的视频转换为120fps(视频速度不变,但每帧变为更多相同的帧)。ffmpeg -framerate 120 -i input%06d.jpg -pix_fmt yuv420p out.mp4
。