为什么MATLAB无法确定视频文件中的帧数?

时间:2015-08-11 02:45:41

标签: matlab video

我正在尝试重现麻省理工学院研究人员获得的these results。该代码可用here

这些是我在运行脚本时得到的警告:

  

在17岁时重现结果

     

处理。\ data \ baby.mp4

     

警告:无法确定此文件中的帧数。

     

处理。\ data \ baby2.mp4

     

使用VideoReader / init时出错(第436行)

我试图直接使用VideoReader打开一个文件,这是我得到的警告:

>> videoObj = VideoReader('baby.mp4'); 
Warning: Unable to determine the number of frames in this file.

我按照建议from the MathWorks forum尝试了get()函数。这是输出:

>> get(videoObj)
  General Settings:
    Duration = 10.0333
    Name = baby.mp4
    Path = C:\Documents and Settings\Administrator\Desktop\EVM_Matlab-1.1\EVM_Matlab\data
    Tag = 
    Type = VideoReader
    UserData = []

  Video Settings:
    BitsPerPixel = 24
    FrameRate = 30.0000
    Height = 544
    NumberOfFrames = []
    VideoFormat = RGB24
    Width = 960

我在Windows XP上运行MATLAB R2013a。

1 个答案:

答案 0 :(得分:6)

VideoReader必须扫描整个文件,以确定某些文件格式文件中存在的帧数。它必须这样做的原因是因为一类具有可变帧速率的文件。

通常,帧计数在构造期间发生。但是,对于某些文件,它返回一个空。

要强制,VideoReader计算帧数,请使用

读取最后一帧
data = read(vidObj, Inf);
numFrames = vidObj.NumberOfFrames;

希望这有帮助。

的Dinesh