2017-04-13 82 views
1

我正在做幾個小型.avi文件的圖像處理。一小部分文件看起來已經損壞。MATLAB:VideoReader錯誤檢查

一種類型的損壞似乎是無法讀取的視頻的特定幀。我爲此添加了try-catch塊,它運行良好。

但是,根據VLC,另一種損害類型是「破損或缺失AVI索引」。當VideoReader嘗試打開這種類型的損壞文件時,會使Matlab完全崩潰並顯示錯誤,「MATLAB遇到了內部問題,需要關閉。」和細節信息,「在週三四月檢測分割違反......」

所以我的問題是,有沒有什麼辦法錯誤校驗/跳過,將導致此崩潰的影片?

回答

2

您可以使用ffmpeg檢查視頻文件的完整性。

,請參閱:ffmpegHow can I check the integrity of a video file (avi, mpeg, mp4…)?
下載靜電的積聚,並把ffmpeg.exe在工作目錄。

使用system命令中Matlab的執行ffmpeg,並檢查返回狀態。
如果狀態不爲零,則視頻文件已損壞。
您也可以解析更精細邏輯的輸出錯誤消息。

下面是一個代碼示例:

filename = 'input.avi'; 

if (isunix) 
    [status, cmdout] = system(['ffmpeg.exe -v error -i ', filename, ' -f null - 2']); 
else 
    [status, cmdout] = system(['ffmpeg.exe -v error -i ', filename, ' -f null - 2>&1']); 
end 

if (status ~= 0) 
    %Dispaly cmdout if file is damaged. 
    disp([filename, ' is corrupted. Error: ', cmdout]); 
end 
+0

感謝。我遇到了一個問題,這似乎適用於錯誤檢查一些破損的索引,但通過就好像他們是在其他人的好視頻。我不確定兩個視頻之間有什麼區別,哪兩個視頻都說索引損壞但會產生兩個不同的輸出。任何想法? – Austin

+0

如果沒有示例文件很難分辨出來......您是使用Windows還是Linux?你可以嘗試執行'ffprobe'工具(用'ffmpeg'下載)。嘗試搜索AVI特定格式分析工具。 AVI視頻文件無需索引即可播放(只是變得不可見)。您可以嘗試修復這些文件,我發現使用Google的'DivFix ++'(從未使用過)。 – Rotem