图片缩略图

mmread

版本1.10.0.0 (12.6 MB) 弥迦书里歇尔
读取几乎任何媒体文件在Windows, Linux或Mac。

70.8 k下载

更新11月12日

查看许可协议

[video, audio] = mmread(文件名,帧,时间,disableVideo, disableAudio, matlabCommand, trySeeking, useFFGRAB)
mread几乎可以读取任何媒体文件。它现在使用AVbin和FFmpeg来捕获数据,这包括url。该代码支持Matl金宝appab运行的所有主要操作系统和体系结构。

输入
要读取的文件名输入文件(mpg, avi, wmv, asf, wav, mp3, gif,…)帧指定要捕获的视频帧,默认[]为所有或指定时间

time [startTime stopTime], default [] for all disableVideo禁用所有视频捕获,以节省内存或时间disableAudio禁用所有音频捕获,以节省内存或时间

matlabCommand不返回视频结构,而是调用matlabCommand指定的函数。函数定义必须匹配processFrame.m的定义。看到processFrame。M代表更多信息。
trySeeking [true]设置为false会使代码更慢,但更精确。如果前几帧失真或计时信息不准确,将此设置为false。

useFFGRAB [true]使用mread的新版本,使用ffmpeg。但是,如果音频或视频流无法读取,并且您正在运行Windows,请尝试将此设置为false(旧版本)。

输出
Video是一个结构体,包含以下字段:
Width视频帧的宽度
Height视频帧的高度
对视频的帧率进行评级,如果无法确定,则为1。

nrframesttotal电影中的总帧数,不管捕获了多少帧。不幸的是,这并不总是可以确定的。如果它是负值,那么它是基于持续时间和利率的估计(通常精确到0.1%以内)。它可以是0,在这种情况下,它根本无法确定。如果它是一个正数,那么它应该总是准确的。

totalDuration视频的总时长,以秒为单位。
用以下字段帧一个结构数组:
cdata[高X宽X 3] uint8矩阵
Colormap总是空的
乘以帧的相应时间戳(以msec为单位)
一些编解码器(非mmread)将跳过固定帧率电影中的重复帧(即与前一帧相同),以节省空间和时间。这些跳过的帧可以通过在“times”字段中查找跳转来检测。当跳过帧时,该字段为真。

Audio是一个具有以下字段的结构体:
音频流中的通道数(1或2)
音频的采样率,例如44100。如果不能确定,则为1。

Bits样本的比特深度(8或16)
数据整个音频流的真实数据。这可以使用wavplay播放。如果指定了时间段,则数据的长度可能与总时间不一致。这通常发生在电影中。问题是音频流的开始通常被计算在第一帧的结束。所以,时间以1/帧速率移动。

nrFramesTotal音频在捕获时以包或帧的形式出现,将音频划分为帧可能有意义,也可能没有意义。

totalDuration音频的总长度,以秒为单位。
帧单元格阵列uint8s。可能没什么用。
乘以帧的相应时间戳(以毫秒为单位)

如果没有视频或音频流,相应的结构将为空。

指定帧不会影响音频捕获。如果你只想要一小段音频,可以使用第三个参数“时间”。指定音频和视频的时间效果。时间以秒为单位指定(支持亚秒分辨率,例如1.125),从0开始。金宝app时间定义为startTime(包括)到stopTime(不包括),或者使用集合表示法[startTime stopTime)。

如果有多个视频流或音频流,则结构的长度为> 1。例如:音频(1)。数据和音频(2).数据。

例子
[视频,音频]= mmread(' bells .wav');%读取整个wav文件
wavplay (audio.data audio.rate);

Video = mread('mymovie.mpg');%阅读整部电影
电影(video.frames);

Video = mread('mymovie.mpg',1:10);%只能得到前10帧

视频= mread('我的电影。3.5 mpg的[],[0]);%阅读视频的前3.5秒

(视频、音频)= mmread(“chimes.wav”,[],0.25 [0]);%读取wav的前0.25秒
(视频、音频)= mmread(“chimes.wav”,[],[0.25 - 0.5]);%读取0.25 ~ 0.5秒的wav,与前面的例子没有重叠。

直接从URL读取电影
视频= mmread('http://www.nature.com/neuro/journal/v9/n4/extref/nn1660-S8.avi ');

Video = mmread('mymovie.mpg',[],[],false,true);%读取所有帧,禁用音频

mmread (mymovie.mpg,[][],假的,假的,“processFrame”);使用processFrame.m函数对电影中的所有帧进行内联处理

引用作为

迈卡·里赫特(2022年)。mmread(//www.tatmou.com/matlabcentral/fileexchange/8028-mmread), MATLAB中央文件交换。检索

MATLAB版本兼容性
使用R14创建
与任何版本兼容
平台的兼容性
窗户 macOS Linux

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!