VideoReader可以正确读取.MOV文件,但无法在MATLAB

时间:2019-04-05 11:02:14

标签: matlab video

我简化了我编写的代码,请在下面查看。

try
    video = VideoReader('IMG_6174.MOV');
catch
    video = false;
end

if video ~= false
    totalFrames = video.duration * video.framerate;
end

vidStruct = struct('cdata', zeros(300, 300, 3, 'uint8'), 'colormap', []);

for frameNumber = 1:totalFrames
   try
       vidStruct(frameNumber).cdata = readFrame(vidObj);
   catch
       disp(strcat('Frame missed. Number:', int2str(frameNumber)));
   end
end

我想做的很简单。我只想读取一个视频文件,如果我能够读取它,我想将该视频文件的每一帧放入一个结构中。如果其中一个框架存在错误,则会显示一条错误消息,如代码中所示。

上面的代码为我提供了以下输出:(我已将其缩短以节省空间,但对于所有帧来说都是相同的消息)

Frame missed. Number:1
Frame missed. Number:2
Frame missed. Number:3
.
.
.
Frame missed. Number:71
Frame missed. Number:72
Frame missed. Number:73

此外,带有

的while循环版本
while hasFrame(video)
    ....
end 

也不起作用,因为hasFrame返回0。我检查了video变量的数据,并将其与实际视频文件中的信息匹配。我正在使用MATLAB r2015b。另外,VLC Media Player也可以正常工作。

感谢您的帮助。非常感谢。

0 个答案:

没有答案