主要内容

VideoReader

创建对象以读取视频文件

描述

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

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

创建

描述

实例

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

实例

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

输入参数

全部展开

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

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

例子:“myFile.mp4”

例子:“../dir/videos/myFile.avi”

数据类型:字符|字符串

属性

全部展开

这个VideoReader对象的属性包含有关视频文件的信息。属性是只读的,但当前时间,标签,用户数据.创建对象后,可以查看或修改属性的值。例如,该命令查找期间财产的VideoReader对象,v

D = v.Duration;

此属性是只读的。

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

数据类型:

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

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

例子:5.6

数据类型:

此属性是只读的。

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

数据类型:

此属性是只读的。

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

注意:对于OS X Yosemite(10.10版)及更高版本,使用录像机播放正确,但显示不准确的帧率。

数据类型:

此属性是只读的。

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

数据类型:

此属性是只读的。

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

数据类型:字符|字符串

此属性是只读的。

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

笔记

对于一定长度的视频,值NumFrames该物业不能立即提供。得到NumFrames属性、类型v.NumFrames在命令行中。

数据类型:

此属性是只读的。

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

数据类型:字符|字符串

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

例子:“109年实验”

数据类型:字符|字符串

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

此属性是只读的。

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

除Motion JPEG 2000文件外,其他文件类型都有以下类型之一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 确定是否可以读取视频帧
读取一个或多个视频帧
读框 读取下一帧视频
VideoReader.getFileFormats 文件格式,VideoReader金宝app支持

例子

全部崩溃

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

v = VideoReader (“木琴mp4”);

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

hasFrame(v) frame = readFrame(v);终止

显示返回的最后一帧的信息读框

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

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

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

v = VideoReader (“木琴mp4”);

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

v、 CurrentTime=2.5;

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

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

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

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

v = VideoReader (“木琴mp4”);

只读第一个视频帧。

帧=读取(v,1);

只读最后一帧视频。

帧=阅读(v,正);

阅读第5至第10帧。

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

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

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

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

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

vidObj = VideoReader (“木琴mp4”);vidObj。当前时间
ans = 0

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

frame20 =阅读(vidObj 20);vidObj。当前时间
ans = 0.6667

使用。读取视频的剩余帧读框方法读框方法中返回与时间对应的帧当前时间例如,此代码读取并显示从第21帧开始的帧,并持续到没有更多帧可读取为止。

(hasFrame(vidObj))frame=readFrame(vidObj);imshow(框架);头衔(斯普林特)('当前时间=%.3f秒'vidObj.CurrentTime));暂停(2 / vidObj.FrameRate);终止

图中包含Axis对象。标题为Current Time=4.700 sec的Axis对象包含image类型的对象。

版权所有2019 The MathWorks, Inc.

限制

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

提示

  • 这个马科斯平台不再支持某些旧的视频文件格式。使用金宝appVideoReader:

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

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

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

扩展功能

R2010b中引入