前言:
之前做视频补帧,在视频转图像序列和图像序列+原始音频合成时一直遇到一些奇怪的问题。
正文:
今天碰到的是
Past duration 2.999992 too large
警告,这个警告碰到的原因有很多,我自己碰到的也不知道是因为什么,但是靠在图像序列输入前加参数-vsync 0就可以解决,大家捧到这个问题也可以这样试试,下面是我的命令
ffmpeg -thread_queue_size 128 -r 89.91 -vsync 0 -pattern_type glob -i "/xxx/is/*.png" -vn -i /xxx/ori.mp4 -vcodec h264 -pix_fmt yuv420p /xxx/out.mp4 -y
-thread__queue_size:多输入需要把thread__queue_size 调大一点,默认是8,说实话我也不知道这个参数到底影响了什么,有时候做推流默认的8会出错,我设到128是为了保险点,8问题也不大,大家用到多输入时碰到问题可以试试把这个调大。
-r:不用多说了,定义输入图像序列的帧率,我原视频是29.97fps,所以翻了三倍,就是89.91。
-vsync:问题所在。
-pattern_type:我的照片序列命名不是按照00001,00002这样的,glob好像是一种排序方式。
-i:这个is文件夹下所有png格式的图像都要。如果你是有序排列的00001,00002大可以不用-pattern