ffmpeg创建一个非常大的幻灯片结果文件

ffmpeg创建一个非常大的幻灯片结果文件,ffmpeg,Ffmpeg,我有一系列名为0000.jpg 0001.jpg 0002.jpg的JPEG图像 我使用下面的命令将它们转换为幻灯片视频,每帧播放1秒 ffmpeg -framerate 1 -i %04d.jpg -c:v libx264 -vf fps=1 -pix_fmt yuv420p out.mp4 这可以很好地工作,但结果视频比我以正常帧速率(例如25 FPS)编码完全相同的帧时得到的视频大6倍 我正在寻找一种方法,以有效地获得与编码25fps时相同的有效编码,但每帧显示1秒。H.264是一种视频

我有一系列名为0000.jpg 0001.jpg 0002.jpg的JPEG图像

我使用下面的命令将它们转换为幻灯片视频,每帧播放1秒

ffmpeg -framerate 1 -i %04d.jpg -c:v libx264 -vf fps=1 -pix_fmt yuv420p out.mp4
这可以很好地工作,但结果视频比我以正常帧速率(例如25 FPS)编码完全相同的帧时得到的视频大6倍


我正在寻找一种方法,以有效地获得与编码25fps时相同的有效编码,但每帧显示1秒。

H.264是一种视频编解码器,它采用帧间编码,即帧依靠其他帧进行解码。x264是一种H.264编码器,其基本功能是观察帧间图片内容的变化,然后只保存差异

ffmpeg -framerate 1 -i %04d.jpg -c:v libx264 -vf fps=1 -pix_fmt yuv420p out.mp4
在CRF速率控制模式中,当未明确指定速率控制模式时默认使用该模式(
-b:v
-CRF
-x264选择qp
),x264对帧速率敏感。当以25 fps的速度输入时,每个帧显示40毫秒,因此查看器对每个帧的图像质量不太敏感,因此x264会对其进行相当大的压缩。但是,当输入以1fps的速度编码时,每个输出帧将显示整整一秒钟,因此x264的压缩性要小得多

解决方法是以25 fps的速度进行编码,然后以较低的fps进行重新复用

#1

ffmpeg -framerate 25 -i %04d.jpg -c:v libx264 -pix_fmt yuv420p out.264
#2使用mp4box*的一部分,以较低的速率重新使用:

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

*通常情况下,使用ffmpeg可以实现这一点,但它不能正确地重新使用具有无序帧存储的H.264原始流,即具有B帧的原始流。

H.264是一种视频编解码器,它是互编码的,即帧依赖于其他帧来进行解码。x264是一种H.264编码器,其基本功能是观察帧间图片内容的变化,然后只保存差异

在CRF速率控制模式中,当未明确指定速率控制模式时默认使用该模式(
-b:v
-CRF
-x264选择qp
),x264对帧速率敏感。当以25 fps的速度输入时,每个帧显示40毫秒,因此查看器对每个帧的图像质量不太敏感,因此x264会对其进行相当大的压缩。但是,当输入以1fps的速度编码时,每个输出帧将显示整整一秒钟,因此x264的压缩性要小得多

解决方法是以25 fps的速度进行编码,然后以较低的fps进行重新复用

#1

ffmpeg -framerate 25 -i %04d.jpg -c:v libx264 -pix_fmt yuv420p out.264
#2使用mp4box*的一部分,以较低的速率重新使用:

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

*通常情况下,使用ffmpeg是可能的,但是它不能正确地重新使用具有无序帧存储的H.264原始流,即具有B帧的原始流。

-ffmpeg的stillimage
优化了幻灯片的输出。

-ffmpeg的stillimage
优化了幻灯片的输出。

另请参阅:另请参阅:非常有用。我宁愿避免使用MP4Box,那么我可以将FFMPEG或X264质量选项设置为较低的质量,以获得类似的最终结果吗?在我的低帧速率下,X264是否将所有内容都作为帧内编码?不是帧内编码,而是使用低得多的量化器。如果在步骤1中添加
-x264选择bframes=0
,则步骤2可以是
ffmpeg-r 1-i out.264-c copy out.mp4
。ffmpeg将抱怨时间戳(由于H264解析器中的缺陷),但输出正常。请注意,很多玩家的速度都是1fps,这也很好,但我唯一的用途是上传和播放Youtube,这很有效。非常有用。我宁愿避免使用MP4Box,那么我可以将FFMPEG或X264质量选项设置为较低的质量,以获得类似的最终结果吗?在我的低帧速率下,X264是否将所有内容都作为帧内编码?不是帧内编码,而是使用低得多的量化器。如果在步骤1中添加
-x264选择bframes=0
,则步骤2可以是
ffmpeg-r 1-i out.264-c copy out.mp4
。ffmpeg将抱怨时间戳(由于H264解析器中的缺陷),但输出正常。请注意,很多玩家的速度都是1fps,这一点也很好,但我的唯一用途是上传和从Youtube播放,这很有效。