使用matlab2010读取并播放wmv视频

在视频处理方向,一般使用硬件进行处理。当然使用MATLAB进行仿真处理,可以做到方面、节约时间、节省开支等。基于此,本程序在MATLAB实现正常的读取WMV格式的视频,并进行播放。目前还没有加视频处理算法。视频数据能够读取出来,还没有进行处理。

MATLAB程序如下:

%{
主题:使用matlab2010播放WMV视频
使用范围:
可以用于视频处理。在硬件实现视频处理之前,首先使用MATLAB对
算法进行仿真。这样可以及时的发现问题,避免不必要的开支。
制作:天空之恋
地点:桂电
时间:2014年8月5日22:32:45
说明:参考VideoReader标准使用方法
%}
%清除所有变量
%读取视频文件
video=VideoReader('test6.wmv');%此处使用mmreader()函数读取视频也可以。
% 读取视频中所有数据
vidFrames = read(video);
%读取视频的帧的个数
numFrames = get(video, 'numberOfFrames');%获得总的视频帧的个数
%从视频帧数据中创建一个MATLAB视频播放结构体
  for k = 1 : numFrames            
         mov(k).cdata = vidFrames(:,:,:,k);
         %{
          %---------亮点,处理程序都可以放在这里了。。
          %这段程序是将视频转换成灰度图像,也就是彩色电视变成黑白电视
         a=vidFrames(:,:,1,k);
         b=vidFrames(:,:,2,k);
         c=vidFrames(:,:,3,k);
         d=0.299*a+0.587*b+0.114*c;
         mov(k).cdata=cat(3,d,d,d);         
         mov(k).colormap = [];   
         %}        
  end   
  hf=figure;%创建图像
  %基于视频的宽度和高度重建图片
  set(hf, 'position', [150 150 video.Width video.Height])
  %按照视频帧速率重播视频
  movie(hf, mov, 1, video.FrameRate/3);%这个地方为什么要除3请看下面解释。

问题:

(1)读取WMV格式的视频MATLAB总是要有一个警告:

Warning: Unable to determine the number of frames in this file. 

其实,这个警告是说不能确定视频帧的个数(能不确定帧的个数,也就不知道视频时间是多长,这个可能是个BUG吧,不懂。读取AVI视频的时候没有这个警告)。这个警告可以忽略,因为最终我们还是可以正常播放视频。

(2)视频大小问题

最开始我播放一个4分钟左右标准的WMV个数的视频(像素1024*768)。使用笔记本电脑读的视频的时候,电脑发热直接死机了。使用老式的台式机读取的时候,读了一分钟左右才能正常的播放视频。对于用MATLAB播放更长视频的,感觉就是找死了。

分析:MATLAB应该是首先读取视频总的帧的个数,可能是为了确定视频的总时长吧。视频一幅画面像素数越多、时间越长,MATLAB播放视频准备时间就越长(要等1分钟左右)。

(3)解决方案

这个地方我自己制作了一段一分钟左右的视频。一幅画面像素数300*260左右。这样在播放的时候,MATLAB只要准备6秒钟左右就可以。视频有500帧左右。

(4)  movie(hf, mov, 1, video.FrameRate/3);

这个地方是播放视频。如果播放AVI视频的时候,不用除3。这个地方除3主要是因为视频时我自己做的。如果不除3,视频播放的帧速率过快,播放的视频和原视频的速度不匹配。

测试结果如下图:



演示视频在我的网盘里面:

两个视频都小于5M.

MATLAB测试小视频:http://pan.baidu.com/s/1qWoamde

MATLAB程序读取WMV实际演示:http://pan.baidu.com/s/1pJ5Dj43




  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值