主要内容

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.Duration;

此属性是只读的。

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

数据类型:

要读取的视频帧的时间戳,指定为数字标量。时间戳以视频文件开始的秒为单位指定。的价值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

带有RGB24视频的AVI或MPEG-4文件

“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 = VideoReader (“xylophone.mp4”);

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

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

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

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

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

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

v = VideoReader (“xylophone.mp4”);

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

v.CurrentTime = 2.5;

创建一个坐标轴对象来显示框架。然后,继续读取和显示视频帧,直到没有其他帧可以读取。

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

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

创建一个VideoReader对象的示例影片文件xylophone.mp4

v = VideoReader (“xylophone.mp4”);

只读第一个视频帧。

帧=阅读(v, 1);

只读最后一帧视频。

帧=阅读(v,正);

读帧5到10。

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

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

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

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

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

vidObj = VideoReader (“xylophone.mp4”);vidObj。CurrentTime
ans = 0

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

frame20 =阅读(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的轴包含一个image类型的对象。

版权所有2019 The MathWorks, Inc.

限制

  • 对于Windows上的AVI、MOV或MP4文件®,使用readFrame函数读取文件中所有帧的结果可能与由NumFrames财产的VideoReader对象。

提示

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

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

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

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

扩展功能

另请参阅

|

介绍了R2010b