无法使用VideoRead将.avi文件读取到matlab

时间:2014-03-31 22:25:36

标签: matlab avi

代码:

A = aviread('firstAttempt_1395344631.avi');

回应:

Error using VideoReader/init (line 447)  
Failed to initialize internal resources.  

Error in VideoReader (line 132)  
            obj.init(fileName);  

Error in untitled (line 1)  
A = VideoReader('firstAttempt_1395344631.avi');  

有什么建议吗?我无法使用aviread,因为我收到回复:

Error using aviread (line 148)  
Only uncompressed AVI movies can be read on UNIX.  

Error in untitled (line 1)  
A = aviread('firstAttempt_1395344631.avi');  

3 个答案:

答案 0 :(得分:10)

问题是虽然VideoReader支持压缩视频,但从Unix运行时它不支持压缩视频。如果您使用(已弃用)aviread,它将显示以下错误消息:

Error using aviread (line 147)
Only uncompressed AVI movies can be read on UNIX.

幸运的是,unix有很好的工具。您可以使用ffmpeg。在ubuntu linux上,安装apt-get install ffmpeg,然后在Mac上安装,如果你有自制软件,那么只需brew install ffmpeg

然后使用ffmpeg解压缩。使用我在谷歌(http://forum.doom9.org/archive/index.php/t-121280.html)上找到的第一个参考,这样的事情应该有效:

ffmpeg -i input.avs -an -vcodec rawvideo -y output.avi

我自己尝试了,新文件(例如,output.avi)仍无法与aviread一起使用,但现在它可以与VideoReader一起使用。简单!

答案 1 :(得分:0)

你试过直接运行吗? -

A = VideoReader('firstAttempt_1395344631.avi');

据我所知,VideoReader也支持压缩视频。看一下它的文档here

这将创建A作为多媒体阅读器对象,它基本上是一个结构,它保存所有帧的数据,以及有关视频的信息,如帧速率,分辨率,帧数等。

查看here以获取帧特定处理的一些示例,以及如何访问包含与视频相关联的元数据的reader对象的不同组件。

答案 2 :(得分:0)

最好使用{avatead使用VideoReader函数读取.avi视频文件。 VideoReader函数可以提供视频对象。