2017-06-12 127 views
0

创建幻灯片结果我有一系列名为0000.jpg 0001.JPG 0002.jpg JPEG图像...的ffmpeg在非常大的文件

我用下面的命令将这些成幻灯视频每帧播放1秒钟。

ffmpeg -framerate 1 -i %04d.jpg -c:v libx264 -vf fps=1 -pix_fmt yuv420p out.mp4 

这工作只是将得到的视频比我所得到的,如果我编码我正在寻找一种方式完全相同的帧在正常帧率(例如,25 FPS)

大6倍罚款有效获得与编码25fps时相同的高效编码,但每帧显示1秒。

+0

另请参阅:https://video.stackexchange.com/questions/8740/minimal-working-frame-rate-for-h264-codec – Brad

回答

2

H.264是帧间编码的视频编解码器,即帧依赖于其他帧以便被解码。 H.264编码器在基本层面上所做的是观察帧间图片内容的变化,然后仅保存该差异。

在CRF码率控制模式,该模式是什么默认使用时明确指定任何速率控制模式(-b:v-crf-x264opts qp),X264是帧率敏感。当以25fps的速度输入时,每帧都会显示40毫秒,因此观看者对每个帧的图像质量都不太敏感,所以x264对它进行了相当程度的压缩。但是,当输入以1 fps编码时,每个输出帧将显示一整秒,所以x264在压缩方面的攻击性要小得多。

解决方法是编码为25 fps,然后以较低的fps进行重新编码。

#1

ffmpeg -framerate 25 -i %04d.jpg -c:v libx264 -pix_fmt yuv420p out.264 

#2使用mp4box *,的GPAC部分,REMUX与下率:

mp4box -add out.264:fps=1 -new out.mp4 

*通常,这将使用的ffmpeg是可能的,但是它不能正确地将H.264原始流与乱序帧存储(即具有B帧的帧)存储在一起。

+0

非常有帮助。我宁愿避免MP4Box,所以我可以将FFMPEG或X264质量选项设置为较低质量以获得类似的最终结果?在我的低帧速率下,X264是否将所有内容编码为帧内帧? – GroovyDotCom

+1

不是内部帧,而是使用更低的量化器。如果在步骤1中添加了“-x264opts bframes = 0”,则步骤2可以是'ffmpeg -r 1 -i out.264 -c copy out.mp4'。 ffmpeg会抱怨时间戳(由于H264解析器的缺陷),但输出很好。请注意,许多玩家窒息1 fps。 – Mulvya

+0

另外好点重新:球员,但我唯一的用途是从Youtube上传和播放,并且工作。 – GroovyDotCom