找回密码
 注册
关于网站域名变更的通知
查看: 628|回复: 1
打印 上一主题 下一主题

使用matlab2010读取并播放wmv视频

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-6-23 19:02 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
在视频处理方向,一般使用硬件进行处理。当然使用MATLAB进行仿真处理,可以做到方面、节约时间、节省开支等。基于此,本程序在MATLAB实现正常的读取WMV格式的视频,并进行播放。目前还没有加视频处理算法。视频数据能够读取出来,还没有进行处理。6 ]6 V; @! M5 A. n8 X" ]) z
$ J4 L9 A2 g, @4 @: k
MATLAB程序如下:% k* e0 z. P  @6 J0 \3 w

5 f0 q; Y! l7 C0 v; K& e%{0 S; g- v, l, q, e+ k; u
主题:使用matlab2010播放WMV视频0 M: {' P8 _( I6 B1 ^
使用范围:8 O' t( e. [. t( p
可以用于视频处理。在硬件实现视频处理之前,首先使用MATLAB对
" n: T5 u/ E6 H2 S5 @1 s# _算法进行仿真。这样可以及时的发现问题,避免不必要的开支。5 `  m, p- }9 e4 H- f; t9 E
制作:天空之恋8 |5 v, i8 J& M
地点:桂电
4 P2 x! R+ l. @) f" M8 U: N- V) e时间:$ R# [* K" w/ R4 F0 A
说明:参考VideoReader标准使用方法0 m4 u4 m5 Y9 f" H( i( h
%}
# Y8 X2 r& O9 Q- C%清除所有变量# X- j. [, K  ]
%读取视频文件
3 b5 V* M0 [; Z0 Ivideo=VideoReader('test6.wmv');%此处使用mmreader()函数读取视频也可以。
" z1 I' W; V/ x. e, a% 读取视频中所有数据/ Q0 M* x. y2 P- m) l" c
vidFrames = read(video);
8 T" [6 J" @4 \& x6 q+ E%读取视频的帧的个数. p# i0 d1 |6 j- N+ S( W
numFrames = get(video, 'numberOfFrames');%获得总的视频帧的个数
# Y7 L5 s$ q# W, j# I# ?%从视频帧数据中创建一个MATLAB视频播放结构体4 `9 X+ j* \' \6 O+ ~
  for k = 1 : numFrames            7 C" c3 F; Y# M1 k, P! ]! {
         mov(k).cdata = vidFrames(:,:,:,k);3 ?& s8 d5 i% R, Y2 H$ b5 `6 g
         %{2 g4 d2 j! S! o( q0 F
          %---------亮点,处理程序都可以放在这里了。。
. f: @8 U8 W! G$ J          %这段程序是将视频转换成灰度图像,也就是彩色电视变成黑白电视3 c6 Z; r, D  U. t. A2 D
         a=vidFrames(:,:,1,k);
0 o) d$ |+ d) ?0 J/ H         b=vidFrames(:,:,2,k);0 w7 n* N3 s; h  }# s
         c=vidFrames(:,:,3,k);  J% U& ^/ R$ d4 ?! ]3 _$ E9 U
         d=0.299*a+0.587*b+0.114*c;
5 T8 A# \( E2 |- u' p$ N6 @         mov(k).cdata=cat(3,d,d,d);         , J( E# O9 M! \0 t- z- K
         mov(k).colormap = [];   ) h# V( B$ u( {/ ?
         %}        
2 c% E, v6 j: v% l$ O8 C( d' R  end   6 y  i  r# L& c$ h( X1 l6 V
  hf=figure;%创建图像
  C" n. U. u/ L7 E  %基于视频的宽度和高度重建图片/ z% l6 Q) r* n2 W" u9 ?& z2 r% P
  set(hf, 'position', [150 150 video.Width video.Height])6 N$ c& V, e& y$ k- v2 p( E$ C3 T  V
  %按照视频帧速率重播视频) P: i/ s$ L9 d% e: v- a6 U. I
  movie(hf, mov, 1, video.FrameRate/3);%这个地方为什么要除3请看下面解释。( |9 L0 g! F- V6 z$ o$ k
3 n5 n/ g  F2 {& L7 X! u) ?# `
问题:5 Z/ e4 I% s" _" V# l, a6 M

% P8 L1 ^0 |: V2 m+ z1 Q(1)读取WMV格式的视频MATLAB总是要有一个警告:
( R6 e( Z% R. u6 A9 Z
& l% o* Q$ n* x! q5 a3 dWarning: Unable to determine the number of frames in this file.
  h+ F8 \9 g! e6 m" v8 u- B6 o4 T6 ?# l6 A% ~( @. ~" b3 l
其实,这个警告是说不能确定视频帧的个数(能不确定帧的个数,也就不知道视频时间是多长,这个可能是个BUG吧,不懂。读取AVI视频的时候没有这个警告)。这个警告可以忽略,因为最终我们还是可以正常播放视频。
3 h* s0 X* W4 ~6 X; ?! Z, z2 Z, A! Z- c0 k5 k
(2)视频大小问题0 o- i7 ^, F" f7 n1 C
1 _% X) {3 k) o8 }: v; n7 g! z% ?6 r
最开始我播放一个4分钟左右标准的WMV个数的视频(像素1024*768)。使用笔记本电脑读的视频的时候,电脑发热直接死机了。使用老式的台式机读取的时候,读了一分钟左右才能正常的播放视频。对于用MATLAB播放更长视频的,感觉就是找死了。
% e- H8 v/ |6 j' Y
' I$ \1 F( M0 w6 {4 W0 j8 ?4 {分析:MATLAB应该是首先读取视频总的帧的个数,可能是为了确定视频的总时长吧。视频一幅画面像素数越多、时间越长,MATLAB播放视频准备时间就越长(要等1分钟左右)。
! b; ]6 k* {! O7 k/ O; q! _. V, |( L- K6 n5 [+ |" H# z" j+ E
(3)解决方案
& l4 D7 q' D8 Q( T- e! L  _/ }# P' ?% z/ B* B1 t$ V- c8 E
这个地方我自己制作了一段一分钟左右的视频。一幅画面像素数300*260左右。这样在播放的时候,MATLAB只要准备6秒钟左右就可以。视频有500帧左右。' ^( W$ W- j8 y9 B4 t" |
' t0 x! |3 V9 U( q& P& _
(4)  movie(hf, mov, 1, video.FrameRate/3);
5 X3 f$ C# ]+ Z0 i" D  I9 _
( W3 B" ~+ V1 G% u+ l7 {+ }% I这个地方是播放视频。如果播放AVI视频的时候,不用除3。这个地方除3主要是因为视频时我自己做的。如果不除3,视频播放的帧速率过快,播放的视频和原视频的速度不匹配。. e( v+ |, f; Q: }" {

. Q, B0 y( X8 t( ~7 \测试结果如下图:( }# ?/ @5 |/ i
7 Y! c1 V; X2 r: A& I5 T

% f; p5 |' ?& T( Y% @' ~9 O4 \: Z7 `- Y% p* K1 k
7 M2 M& G- t& K" ?

3 A  a  @! a5 x- t. X演示视频在我的网盘里面:
8 P  a( U$ Y0 G0 S6 D; T5 d7 X! S$ x$ D* [
两个视频都小于5M.
! i- I( I/ G: d8 J3 q+ a; ]) y1 e; z! v# N5 m3 h: x$ u$ d
MATLAB测试小视频:http://pan.baidu.com/s/1qWoamde
9 X) ]- z! {% ^/ g
: Z5 _  e+ x' W5 }( f" yMATLAB程序读取WMV实际演示:http://pan.baidu.com/s/1pJ5Dj43
+ w3 ~: {3 }; H0 R/ a! Q& O" L/ {) C! B) _

& T8 H8 _! t) x& ?
! h; p7 d3 i: [% A$ `' C0 s$ x

该用户从未签到

2#
发表于 2020-6-23 19:49 | 只看该作者
在视频处理方向,一般使用硬件进行处理。当然使用MATLAB进行仿真处理,可以做到方面、节约时间、节省开支等。基于此,本程序在MATLAB实现正常的读取WMV格式的视频,并进行播放。目前还没有加视频处理算法。视频数据能够读取出来,还没有进行处理。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 15:12 , Processed in 0.171875 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表