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

使用matlab2010读取并播放wmv视频

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在视频处理方向,一般使用硬件进行处理。当然使用MATLAB进行仿真处理,可以做到方面、节约时间、节省开支等。基于此,本程序在MATLAB实现正常的读取WMV格式的视频,并进行播放。目前还没有加视频处理算法。视频数据能够读取出来,还没有进行处理。
. Y$ X( Y2 W( T7 E" x6 |. C/ G/ b( l  Q8 E
MATLAB程序如下:' `5 f6 j5 B4 C1 N4 N

7 K/ z  F" V# h( r9 y8 A$ [%{! k, @8 I1 C8 N
主题:使用matlab2010播放WMV视频
; ~2 v4 ^6 @6 W* `使用范围:
4 C* O+ M, H* k可以用于视频处理。在硬件实现视频处理之前,首先使用MATLAB对  b9 n: [" s$ ^0 Y* p
算法进行仿真。这样可以及时的发现问题,避免不必要的开支。
& n) s. L: {6 s7 F制作:天空之恋
3 H4 m. L: N' Y- K" R9 c地点:桂电! c" x' z+ A3 ?2 h- E  V  l
时间:
% [- |5 X) Y6 a# K( n5 l说明:参考VideoReader标准使用方法
% {& F! u) F) l%}
6 u7 Y- c1 P  J, g) C6 H8 l%清除所有变量
( m/ q9 q0 R1 Z# n7 a( U. b1 F  G- g%读取视频文件
% B& N7 a" H& N& }$ Xvideo=VideoReader('test6.wmv');%此处使用mmreader()函数读取视频也可以。- o2 J% m. e! B1 l  a
% 读取视频中所有数据
8 ], O9 ?% v" K, _3 l* ?! LvidFrames = read(video);
7 n) t8 V# g) X7 h%读取视频的帧的个数: ?8 n' i3 ?6 f" J: R
numFrames = get(video, 'numberOfFrames');%获得总的视频帧的个数/ O! P& u6 A: a3 l# {
%从视频帧数据中创建一个MATLAB视频播放结构体9 @% L- b' P% {9 e; k9 \
  for k = 1 : numFrames            
' m  X9 |1 {0 I  \% A         mov(k).cdata = vidFrames(:,:,:,k);- g: M# J) D$ z) o: e. G" O
         %{
+ ~$ U) y6 n8 O4 i, Y/ p6 U          %---------亮点,处理程序都可以放在这里了。。$ r" `/ X) R, W- x
          %这段程序是将视频转换成灰度图像,也就是彩色电视变成黑白电视( u# ]/ O9 O" w  s7 T; E2 M
         a=vidFrames(:,:,1,k);
7 D0 A3 n* {' {# M* W/ y         b=vidFrames(:,:,2,k);0 |& Q# Z; _( E7 f$ r
         c=vidFrames(:,:,3,k);
5 N: p1 V" B2 H- _( C1 L1 C1 P         d=0.299*a+0.587*b+0.114*c;; ?+ A* g% ~; j" N
         mov(k).cdata=cat(3,d,d,d);         $ }% `- b" P$ A5 P/ a0 ~- J
         mov(k).colormap = [];   4 ^' L5 p) W4 R4 Q' z, B/ T- x3 ]
         %}        ; J# k2 ]0 t% U% O
  end     z  R( y2 U0 A  H
  hf=figure;%创建图像* k5 e. s) u2 P& M% p
  %基于视频的宽度和高度重建图片4 g+ w/ `* i. I$ D# U$ O
  set(hf, 'position', [150 150 video.Width video.Height])
- m/ g# |# A! q, r2 ?  F  %按照视频帧速率重播视频
0 P  ?' ^1 X& j6 v  R, Q" s7 x  movie(hf, mov, 1, video.FrameRate/3);%这个地方为什么要除3请看下面解释。; u/ x8 {9 ^. }2 H- e
* c# i( _5 @9 g, E% i$ w4 X
问题:
) {: P: B" A8 R! m, n# s5 t; A
% M; C' V4 ~. t6 X: W6 o(1)读取WMV格式的视频MATLAB总是要有一个警告:/ i$ @& ~2 u) p
$ l" q: t8 E: M, P. l
Warning: Unable to determine the number of frames in this file. 6 N; K4 _8 ^/ q; z

9 C4 Z6 I, h5 N  d7 U: M! V( m! Q其实,这个警告是说不能确定视频帧的个数(能不确定帧的个数,也就不知道视频时间是多长,这个可能是个BUG吧,不懂。读取AVI视频的时候没有这个警告)。这个警告可以忽略,因为最终我们还是可以正常播放视频。
& A$ @7 I6 n- P% V# }/ j
0 w# x1 |: ~" a9 i(2)视频大小问题
! ?" C( N  G5 m; K8 Q
, F8 J0 R' E, N  @" v: g最开始我播放一个4分钟左右标准的WMV个数的视频(像素1024*768)。使用笔记本电脑读的视频的时候,电脑发热直接死机了。使用老式的台式机读取的时候,读了一分钟左右才能正常的播放视频。对于用MATLAB播放更长视频的,感觉就是找死了。
$ `  K$ H$ l6 V- \' Q6 ?3 y
& E2 ^, b; e. I& B分析:MATLAB应该是首先读取视频总的帧的个数,可能是为了确定视频的总时长吧。视频一幅画面像素数越多、时间越长,MATLAB播放视频准备时间就越长(要等1分钟左右)。
; G& X1 m- a3 g  P8 q
) x6 I3 g, h, N, m8 {(3)解决方案
' `: C' M  E1 ~) ~6 a- G& x- U+ N/ \; m* _5 i% _6 Z
这个地方我自己制作了一段一分钟左右的视频。一幅画面像素数300*260左右。这样在播放的时候,MATLAB只要准备6秒钟左右就可以。视频有500帧左右。# ^0 A: x8 G( R1 q9 ]: M( s
" @  Y+ z  x' o) @" t" m
(4)  movie(hf, mov, 1, video.FrameRate/3);
* G. o4 m7 i0 z5 p$ K( `, h* M/ q- s2 y0 Q( M
这个地方是播放视频。如果播放AVI视频的时候,不用除3。这个地方除3主要是因为视频时我自己做的。如果不除3,视频播放的帧速率过快,播放的视频和原视频的速度不匹配。* i7 j/ l# W$ A4 z3 m+ D- V

' r% |  o  Y6 v0 S测试结果如下图:
5 N) c. j% Z- `
# x- X( u4 {( h
+ |& }+ I* s) U, o8 L$ U; O. G
" t( E# T) |( y" L: j! C( j( }7 z& }. I' B3 I. O: }4 }
  |1 q5 V- G% Y
演示视频在我的网盘里面:
! z0 l- f, g. O6 L  H* L( p0 S+ T& }5 J! h1 M  e# R+ s
两个视频都小于5M.
; ?  B9 v; W# d9 p3 n
7 _' E7 ]3 c; AMATLAB测试小视频:http://pan.baidu.com/s/1qWoamde
9 |" ~- X% ]/ Y! O* U* I2 d- B+ G2 W3 a
MATLAB程序读取WMV实际演示:http://pan.baidu.com/s/1pJ5Dj43, v3 L# G, X9 f' k% M
& C( @! ^" V2 H2 Y7 h
% R9 l, S5 a+ P. e

7 M5 p( j) x' h$ O; w

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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