天天看點

av_read_frame 連續讀包出現EOF的問題

昨天發現的問題,在解碼ape檔案的時候,解碼沒幾回就出現了EOF,但是檔案肯定是還沒有讀完的。一開始以為是解碼出現的問題,後來測試其他格式的檔案解碼沒有問題,唯獨ape這塊兒有這個問題。

今天調試的時候,發現ape讀出來的paket size很大,而且發現通過avcodec_decode_audio4來解碼資料的時候,傳回值總是0。于是猜想,是不是可能包沒有解碼玩就丢棄了。

然後,通過進一步調試,發現自己解碼的處理邏輯上有點問題(在原有的處理邏輯下,資料包隻會循環解碼2次就丢棄了,根本沒有去判斷這個資料包是否還可以繼續解碼)。修改了下邏輯,再次運作,果然沒有問題了。

至于ape檔案解碼,為什麼連續讀包就出現EOF的原因,隻是測試了下packet的使用情況,并沒有時間去深入源碼去看了。

測試結果如下:

av_read_frame 連續讀包出現EOF的問題
av_read_frame 連續讀包出現EOF的問題

繼續閱讀