VideoReader
读视频文件创建对象
描述
使用一个VideoReader
对象包含视频数据的读取文件。对象包含视频文件的信息,使您能够从视频读取数据。您可以创建一个VideoReader
对象使用VideoReader
视频功能,查询信息使用对象属性,然后使用对象读取的视频功能。
有关更多信息,请参见万博1manbetx支持视频和音频文件格式。
创建
描述
输入参数
文件名
- - - - - -文件名称
特征向量|字符串标量
文件名称,指定为一个特征向量或字符串标量。
有关更多信息,请参见万博1manbetx支持视频和音频文件格式。
例子:“myFile.mp4”
例子:“. . / dir /视频/ myFile.avi”
数据类型:字符
|字符串
属性
的VideoReader
对象属性,包含视频文件的信息。属性是只读的,除了CurrentTime
,标签
,用户数据
。您可以查看或修改属性在创建对象的价值。例如,这个命令发现的价值持续时间
财产的VideoReader
对象,v
。
D = v.Duration;
BitsPerPixel
- - - - - -比特每像素的视频数据
数字标量
这个属性是只读的。
位/像素的视频数据,指定为一个数字标量。
数据类型:双
CurrentTime
- - - - - -时间戳的视频帧来读
数字标量
视频帧的时间戳,指定为一个数字标量。指定时间戳在几秒钟内从一开始的视频文件。的价值CurrentTime
可以在零和的时间视频。
在一些平台上,当您创建一个VideoReader
对象,“CurrentTime”
属性可能包含一个值接近,但不完全是零。这种变化的价值“CurrentTime”
房地产是由于每个平台如何处理和读取视频的差异。
例子:5.6
数据类型:双
持续时间
- - - - - -文件的长度
数字标量
这个属性是只读的。
文件的长度在几秒钟内,指定为一个数字标量。
数据类型:双
帧速率
- - - - - -视频帧每秒
数字标量
这个属性是只读的。
视频帧每秒,指定为一个数字标量。对变动框架率视频,帧速率
平均帧速率。
注意:OS X约塞米蒂(版本10.10),后来,mpeg - 4 /小时。264个文件使用VideoWriter
正确,但显示一个不精确的帧速率。
数据类型:双
高度
- - - - - -高度的视频帧
数字标量
这个属性是只读的。
高视频帧的像素,指定为一个数字标量。
数据类型:双
的名字
- - - - - -文件名称
特征向量|字符串标量
这个属性是只读的。
文件名称,指定为一个特征向量或字符串标量。
数据类型:字符
|字符串
NumFrames
- - - - - -在视频的帧数
数字标量
这个属性是只读的。
视频的帧数,指定为一个数字标量。
请注意
一定长度的视频,的值NumFrames
属性是没有立即可用。得到NumFrames
属性,类型v.NumFrames
在命令行。
数据类型:双
路径
- - - - - -视频文件完整路径
特征向量|字符串标量
这个属性是只读的。
完整路径与读者对象相关的视频文件,指定为一个特征向量或字符串标量。
数据类型:字符
|字符串
标签
- - - - - -通用文本
”
(默认)|特征向量|字符串标量
通用文本,指定为一个特征向量或字符串标量。
例子:“109年实验”
数据类型:字符
|字符串
用户数据
- - - - - -用户定义的数据
[]
(默认)|任何数据类型
用户定义的数据,指定为任何数据类型的值。
VideoFormat
- - - - - -MATLAB®表示视频格式
特征向量|字符串标量
这个属性是只读的。
视频格式的MATLAB表示,向量指定为一个字符或字符串标量。
文件类型,除了运动JPEG 2000文件,其中的一个VideoFormat
值。
视频格式 |
的价值 |
---|---|
与RGB24视频AVI或mpeg - 4文件 |
“RGB24” |
和索引视频AVI文件 |
“索引” |
与灰度视频AVI文件 |
“灰度” |
运动JPEG 2000个文件,有以下之一VideoFormat
值。
格式的图像数据 |
的价值 |
---|---|
单波段uint8 |
“Mono8” |
单波段int8 |
“Mono8签署” |
单波段uint16 |
“Mono16” |
单波段int16 |
“Mono16签署” |
三级uint8 |
“RGB24” |
三级int8 |
“RGB24签署” |
三级uint16 |
“RGB48” |
三级int16 |
“RGB48签署” |
数据类型:字符
|字符串
宽度
- - - - - -宽度的视频帧
数字标量
这个属性是只读的。
视频帧的宽度像素,指定为一个数字标量。
数据类型:双
对象的功能
hasFrame |
确定视频帧是否可读 |
读 |
读取一个或多个视频帧 |
readFrame |
读下一个视频帧 |
VideoReader.getFileFormats |
文件格式,VideoReader 万博1manbetx支持 |
例子
创建VideoReader对象和读取视频
创建一个VideoReader
对象的电影文件示例xylophone.mp4
。
v = VideoReader (“xylophone.mp4”);
阅读所有的帧的视频,一帧。
而hasFrame (v)帧= readFrame (v);结束
显示返回的最后一帧信息readFrame
。
谁框架
类属性名称大小字节帧240 x320x3 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。
帧=阅读(v, 5 [10]);
从50帧读取视频文件的结束。
50帧=阅读(v,[正]);
使用帧索引读取视频和时间互换
从视频通过指定帧读取一帧索引,然后读剩下的视频帧一帧。
创建一个VideoReader
对象和显示的值CurrentTime
财产。视频,一个零值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))帧= readFrame (vidObj);imshow(框架);标题(sprintf ('当前时间= %。3 f交会”vidObj.CurrentTime));暂停(2 / vidObj.FrameRate);结束
版权2019年MathWorks公司。
限制
对于一些AVI, MOV,或MP4文件窗口®,使用
readFrame
函数文件中读取所有的帧可以导致不同的帧数返回的值NumFrames
财产的VideoReader
对象。
提示
的macOS平台不支持某些旧的视频文件格式。万博1manbetx阅读这些文件使用
VideoReader
:使用QuickTime播放器打开视频文件。如果玩家检测旧格式的文件,然后它会自动将文件转换为新的格式。
保存新转换的视频文件。
使用
VideoReader
读这个新转换的视频文件。
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
使用笔记和限制:
代码生成的VideoReader
万博1manbetx支持大多数格式、语法、方法和功能具有以下限制。
视频格式支持:万博1manbetx
如果
文件名
是一个编译时常量,然后在MATLAB代码生成支持所有支持的格式。万博1manbetx在MATLAB支持的视频格式的更多信息,见万博1manbetx万博1manbetx支持视频和音频文件格式。如果
文件名
不是编译时常量,那么代码生成仅支持视频文件可以解码的数据吗万博1manbetxuint8
数据类型。万博1manbetx支持视频格式包括:mp4
,。mov
,.AVI
。
对象建设:
对墨西哥人的目标,部分路径支持视频文件。万博1manbetx
RTW的目标,你必须提供全部或视频文件的相对路径。
方法和功能:
平台依赖性——如果生成的代码
VideoReader
在一个特定的机器不工作另一台机器上,那么:确保合适的为你的视频编解码器可在目标机器上。
添加测试代码来检查是否在目标机器上创建的视频对象是有效的。测试代码可以包括检查视频对象是否具有有效的高度或宽度。例如:
videoObj = VideoReader(文件名);如果isnan (videoObj.Height)流(“未能创建视频对象。\ n”);返回结束
使用行布局——生成代码生成代码,使用行阵列布局(MATLAB编码器)。
数组大小限制,代码生成一个数组的元素的最大数量是受制于硬件代码生成器和目标。有关更多信息,请参见代码生成的数组大小限制(MATLAB编码器)。
GPU的代码生成
生成NVIDIA的CUDA®代码®GPU使用GPU编码器™。
使用笔记和限制:
与MATLAB编码器™万博1manbetx支持NVIDIA包®杰森™和NVIDIA驱动™平台,您可以生成CUDA®MATLAB代码VideoReader
读取文件包含视频数据对象在NVIDIA硬件目标。
学习如何生成读视频文件在NVIDIA的CUDA代码通过使用目标VideoReader
功能,请参阅读视频文件在NVIDIA硬件(MATLAB编码器支持包为万博1manbetxNVIDIA杰森和NVIDIA驱动平台)。
生成的代码使用GStreamer库API来读取视频文件。您必须安装GStreamer库(v1.0或更高)在NVIDIA目标平台。
对于代码生成,只有文件(容器)格式和支持兼容GStreamer的编解码器。万博1manbetx
对于代码生成,
VideoReader
函数需要的完整路径视频文件在目标硬件。方法和功能:
VideoReader.getFileFormats
——代码生成不支持这个方法。万博1manbetx
线程环境
在后台运行代码使用MATLAB®backgroundPool
与并行计算工具箱™或加速代码ThreadPool
。
使用笔记和限制:
这个函数不支持线程环境在Windows平台上读万博1manbetx取数据时mpeg 1格式(.mpg
),Windows媒体视频格式(.wmv
使用微软的),或者其他格式®DirectShow的®解码。
有关更多信息,请参见MATLAB函数线程环境中运行。
版本历史
介绍了R2010bR2021b:万博1manbetx支持线程环境
您可以运行VideoReader
在后台使用MATLABbackgroundPool
。
R2021b:2000年JPEG图像像素差异
像素值之间的差异可能存在JPEG 2000图像R2021b和MATLAB的以前版本。
R2019b:阅读视频帧使用帧索引或时间
的VideoReader
对象支持可互换万博1manbetx使用帧索引访问视频帧或时间。因此,您可以使用读
和readFrame
互换。以前,你可以一次只使用一个类型的访问。试图读取帧可以互换使用读
和readFrame
导致一个错误。
R2019b:改进的性能在生成的代码行布局
对于大的视频文件,生成的代码VideoReader
对象与行布局选项显示改进的性能。例如,timingTest
函数显示4 x加速h .
视频文件的分辨率1280 x720
。
t(函数、数据]= timingTest(文件名)vidObj = VideoReader(文件名);data =细胞(20,1);抽搐;问={问}= readFrame 1:20数据(vidObj);t = toc结束;结束
生成的代码timingTest
函数行旗。的codegen
命令创建一个函数timingTest_mex
与C和c++生成的代码。
codegen timingTest-args{编码器。typeof(“[1正])}-rowmajor
对于一个h .
视频文件的分辨率1280 x720
执行时间:
R2019a:4.04秒
R2019b:0.95秒
代码是定时在Windows 10,英特尔®至强®@ 3.6 GHz CPU w - 2133测试系统通过调用函数timingTest_mex
。视频文件的分辨率越高(以帧大小),性能提升就越大。
R2019b:NumberOfFrames
财产不推荐
的NumberOfFrames
属性不推荐。使用NumFrames
财产。没有删除的计划NumberOfFrames
财产。
R2019b:的数组VideoReader
对象不支持万博1manbetx
你可以不再创建一个数组VideoReader
对象。更新你的代码删除数组VideoReader
对象。
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。万博1manbetx
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。