問題描述:
使用ffmpeg API編碼,調用av_read_frame()讀取緩存隊列中的視頻流時,提示AVERROR_EOF,導致進程提前終止。
原因解析:
因爲ffmpeg的輸入爲緩存隊列,緩存隊列中的數據是一直在不斷寫入的,而ffmpeg是一直在讀取,未控制寫入側和讀取側的速度,導致av_read_frame()讀取緩存數據過快,從而產生AVERROR_EOF錯誤。
解決方案:
控制av_read_frame()讀取緩存隊列的速度,在讀取緩存隊列前進行預讀取,根據緩存隊列的大小判斷是否進行av_read_frame(),從而控制緩存隊列不被全部讀取,避免產生AVERROR_EOF。