MATLAB:VideoReader错误检查

时间:2017-04-13 04:01:00

标签: matlab error-handling crash video-processing avi

我正在对几千个小.avi文件进行一些图像处理。一小部分文件似乎已损坏。

一种类型的损坏似乎是视频的特定帧,无法读入。我为此添加了一个try-catch块,它运行良好。

另一种类型的损害是,根据VLC,"破损或丢失AVI索引"。当VideoReader尝试打开具有此类损坏的文件时,它会完全崩溃Matlab并出现错误,#34; MATLAB遇到内部问题并需要关闭。"并详细说明消息,"在4月3日检测到分段违规..."

所以我的问题是,有没有办法错误检查/跳过会导致此次崩溃的视频?

1 个答案:

答案 0 :(得分:2)

您可以使用ffmpeg来检查视频文件的完整性。

请参阅:How can I check the integrity of a video file (avi, mpeg, mp4…)?
下载ffmpeg的静态版本,并将ffmpeg.exe放入您的工作目录中。

使用ffmpeg命令在Matlab中执行system,并检查返回状态 如果状态不为零,则视频文件已损坏 您还可以解析输出错误消息以获得更精细的逻辑。

以下是代码示例:

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