问题描述:
使用ffmpeg API编码,调用av_read_frame()读取缓存队列中的视频流时,提示AVERROR_EOF,导致进程提前终止。
原因解析:
因为ffmpeg的输入为缓存队列,缓存队列中的数据是一直在不断写入的,而ffmpeg是一直在读取,未控制写入侧和读取侧的速度,导致av_read_frame()读取缓存数据过快,从而产生AVERROR_EOF错误。
解决方案1:
控制av_read_frame()读取缓存队列的速度,在读取缓存队列前进行预读取,根据缓存队列的大小判断是否进行av_read_frame(),从而控制缓存队列不被全部读取,避免产生AVERROR_EOF。
解决方案2:
https://blog.csdn.net/Martin_chen2/article/details/105531007