MATLAB视频转换

来源:互联网 发布:telnet文件linux 编辑:程序博客网 时间:2024/05/16 11:42

视频转换的出自一个博客

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')   %生成视频