我正在處理一個視頻文件。 我使用ffmpeg來讀取每個數據包。爲什麼av_write_trailer失敗?
如果是音頻數據包,我使用av_interleaved_write_frame將數據包寫入輸出視頻文件。
如果是視頻數據包,我解碼數據包,獲取視頻幀的數據,處理圖像並壓縮回數據包。然後,我使用av_interleaved_write_frame將處理後的視頻幀數據包寫入輸出視頻文件。
通過調試,它可以正確讀取音頻數據包和視頻數據包。 但是,當它轉到「av_write_trailer」時,它將退出。但輸出視頻文件存在。
的錯誤信息是:
*** glibc detected *** /OpenCV_videoFlatten_20130507/Debug/OpenCV_videoFlatten_20130507: corrupted double-linked list: 0x000000000348dfa0 ***
使用電影播放器(在Ubuntu),輸出的視頻文件能夠正確播放音頻,但沒有視頻信號。 使用VLC播放器,它可以顯示第一個視頻幀(保持相同的視頻圖片),並正確播放音頻。
我試圖調試到「av_write_trailer」,但因爲它在ffmpeg庫中,所以我無法獲得詳細的信息。
另一條信息:該項目的前一個版本只處理視頻幀,不添加音頻流;它運作良好。
任何提示或線索?
你好,你可以在調試模式下編譯FFMPEG嗎?這樣,使用調試器,您將能夠進入av_write_trailer()。我也有使用此方法的分段錯誤,它似乎是由ffmpeg試圖訪問AVFormatContext的屬性priv_data導致的,在我的程序 – 2013-05-31 08:54:17
上爲NULL。謝謝。是的,我這樣做,並發現錯誤是由於不正確的設置。 – user1914692 2013-05-31 19:13:03