视频转换的出自一个博客
http://blog.csdn.net/kit_147/article/details/5491460
今天用MATLAB读取AVI视频,报错:Unable to locate decompressor to decompress video stream
MATLAB aviread命令支持的帧类型是灰度级是8位(索引式或灰度)、16位或是24位(即真彩色)的,应该是所读AVI文件格式不符合的关系。
采用一些视频转换软件,将实验用的AVI文件转成MATLAB支持的格式。
例如采用winAVI 9.0这个软件,选择编码格式ZJMedia Uncompress RGB24,转换成新文件后再实验则可通过。
我采用了他说的视频转换的方法,这里要注意的是winavi9更高版本的转换软件则没有这个选项。而第一次打开提示我没有quick time和real time 的插件,我安装了一个叫做K-Lite Mega Codec Pack的全能解码包,里面包含前面二者。
另外因为我只需要视频的一小段,所以这里要用到视频截取,采用了暴风影音的功能。有一个bug,在截取的视频段中,最后三秒是重复播放的一个画面。
流程如下:
读入rmvb文件——>暴风影音——>片段(*.avi)——>winavi 9.0——>ZJMedia Uncompress RGB2
===============================================================================================
clear;close all;clc
%%
movie_stuct=aviread('C:\Documents and Settings\work\桌面\avi_read\zhenhuan1') % 视频读取
% movie_stuct=aviread('dsnsq.avi') % 视频读取
numFrames=size(movie_stuct,2) % 视频帧数的计算
for k = 1 : numFrames
temp=movie_stuct(k).cdata; %视频每一帧取出,注意这里的帧的数据类型是uint8.
temp=imresize(temp,2);
% figure(k);imshow(temp,[]);
temp=imrotate(temp,90); %帧的处理
mov(k).cdata=temp; %生成mov的文件
mov(k).colormap=[];
k
end
% Play back the movie once at the video's frame rate.
movie2avi(mov,'aaaaa.avi') %生成视频