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

使用matlab2010读取并播放wmv视频

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在视频处理方向,一般使用硬件进行处理。当然使用MATLAB进行仿真处理,可以做到方面、节约时间、节省开支等。基于此,本程序在MATLAB实现正常的读取WMV格式的视频,并进行播放。目前还没有加视频处理算法。视频数据能够读取出来,还没有进行处理。
* O0 l/ f, B/ t0 x0 U" N
3 ?7 n* l/ B' P7 ]* LMATLAB程序如下:/ ]: {' L& j4 V7 f9 a) M

+ ~  B! }' _0 B- H% B+ q& r7 A%{
3 X% T3 a7 Y% B. J% r) ]& }主题:使用matlab2010播放WMV视频4 {5 }: n. m3 v5 e& {" \9 }
使用范围:
) o5 B) ^" N7 R7 A6 K; S. Y) q) w可以用于视频处理。在硬件实现视频处理之前,首先使用MATLAB对
& V; m8 h/ f. ^: F; m$ M算法进行仿真。这样可以及时的发现问题,避免不必要的开支。
$ e7 ]" n9 G1 T3 m. Y% H2 A制作:天空之恋
  ]* f, r: k- ?- {; o2 F7 |地点:桂电
5 V+ s1 Z* P4 d* l: M# I" `时间:
2 _" H: F9 T& _, q; R7 \说明:参考VideoReader标准使用方法$ r6 ?! S/ d) H
%}
+ P6 B; g* P* @6 ~%清除所有变量
% x# \& r6 v& Q1 G" D$ X%读取视频文件
$ j+ z# u3 d5 Z* uvideo=VideoReader('test6.wmv');%此处使用mmreader()函数读取视频也可以。( G2 ^2 M5 g0 Z/ W. [% k
% 读取视频中所有数据- O3 m5 V- F, F, a
vidFrames = read(video);' r+ s! p8 `% t8 j
%读取视频的帧的个数
5 J6 g6 i. n( {numFrames = get(video, 'numberOfFrames');%获得总的视频帧的个数- @1 z0 ?7 u' s# q, o* d
%从视频帧数据中创建一个MATLAB视频播放结构体
+ {! s" C9 l5 {* j0 t/ R: z% N  for k = 1 : numFrames            
4 y+ P% k  V0 Q2 p2 w3 w! [! W         mov(k).cdata = vidFrames(:,:,:,k);" j7 m) m& a9 M/ M" p4 S
         %{
; R; t  N3 v: |% t5 l6 v9 q' [- q          %---------亮点,处理程序都可以放在这里了。。
( ~- Y: @0 [9 r5 B4 L8 R/ {8 n          %这段程序是将视频转换成灰度图像,也就是彩色电视变成黑白电视
8 D  s0 N" A7 o1 i2 h4 w  [         a=vidFrames(:,:,1,k);5 G0 J3 _3 w+ D+ n6 J
         b=vidFrames(:,:,2,k);
: {( C9 \8 O3 s         c=vidFrames(:,:,3,k);; Z- E" E" s1 ^6 D3 Q2 [
         d=0.299*a+0.587*b+0.114*c;+ ^  h5 P& H5 W) O8 y' Y+ f" B2 ^7 g
         mov(k).cdata=cat(3,d,d,d);         . H5 B( K4 K# \
         mov(k).colormap = [];   ! c; ?: g5 F( E( T8 F
         %}        0 N: B" @7 B- L8 B
  end   2 K* E1 u8 n8 V. N
  hf=figure;%创建图像
2 V& i0 F* J+ o9 n# w  %基于视频的宽度和高度重建图片; x: p3 @7 P. p; D$ {
  set(hf, 'position', [150 150 video.Width video.Height])1 f4 S6 x* E  |6 U: z9 Q0 R
  %按照视频帧速率重播视频- D* Q) p. f) o8 J
  movie(hf, mov, 1, video.FrameRate/3);%这个地方为什么要除3请看下面解释。
) [9 T4 v* H: `0 i
, ?" o8 o9 X3 x' X# V" Y问题:
2 v6 ]; f+ q2 n4 s3 G
+ S4 o0 z2 `" I: }# {  R1 U) k: P(1)读取WMV格式的视频MATLAB总是要有一个警告:
$ P4 r9 S$ @" O6 w2 b2 I" b7 ?# P4 @. C: l& p
Warning: Unable to determine the number of frames in this file. 6 F) I# c# U6 v( f1 f

$ K* M, J; @+ q8 E- P: b% h2 S其实,这个警告是说不能确定视频帧的个数(能不确定帧的个数,也就不知道视频时间是多长,这个可能是个BUG吧,不懂。读取AVI视频的时候没有这个警告)。这个警告可以忽略,因为最终我们还是可以正常播放视频。
) b* Q  o2 S/ u* F, M7 Y+ m' a* N4 {; Z3 H* q$ z2 a9 i
(2)视频大小问题
0 s  d. u# B# K1 n7 h6 Y" k/ n: s/ q
最开始我播放一个4分钟左右标准的WMV个数的视频(像素1024*768)。使用笔记本电脑读的视频的时候,电脑发热直接死机了。使用老式的台式机读取的时候,读了一分钟左右才能正常的播放视频。对于用MATLAB播放更长视频的,感觉就是找死了。
' Q9 h; x8 k" |2 R* o6 X! `, f- @% ^) I3 a; f, H0 P9 m- T
分析:MATLAB应该是首先读取视频总的帧的个数,可能是为了确定视频的总时长吧。视频一幅画面像素数越多、时间越长,MATLAB播放视频准备时间就越长(要等1分钟左右)。
4 O% q7 Z, v; u6 f) H6 o  a$ q' m% v9 d2 k5 T" N- U+ `
(3)解决方案5 ~8 m* Z6 Z, N! l

9 |6 M" g; x% P. ]7 ~这个地方我自己制作了一段一分钟左右的视频。一幅画面像素数300*260左右。这样在播放的时候,MATLAB只要准备6秒钟左右就可以。视频有500帧左右。
( ~7 I$ ^# |3 x' i6 N# z9 d$ j1 ]- W9 M. |$ n9 L1 D
(4)  movie(hf, mov, 1, video.FrameRate/3);# T& L0 c+ b+ s" u' d+ k

) l3 o* s8 W! M. e这个地方是播放视频。如果播放AVI视频的时候,不用除3。这个地方除3主要是因为视频时我自己做的。如果不除3,视频播放的帧速率过快,播放的视频和原视频的速度不匹配。
0 n- c, `4 ]! t1 ^$ H3 u4 \+ o# s, k* I: ~0 }" e  O
测试结果如下图:' V# c4 W$ Y9 a' r4 `+ s& Q
  q  c6 R1 `; {/ x$ j& A

7 Z' w  D  x' X) d: R! B4 ]% Q, n$ A7 I) {# I+ }, Y

7 w  z% J5 E. t  x' F  J# g3 @9 ?% i# x7 h
演示视频在我的网盘里面:
  M& g& ~8 w0 o9 v% I8 r
' c" W1 n5 H" p, L- L/ T两个视频都小于5M.4 I+ n' ^7 M/ z; N
7 s! M1 v. c" U# X
MATLAB测试小视频:http://pan.baidu.com/s/1qWoamde
' G* A& k2 V0 B; f! J; J  J( Z# m$ D5 F& l  x$ J$ Z6 C
MATLAB程序读取WMV实际演示:http://pan.baidu.com/s/1pJ5Dj434 O0 A, W$ ^/ a+ F) i

# j4 {$ d( w, N" N6 |) A. I8 Z- ]. z6 M. w; D" t" n# Z0 j

3 C+ s+ ~0 c4 Y

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 12:50 , Processed in 0.156250 second(s), 27 queries , Gzip On.

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

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

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