似乎MATLAB将删除NumberOfFrames
选项。
我该怎么知道视频有多少帧?
示例:
Obj = VideoReader( 'File.avi' );
numFrames = Obj.NumberOfFrames;
我尝试使用FrameRate*Duration
进行解决,但如果两者都不是整数,则有时无效。
更新
我已向Mathworks提交了请求,让我们等待他们的回复。
答案 0 :(得分:3)
作为一种无效的解决方法,您可能希望使用hasFrame()
方法来了解框架是否可供读取。在while循环中使用它,你可以传递整个视频并收集最后一个计数器值作为帧数...这根本不是有效的,但可以工作。
示例:强>
clc
clear
VideoObj = VideoReader('YourVideo.avi');
NumFrames = 0;
while hasFrame(VideoObj)
%// You can store the current frame into a mov structure. It completely defeats the efficiency since you can't pre-allocate and you are back to original problem though.
CurrentFrame = readFrame(VideoObj)
NumFrames = NumFrames+1;
end
现在帧数存储在NumFrames
。
这是一个有趣的问题!
答案 1 :(得分:1)
好的,我找到了办法
vid = VideoReader('video.avi');
numframes = int16(fix(vid.FrameRate*vid.Duration));