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

使用matlab2010读取并播放wmv视频

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在视频处理方向,一般使用硬件进行处理。当然使用MATLAB进行仿真处理,可以做到方面、节约时间、节省开支等。基于此,本程序在MATLAB实现正常的读取WMV格式的视频,并进行播放。目前还没有加视频处理算法。视频数据能够读取出来,还没有进行处理。
9 k# `: Y0 Z  L; e$ \# n# X7 A6 _2 m; K. W( n
MATLAB程序如下:
. f4 ^% x5 z- x6 ?9 N" W
# v  E# A* c* n) l" K%{
$ l1 W4 N1 J- F: G. p7 z, \主题:使用matlab2010播放WMV视频( U4 i+ p5 O- k4 o) z8 R
使用范围:7 e( P' v5 y' c  D# u
可以用于视频处理。在硬件实现视频处理之前,首先使用MATLAB对! b0 ^! i* X- R; |) S
算法进行仿真。这样可以及时的发现问题,避免不必要的开支。$ \, A' U- d# y% _5 U2 b5 L
制作:天空之恋, ~1 D* V3 f* Q9 [( C9 y8 Y
地点:桂电
5 f. w* l$ l( N, y5 h$ N& H时间:
, ?) J+ S- k# E) z  ]2 S说明:参考VideoReader标准使用方法; K* X+ u; l+ h# R: }- k
%}+ Y" E) d* b, t! s/ z0 p
%清除所有变量: l$ I# u" x# X$ M/ b
%读取视频文件
- Y5 s1 ~5 A, B! @- g# d+ _# l9 {& ]video=VideoReader('test6.wmv');%此处使用mmreader()函数读取视频也可以。
. O9 E, s: g9 ]# o' `. ~) d% 读取视频中所有数据
5 O) l4 X+ w# g  p1 e: V/ }vidFrames = read(video);1 f% F$ V7 m2 k! X  q% N4 D( `
%读取视频的帧的个数
0 {/ o" D, t- P* u5 _numFrames = get(video, 'numberOfFrames');%获得总的视频帧的个数8 {& y8 L* }0 T+ D# G( M
%从视频帧数据中创建一个MATLAB视频播放结构体
7 ?- @; X0 F- f2 M7 D* c  for k = 1 : numFrames            
  X/ z( G& \: M9 |: G7 F& `$ a         mov(k).cdata = vidFrames(:,:,:,k);) X/ C! `  l# X3 w6 e7 z3 r
         %{
4 h5 n- e2 `, @& R) A4 R3 E          %---------亮点,处理程序都可以放在这里了。。
1 l! P4 Z/ M8 D+ @7 [0 i5 @, K          %这段程序是将视频转换成灰度图像,也就是彩色电视变成黑白电视) _8 ?  a3 A+ i, ~* Y4 g9 Q# T1 v
         a=vidFrames(:,:,1,k);
& d  N* w& w& h9 Y) R         b=vidFrames(:,:,2,k);6 h( b9 B6 g7 k. v8 v+ v
         c=vidFrames(:,:,3,k);
( K4 ]: A, D- i         d=0.299*a+0.587*b+0.114*c;  @' V2 S! J: B7 J. e
         mov(k).cdata=cat(3,d,d,d);         
# z' m, f8 I2 g+ p/ C         mov(k).colormap = [];   % }' T4 ?0 H& ~
         %}        5 O+ e- s+ k; J- [
  end   3 ~4 y9 O+ ~( v: ]+ W7 @5 F$ J- Y
  hf=figure;%创建图像
+ d! E1 B8 B6 k( P2 U$ @& M  %基于视频的宽度和高度重建图片
- R- G2 r# {1 k7 q  set(hf, 'position', [150 150 video.Width video.Height])
2 h6 X" ~. D' K3 w4 T  %按照视频帧速率重播视频" C4 \* U' P/ ~, k6 ?
  movie(hf, mov, 1, video.FrameRate/3);%这个地方为什么要除3请看下面解释。
8 C6 ]: P' N; E# J- C
9 Y, l8 {/ J% C2 m3 \问题:
/ ?$ t6 y' B/ U+ e! q) k0 P; o! x0 s( ]
(1)读取WMV格式的视频MATLAB总是要有一个警告:
8 q( [% M. j& ?6 |" J: k
* n7 q7 L: `5 M& z4 |' wWarning: Unable to determine the number of frames in this file. 1 \+ p# C2 e+ [3 G

) M2 O' c; ^  c2 I其实,这个警告是说不能确定视频帧的个数(能不确定帧的个数,也就不知道视频时间是多长,这个可能是个BUG吧,不懂。读取AVI视频的时候没有这个警告)。这个警告可以忽略,因为最终我们还是可以正常播放视频。
. x! N' G4 _( h+ Y6 _3 j+ Q  r5 W& m2 B& m
(2)视频大小问题
$ N  r% q9 p3 B; \
$ g4 D5 G: z/ a" H; D1 p最开始我播放一个4分钟左右标准的WMV个数的视频(像素1024*768)。使用笔记本电脑读的视频的时候,电脑发热直接死机了。使用老式的台式机读取的时候,读了一分钟左右才能正常的播放视频。对于用MATLAB播放更长视频的,感觉就是找死了。
8 ^, \: c/ u! B6 @- X
4 B; R/ Q$ O5 }1 `/ m& D& `分析:MATLAB应该是首先读取视频总的帧的个数,可能是为了确定视频的总时长吧。视频一幅画面像素数越多、时间越长,MATLAB播放视频准备时间就越长(要等1分钟左右)。
  D' W" o, |5 ~& n, q% V# G) N
! _  g0 z% j# L9 R(3)解决方案
, ]" b7 g4 L+ O1 z
: o5 e/ f/ h( r4 h+ U' k7 q$ g# t这个地方我自己制作了一段一分钟左右的视频。一幅画面像素数300*260左右。这样在播放的时候,MATLAB只要准备6秒钟左右就可以。视频有500帧左右。
* Y  v: D$ l0 e+ U8 {% E: U5 }/ o' z/ P9 s3 f7 k1 z& j( S( o8 N# y# \) H
(4)  movie(hf, mov, 1, video.FrameRate/3);
1 |! _. z- G  j' a
- \9 E9 F6 V/ z  n6 {+ D这个地方是播放视频。如果播放AVI视频的时候,不用除3。这个地方除3主要是因为视频时我自己做的。如果不除3,视频播放的帧速率过快,播放的视频和原视频的速度不匹配。
8 l$ e& p& x' D7 b6 k& e. ?/ I3 ^( m1 E
测试结果如下图:
/ g% S( p, \9 s% m
0 a9 k1 F3 {* y( s: x+ s: k7 b) m 5 q: N9 E$ ?9 F
- [" C* o7 N  q1 k/ d

5 k. ]$ D  N: ^4 @6 I, r& Z: F1 U9 [4 {' x# Z
演示视频在我的网盘里面:
/ x& j' N0 B: ]. E, W' ^, h: _" o0 e6 e+ Q' V
两个视频都小于5M.
) b, j0 n1 ?4 j* R3 x
1 G9 Y7 J/ N4 R, _9 U0 }+ iMATLAB测试小视频:http://pan.baidu.com/s/1qWoamde- c% G/ W- k/ E9 Y: c2 [
* g$ m! e/ q9 \
MATLAB程序读取WMV实际演示:http://pan.baidu.com/s/1pJ5Dj43+ y2 t6 Y3 ^+ z3 q. L! G9 N

: a7 ]' o. @8 ^
6 y8 o; Y" R/ v% p
8 B% j3 N- M* J

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-25 11:07 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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