首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取avi视频- Matlab

读取avi视频- Matlab
EN

Stack Overflow用户
提问于 2015-10-11 10:01:50
回答 2查看 2.4K关注 0票数 1

我想在Matlab中读一个AVI文件。我根据以下链接进行了尝试:movies.pdf

代码语言:javascript
复制
clear all
close all
movieObj = VideoReader('ap001_BL0_SP2_cam03_compressed.avi'); % open file
get(movieObj) % display all information about movie
nFrames = movieObj.NumberOfFrames; %shows 310 in my case
for iFrame=1:2:nFrames
    I = read(movieObj,iFrame); % get one RGB image
    imshow(I,[]); % Display image
end

我得到以下错误:

使用VideoReader/read (第145行)时出错,请求的帧索引超出了文件的末尾。 test_video_read中的错误(第9行)i= read(movieObj,iFrame);%获取一个RGB图像

"get(movieObj)“的输出是:

代码语言:javascript
复制
General Settings: 
   Duration = 10.3333
   Name = ap001_BL0_SP2_cam03_compressed.avi
   Type = VideoReader

Video Settings:
   BitsPerPixel = 24
   FrameRate = 30
   Height = 1280
   NumberOfFrames = 310
   VideoFormat = RGB24
   Width = 960

因此,应该可以阅读第一帧,因为有310可用!我可以在VLC-Player中播放AVI文件,所以应该已经安装了编解码器,对吗?

我使用的是MATLAB R2013a,Windows 7。谁能帮忙,谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-12 13:48:27

VLC播放器是使用ffmpeg编解码器构建的。VideoReader使用DirectShow和,它们是,与ffmpeg不同。因此,如果一个文件使用VLC播放,则不能保证VideoReader会打开它。你可以做几件事:

  1. 可以在上查看该文件吗?如果是这样的话,在大多数情况下,它应该与VideoReader一起工作。如果没有,那么您就没有合适的编解码器。试着安装ffsdhow或K编解码程序包。
  2. 如果文件在上工作,但VideoReader不支持,则表示存在错误。过去对我起作用的一个解决办法是,我安装上面提到的编解码器,然后再试一次。
  3. 如果(1)和(2)没有帮助,请使用像手制动器或Mirro这样的软件将文件转换为MP4,从而赢得VideoReader。

希望这能有所帮助。

迪内什

票数 2
EN

Stack Overflow用户

发布于 2015-10-12 05:59:31

我已经用一些avi文件测试了你的Matlab代码,我对它们没有问题。所以,我认为是您的avi文件导致了错误。

我以前也有类似的问题,我的(mp4)电影可以在任何媒体播放器中播放,但是matlab不能打开它们。在我的例子中,问题是在编译mp4电影时(通过ffmpeg)时的像素格式。默认情况下,我的电影是用高4:4:4预测(yuv444p)格式编译的,但是Matlab无法处理。当我切换到较旧的像素格式(yuv420p)时,将电影加载到Matlab中没有任何问题。

您可以使用ff探针检查这是否是问题所在,它是ffmpeg的一部分,您可以从https://www.ffmpeg.org下载它们。

否则,你试过用未压缩的阿维吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33063754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档