我正在使用ffmpeg从100个图像序列创建一个短视频。有几篇文章帮我组合了一个命令,但我正在使用的那篇文章直接取自ffmpeg images-to-video script anyone?。
以下命令生成的视频文件在我拥有的所有视频播放器(OS X)中都能很好地播放。
cat input/*.jpg | ffmpeg -f image2pipe -r 10 -vcodec mjpeg -i - out.mp4
但如果我改成它,
cat input/*.jpg | ffmpeg -f image2pipe -r 1 -vcodec mjpeg -i - out.mp4
它适用于所有但 VLC媒体播放器。 VLC显示最初的1到3张图像,然后在帧上冻结。我已经测试了几种不同的帧速率,看起来在VLC中打破视频播放的截止点介于1.125和1.175之间。
对于我在这里处理的任何建议都会非常感激。
答案 0 :(得分:3)
同时使用-framerate
和-r
例如,要有一个看起来像1FPS的最终视频:
ffmpeg -framerate 1 -pattern_type glob -i '*.png' \
-c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
维基上提到了这一点:http://trac.ffmpeg.org/wiki/Slideshow#Framerates
它将输出帧速率设置为30
,VLC可以处理,并将每个图像复制30次,以使输出视频显示为1 FPS。
然后VLC能够正常播放视频。
另请参阅:https://unix.stackexchange.com/questions/68770/converting-png-frames-to-video-at-1-fps
在Ubuntu 16.10,VLC 2.2.4,ffmpeg
3.0.5上,在包含10个PNG的目录中进行测试。
<强> ffplay
强>
我也会尝试使用来自ffmpeg的ffplay
播放视频,我希望它能够更强大并且能够处理这样的帧速率。这是非常简单的骨头,但对于你可能在2 FPS使用的测试视频类型应该没问题。 TODO测试了它。
答案 1 :(得分:2)
这是VLC中一个众所周知的错误:https://trac.videolan.org/vlc/ticket/3625(https://trac.videolan.org/vlc/ticket/214)
许多用户已经报告了各种阈值,但是根据我自己发现和体验的情况,阈值大约是几个FPS 。
目前,我很遗憾地看到2 FPS视频的冻结第一帧,该视频无法在当前版本的VLC(2.2.4)中播放 我记得它在一些1.1.x版本上工作(尽管早先报告了这个bug)但是在更新到2.x后它停止了为我工作。
我和我的同事实际上已经将这种行为与前一段相同的视频文件(2 FPS)进行了比较,而我可以在没有1.1.x问题的情况下播放它们(我认为它是1.1.1但我是不是100%肯定了),他不能用2.x打任何一个。 在他将VLC降级到1.1.x之后,他也可以玩它们。
因此,如果您迫切希望使用VLC并且不会遗漏任何来自2.x的内容,那么降级是可行的方法。否则我会说自己省去摆弄VLC设置的痛苦时间,只需使用其他播放器。
<强>更新强> 现在似乎已在VLC 3.0.4中修复(参见https://trac.videolan.org/vlc/ticket/214) 我自己没有测试过。
答案 2 :(得分:0)
这是VLC中的错误(在3.0.6版中仍然存在)。经过一些实验,我意识到 FPS小于10的视频会导致VLC崩溃。因此,所有10 FPS或更高的视频都不会成为问题。因此,目前尚没有一种干净的方法来获得可以在VLC中播放的具有1 FPS的视频(不要放弃,继续阅读)。
一种解决方法是-如上面的答案所示-通过复制图像来伪造1 FPS的效果(当我们实际上FPS等于或大于10时,对于VLC来说是可以的)。
示例:如果您有一个包含12张图像的文件夹,并且想要生成1 FPS的视频(在VLC中可以播放),那么您需要将每个图像重复多次(假设是10次),然后告诉FFMPEG生成10 FPS视频。这样,我们将获得一个总帧数为120的视频,其中每个图像将播放1秒钟(由于重复10次),这对于1 FPS来说简直是假货。
我更喜欢使用fps
参数而不是-r
(在另一个答案中显示),这在某些情况下可能会出现问题(根据{{3} }。
ffmpeg -framerate 1 -i "img (%d).jpg" -c:v libvpx-vp9 -vf "fps=10,format=yuv420p" out.mkv
由于输入-framerate
低于输出fps
,FFMPEG将复制帧以达到所需的输出帧速率(根据上面的命令为10)。
重要的是要注意, -framerate
和-vf fps
的顺序很重要,因为此配置将应用于下一个提及的视频(输入或输出)。根据{{3}}:
选项将应用于下一个指定的文件。因此,顺序很重要...