主要内容

VideoReader

创建对象来读取视频文件

描述

使用一个VideoReader对象来读取包含视频数据的文件。该对象包含视频文件的相关信息,用于从视频中读取数据。你可以创建一个VideoReader对象。VideoReader函数,通过对象属性查询视频信息,再通过对象函数读取视频。

有关更多信息,请参见金宝app支持的视频和音频文件格式

创建

描述

例子

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

例子

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

输入参数

全部展开

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

有关更多信息,请参见金宝app支持的视频和音频文件格式

例子:“myFile.mp4”

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

数据类型:字符|字符串

属性

全部展开

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

D = v.持续时间;

该属性是只读的。

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

数据类型:

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

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

例子:5.6

数据类型:

该属性是只读的。

以秒为单位的文件长度,以数字标量指定。

数据类型:

该属性是只读的。

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

注意:适用于OS X Yosemite(10.10版本)及更高版本,支持MPEG-4/H。使用VideoWriter正确播放,但显示不准确的帧率。

数据类型:

该属性是只读的。

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

数据类型:

该属性是只读的。

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

数据类型:字符|字符串

该属性是只读的。

视频流中的帧数,用数字标量指定。

请注意

对于一定长度的视频,值NumFrames目前还没有房源。为了得到NumFrames属性,类型v.NumFrames在命令行中。

数据类型:

该属性是只读的。

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

数据类型:字符|字符串

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

例子:“109年实验”

数据类型:字符|字符串

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

该属性是只读的。

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

除Motion JPEG 2000文件外,其他文件类型都有这些参数之一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金宝app支持

例子

全部折叠

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

v = VideoReader(“xylophone.mp4”);

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

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

返回的最后一帧的信息readFrame

框架
帧240x320x3 230400 uint8

创建视频读取器对象,从指定时间开始读取视频帧。

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

v = VideoReader(“xylophone.mp4”);

指定从视频开始2.5秒开始阅读。

v.CurrentTime = 2.5;

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

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

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

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

v = VideoReader(“xylophone.mp4”);

只读取第一帧视频。

Frame = read(v,1);

只读取最后一帧视频。

frame = read(v,Inf);

阅读第5到第10帧。

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

从第50帧开始读到视频文件的末尾。

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

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

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

vidObj = VideoReader(“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 MathWorks, Inc.

限制

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

提示

  • macOS平台不再支持某些较旧的视频文件格式。金宝app读取这样的文件VideoReader

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

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

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

扩展功能

版本历史

在R2010b中引入

全部展开