FFmpeg | Too many packets buffered for output stream 0:1

报错

1
Too many packets buffered for output stream 0:1

复现

使用的命令为

1
ffmpeg -i "input.mp4" -map 0:1 -vcodec hevc -map 0:0 -acodec copy "output.mp4"

由于我是用python进行批处理,所以只有中间某一个视频报了这个错误

1
Too many packets buffered for output stream 0:1

所以应该是视频的原因。

分析

网上说原因是有些视频数据有问题,导致视频处理过快,容器封装时队列溢出。

按我个人的理解,就是有的流封装的不严谨,导致数据流的信息密度变大了。

我这也没法测试它说的对不对,就先记下这个错误,之后再遇到了就能快速解决。

解决方法

加上-max_muxing_queue_size 1024参数,增大容器封装队列的大小。

由于是stream 0:1出现的问题,所以是音频流的问题。把参数加到音频流后边。

我也没测这个参数是全局参数还是针对单个流的参数,所以直接把参数加到音频流后边了。

完整命令为

1
ffmpeg -i "input.mp4" -map 0:1 -vcodec hevc -map 0:0 -acodec copy -max_muxing_queue_size 1024 "output.mp4"