主要内容

VideoReader

创建对象来读取视频文件

描述

使用一个VideoReader对象读取包含视频数据的文件。对象包含关于视频文件的信息,并使您能够从视频中读取数据。您可以创建VideoReader对象使用VideoReader函数,使用对象属性查询有关视频的信息,然后使用对象函数读取视频。

有关更多信息,请参见万博1manbetx支持的视频和音频文件格式

创建

描述

例子

v= VideoReader (文件名创建对象v从指定的文件中读取视频数据文件名

例子

v= VideoReader (文件名名称,值设置属性CurrentTime标签,用户数据使用名称-值参数。例如,VideoReader(“myfile.mp4”、“CurrentTime”,1.2)开始阅读1.2视频开始几秒钟。您可以指定多个名称-值参数。将每个属性名称用单引号括起来,后跟相应的值。

输入参数

全部展开

文件名,指定为字符向量或字符串标量。

有关更多信息,请参见万博1manbetx支持的视频和音频文件格式

例子:“myFile.mp4”

例子:“. . / dir /视频/ myFile.avi”

数据类型:字符|字符串

属性

全部展开

VideoReader对象具有包含有关视频文件信息的属性。属性是只读的,除了CurrentTime标签,用户数据.您可以在创建对象后查看或修改属性的值。的值持续时间的属性VideoReader对象,v

D = v.时长;

此属性是只读的。

视频数据的每像素位,指定为数值标量。

数据类型:

要读取的视频帧的时间戳,指定为数字标量。时间戳是以视频文件开始后的秒为单位指定的。的价值CurrentTime可以在零和视频的持续时间之间。

在某些平台上,当您创建VideoReader对象,“CurrentTime”属性可能包含接近(但不完全)零的值。的值的变化“CurrentTime”属性是由于每个平台处理和读取视频的方式不同。

例子:5.6

数据类型:

此属性是只读的。

文件长度(以秒为单位),指定为数值标量。

数据类型:

此属性是只读的。

每秒视频帧数,指定为数值标量。对于可变帧率视频,帧速率是平均帧速率。

注意:对于OS X Yosemite(版本10.10)和更高版本,MPEG-4/H。264个文件VideoWriter正确播放,但显示不准确的帧速率。

数据类型:

此属性是只读的。

视频帧的高度(以像素为单位),指定为数值标量。

数据类型:

此属性是只读的。

文件名,指定为字符向量或字符串标量。

数据类型:字符|字符串

此属性是只读的。

视频流中的帧数,指定为数值标量。

请注意

对于一定长度的视频,的值NumFrames属性不能立即可用。为了得到NumFrames属性,类型v.NumFrames在命令行中。

数据类型:

此属性是只读的。

与阅读器对象关联的视频文件的完整路径,指定为字符向量或字符串标量。

数据类型:字符|字符串

通用文本,指定为字符向量或字符串标量。

例子:“109年实验”

数据类型:字符|字符串

用户定义的数据,指定为任何数据类型的值。

此属性是只读的。

MATLAB表示的视频格式,指定为字符向量或字符串标量。

除Motion jpeg2000文件外,文件类型都具有其中之一VideoFormat值。

视频格式

的价值VideoFormat

AVI或MPEG-4文件与RGB24视频

“RGB24”

带索引视频的AVI文件

“索引”

AVI文件与灰度视频

“灰度”

动议JPEG 2000文件,具有下列之一VideoFormat值。

图像数据格式

的价值VideoFormat

单波段uint8 “Mono8”
单波段int8 “Mono8签署”
单波段uint16 “Mono16”
单波段int16 “Mono16签署”
三级uint8 “RGB24”
三级int8 “RGB24签署”
三级uint16 “RGB48”
三级int16 “RGB48签署”

数据类型:字符|字符串

此属性是只读的。

视频帧的宽度(以像素为单位),指定为数值标量。

数据类型:

对象的功能

hasFrame 确定视频帧是否可读取
读取一个或多个视频帧
readFrame 阅读下一视频帧
VideoReader.getFileFormats 文件格式VideoReader万博1manbetx支持

例子

全部折叠

创建一个VideoReader对象用于示例电影文件xylophone.mp4

v =视频阅读器(“xylophone.mp4”);

从视频中读取所有帧,一次一帧。

hasFrame(v) frame = readFrame(v);结束

显示返回的最后一帧的信息readFrame

框架
名称大小字节类属性frame 240x320x3 230400 uint8

创建一个视频读取器对象,读取特定时间开始的视频帧。

创建一个对象来读取示例电影文件xylophone.mp4

v =视频阅读器(“xylophone.mp4”);

指定从视频开始后2.5秒开始的读数。

v.CurrentTime = 2.5;

创建一个axis对象来显示框架。然后,继续读取和显示视频帧,直到没有更多的帧可供读取。

currAxes =轴;hasFrame(v) vidFrame = readFrame(v);图像(vidFrame,“父”, currAxes);currAxes。可见=“关闭”;暂停(1 / v.FrameRate);结束

创建一个视频读取器对象并使用帧索引读取一个或多个视频帧。

创建一个VideoReader对象用于示例电影文件xylophone.mp4

v =视频阅读器(“xylophone.mp4”);

只读取第一视频帧。

Frame = read(v,1);

只读取最后一个视频帧。

帧= read(v,Inf);

读5到10帧。

帧= read(v,[5 10]);

从视频文件的第50帧读到最后。

帧= read(v,[50 Inf]);

通过指定帧索引从视频中读取一帧,然后一次读取一帧视频的剩余帧。

创建一个VideoReader对象的值CurrentTime财产。在这个视频中,是0CurrentTime属性指示尚未从视频中读取任何帧。

vidObj =视频阅读器(“xylophone.mp4”);vidObj。CurrentTime
Ans = 0

通过指定帧索引从视频中读取第20帧。的值CurrentTime财产。的方法自动更新CurrentTime属性来反映第20帧已被读取。在此步骤中,调用readFrame函数将返回第21帧。

frame20 = read(vidObj,20);vidObj。CurrentTime
Ans = 0.6667

方法读取视频的剩余帧readFrame方法。的readFrame方法中时间对应的帧CurrentTime财产。例如,这段代码从第21帧开始读取并显示帧,直到没有更多的帧需要读取为止。

(hasFrame(vidObj)) frame = readFrame(vidObj);imshow(框架);标题(sprintf ('当前时间= %。3 f交会”vidObj.CurrentTime));暂停(2 / vidObj.FrameRate);结束

图中包含一个轴对象。标题为Current Time = 4.700 sec的axes对象包含一个image类型的对象。

版权所有2019 The MathWorks, Inc.

限制

  • 对于Windows上的一些AVI、MOV或MP4文件®,使用readFrame函数读取文件中的所有帧的结果可能与函数返回的值不同NumFrames的属性VideoReader对象。

提示

  • macOS平台不再支持某些较旧的视频文件格式。万博1manbetx读取这样的文件VideoReader:

    • 使用QuickTime播放器打开视频文件。如果播放器检测到文件是较旧的格式,那么它会自动将文件转换为较新的格式。

    • 保存新转换的视频文件。

    • 使用VideoReader读取这个新转换的视频文件。

扩展功能

版本历史

在R2010b中引入

全部展开