2017-04-13 29 views
1

나는 수천 개의 작은 .avi 파일에 대해 몇 가지 이미지 처리를하고 있습니다. 파일의 작은 하위 집합이 손상된 것 같습니다.MATLAB : VideoReader 오류 검사

손상의 한 유형은 읽을 수없는 비디오의 특정 프레임 인 것 같습니다.이 클립에는 try-catch 블록이 추가되어 잘 작동합니다.

그러나 VLC에 따르면 또 다른 유형의 손상은 "깨지거나 누락 된 AVI 색인"입니다. VideoReader가 이러한 유형의 손상으로 파일을 열려고하면 "MATLAB에 내부 문제가있어서 종료해야합니다."라는 오류로 Matlab이 완전히 중단됩니다. 세부 정보 메시지에서 "4 월에 감지 된 분할 위반 ..."

제 질문은 오류를 일으킬 수있는 오류를 검사/건너 뛰는 방법이 있습니까?

답변

2

ffmpeg을 사용하여 비디오 파일의 무결성을 검사 할 수 있습니다.

참조 : ffmpegHow can I check the integrity of a video file (avi, mpeg, mp4…)?
다운로드 정적 빌드 및 작업 디렉토리에 ffmpeg.exe을 넣어.

system 명령을 사용하여 Matlab에서 ffmpeg을 실행하고 반환 상태를 확인하십시오.
상태가 0이 아니면 비디오 파일이 손상됩니다.
더 정밀한 논리를 위해 출력 오류 메시지를 구문 분석 할 수도 있습니다.

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