首页 > 解决方案 > 强制 avcodec_receive_packet 返回数据包

问题描述

有相关的答案,但他们没有回答我的问题。我正在使用 FFmpeg api 仅对内部 mpeg1video 进行编码,我想从第一帧开始立即从编码器中取出数据包,但我从 avcodec_receive_packet 得到 AVERROR(EAGAIN)。我读到这个:

在解码或编码开始时,编解码器可能会接受多个输入帧/数据包而不返回帧,直到其内部缓冲区被填满

有没有办法解决这个问题,例如可以通过改变内部缓冲区大小?

标签: ffmpeg

解决方案


rc-lookahead使用 libx264 编码器,尝试为keyint/min-keyint或设置较小的值vbv-bufsize。例如:设置rc-lookahead=5使编码器在输出第一个编码数据包之前只期望 5 帧。请注意,这可能会增加编码数据包的大小。

希望您能找到与 mpeg1video 编码器类似的选项。


推荐阅读