2017-04-17 189 views
0

我有三個示例視頻,good.avi,damaged1.avidamaged2.avi。第一個將在VLC中播放,但第二個兩個都會出現與「AVI索引損壞或丟失」消息相同的錯誤。FFmpeg錯誤檢查

我有成千上萬的這些影片,我需要在MATLAB來處理,所以我試圖用錯誤FFmpeg的這樣的檢查:ffmpeg -v error -i vidname.avi -f null - 2>&1

現在,這裏的一部分,我不明白:
good.avi它沒有輸出-OK
damaged1.avi它輸出[mjpeg @ 0x7fc1dd813800] overread 1 -OK
damaged2.avi它沒有輸出完成如good.avi完成 - ...

會有人與視頻編解碼器/ FFmpeg經驗請幫我理解這裏發生了什麼,所以我可以開發更強大的錯誤檢查?

他們也都具有相同的編解碼器的細節VLC: enter image description here

+1

ffplay是否會播放damaged2.avi? – Mulvya

+0

排序,大約一半的時間凍結,沒有錯誤信息。另一方面,對於damaged1.avi,它會在大約2/3處凍結並顯示一條錯誤消息。 – Austin

+1

如果你重新包裝,會發生什麼情況:'ffmpeg -i damaged2.avi -c copy test2.avi' – Mulvya

回答

1

這是一個長鏡頭,但我懷疑JPEG圖像中的一個已損壞(由於overread 1錯誤消息)。

嘗試從damaged1.avi

ffmpeg -i damage1.avi -vcodec copy image%d.jpg 

提取的影像,然後對所提取的圖像運行mogrify

for i in image*.jpg; do mogrify "$i"; done 

最後,重新創建視頻:

cat image*.jpg | ffmpeg -f image2pipe -c:v mjpeg -i - output.avi 

如果一切正常,那麼您可以從damage1.avi中提取音頻並將其複用到o中utput.avi。

+0

謝謝,但主要問題是能夠自動識別這些損壞的文件。我真的不需要這一個特定的視頻,但如果我嘗試將它讀入Matlab,程序崩潰,並且我有大約50,000個這樣的視頻需要處理,所以如果我讓它運行一整夜,並且其中一個被讀入會崩潰並停止我的進展。所以主要我需要一種方法來檢查這種損害。例如在damaged1.avi中,我可以正確檢查它,但在damaged2.avi中,我無法。 – Austin