MATLAB:VideoReader错误检查
问题描述:
我正在做几个小型.avi文件的图像处理。一小部分文件看起来已经损坏。MATLAB:VideoReader错误检查
一种类型的损坏似乎是无法读取的视频的特定帧。我为此添加了try-catch块,它运行良好。
但是,根据VLC,另一种损害类型是“破损或缺失AVI索引”。当VideoReader尝试打开这种类型的损坏文件时,会使Matlab完全崩溃并显示错误,“MATLAB遇到了内部问题,需要关闭。”和细节信息,“在周三四月检测分割违反......”
所以我的问题是,有没有什么办法错误校验/跳过,将导致此崩溃的影片?
答
您可以使用ffmpeg检查视频文件的完整性。
,请参阅:ffmpeg
How 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
感谢。我遇到了一个问题,这似乎适用于错误检查一些破损的索引,但通过就好像他们是在其他人的好视频。我不确定两个视频之间有什么区别,哪两个视频都说索引损坏但会产生两个不同的输出。任何想法? – Austin
如果没有示例文件很难分辨出来......您是使用Windows还是Linux?你可以尝试执行'ffprobe'工具(用'ffmpeg'下载)。尝试搜索AVI特定格式分析工具。 AVI视频文件无需索引即可播放(只是变得不可见)。您可以尝试修复这些文件,我发现使用Google的'DivFix ++'(从未使用过)。 – Rotem