VideoReader
读视频文件创建对象
描述
使用一个VideoReader
对象包含视频数据的读取文件。对象包含视频文件的信息,使您能够从视频读取数据。您可以创建一个VideoReader
对象使用VideoReader
视频功能,查询信息使用对象属性,然后使用对象读取的视频功能。
有关更多信息,请参见金宝app支持视频和音频文件格式。
创建
描述
输入参数
文件名
- - - - - -文件名称
特征向量|字符串标量
文件名称,指定为一个特征向量或字符串标量。
有关更多信息,请参见金宝app支持视频和音频文件格式。
例子:“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 金宝app支持 |
例子
创建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平台不支持某些旧的视频文件格式。金宝app阅读这些文件使用
VideoReader
:使用QuickTime播放器打开视频文件。如果玩家检测旧格式的文件,然后它会自动将文件转换为新的格式。
保存新转换的视频文件。
使用
VideoReader
读这个新转换的视频文件。
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
使用笔记和限制:
代码生成的VideoReader
金宝app支持大多数格式、语法、方法和功能具有以下限制。
视频格式支持:金宝app
如果
文件名
是一个编译时常量,然后在MATLAB代码生成支持所有支持的格式。金宝app在MATLAB支持的视频格式的更多信息,见金宝app金宝app支持视频和音频文件格式。如果
文件名
不是编译时常量,那么代码生成仅支持视频文件可以解码的数据吗金宝appuint8
数据类型。金宝app支持视频格式包括:mp4
,。mov
,.AVI
。
对象建设:
对墨西哥人的目标,部分路径支持视频文件。金宝app
RTW的目标,你必须提供全部或视频文件的相对路径。
方法和功能:
平台依赖性——如果生成的代码
VideoReader
在一个特定的机器不工作另一台机器上,那么:确保合适的为你的视频编解码器可在目标机器上。
添加测试代码来检查是否在目标机器上创建的视频对象是有效的。测试代码可以包括检查视频对象是否具有有效的高度或宽度。例如:
videoObj = VideoReader(文件名);如果isnan (videoObj.Height)流(“未能创建视频对象。\ n”);返回结束
使用行布局——生成代码生成代码,使用行阵列布局(MATLAB编码器)。
数组大小限制,代码生成一个数组的元素的最大数量是受制于硬件代码生成器和目标。有关更多信息,请参见代码生成的数组大小限制(MATLAB编码器)。
GPU的代码生成
生成NVIDIA的CUDA®代码®GPU使用GPU编码器™。
使用笔记和限制:
与MATLAB编码器™金宝app支持NVIDIA包®杰森®和NVIDIA驱动™平台,您可以生成CUDA®MATLAB代码VideoReader
读取文件包含视频数据对象在NVIDIA硬件目标。
学习如何生成读视频文件在NVIDIA的CUDA代码通过使用目标VideoReader
功能,请参阅读视频文件在NVIDIA硬件(MATLAB编码器支持包为金宝appNVIDIA杰森和NVIDIA驱动平台)。
生成的代码使用GStreamer库API来读取视频文件。您必须安装GStreamer库(v1.0或更高)在NVIDIA目标平台。
对于代码生成,只有文件(容器)格式和支持兼容GStreamer的编解码器。金宝app
对于代码生成,
VideoReader
函数需要的完整路径视频文件在目标硬件。方法和功能:
VideoReader.getFileFormats
——代码生成不支持这个方法。金宝app
线程环境
在后台运行代码使用MATLAB®backgroundPool
与并行计算工具箱™或加速代码ThreadPool
。
这个函数完全支持线程的环境。金宝app有关更多信息,请参见MATLAB函数线程环境中运行。
版本历史
介绍了R2010bR2021b:金宝app支持线程环境
您可以运行VideoReader
在后台使用MATLABbackgroundPool
。
R2021b:2000年JPEG图像像素差异
像素值之间的差异可能存在JPEG 2000 R2021b和以前版本的MATLAB图像。
Abrir比如
这种版本modificada德埃斯特比如。害怕Desea abrir埃斯特比如con sus modificaciones吗?
第一de MATLAB
Ha事实clic en联合国围绕此时一个埃斯特第一de MATLAB:
Ejecute el第一introduciendolo en la ventana de第一de MATLAB。洛杉矶navegadores网络没有admiten第一de MATLAB。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。