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

使用matlab2010读取并播放wmv视频

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

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

- V! T) p' Z% o3 i: P2 @* ZMATLAB程序如下:
% A5 @8 M$ t' {$ B# n# w& }' j" Y' A: X; S
%{
/ y3 [% |+ w( i- k8 c主题:使用matlab2010播放WMV视频( B! o" @3 K# r$ W7 a% m
使用范围:
' G5 d9 A* k# ~2 ?$ k) \& T可以用于视频处理。在硬件实现视频处理之前,首先使用MATLAB对
3 }& s; v: U) J算法进行仿真。这样可以及时的发现问题,避免不必要的开支。
5 [. c8 F9 k: u2 m制作:天空之恋+ M  t6 I% m7 n9 M
地点:桂电  J. f9 O3 w2 L. e) r9 l
时间:) H( M7 J3 y7 q2 e$ J  s
说明:参考VideoReader标准使用方法* M% U* n" m! L9 {: ~) g) S
%}- o+ K/ h4 j: u1 o
%清除所有变量; u+ j; o6 Z6 R' C2 \
%读取视频文件
) e/ B. ^5 N; o9 ^: pvideo=VideoReader('test6.wmv');%此处使用mmreader()函数读取视频也可以。4 B1 X0 y! T' r
% 读取视频中所有数据; W9 z3 q% u3 z& A0 X9 a/ O# i. P
vidFrames = read(video);
: o# F0 g7 r" L+ m. I; [%读取视频的帧的个数
% l5 @( U3 K- J  j7 knumFrames = get(video, 'numberOfFrames');%获得总的视频帧的个数
! o+ E* y- p3 A4 P%从视频帧数据中创建一个MATLAB视频播放结构体8 B  f  u! T8 u, O  h: L7 P, F
  for k = 1 : numFrames            
1 N  R7 @5 t* J) z         mov(k).cdata = vidFrames(:,:,:,k);
8 q6 x3 w2 V9 _  T, g+ A# R. w         %{
) d, V( h  c6 ]& [          %---------亮点,处理程序都可以放在这里了。。
7 r! l4 Y/ ?, V  L7 X          %这段程序是将视频转换成灰度图像,也就是彩色电视变成黑白电视) f8 {4 X+ f9 m1 r
         a=vidFrames(:,:,1,k);# }( M* I9 p$ ^7 h
         b=vidFrames(:,:,2,k);
* d1 ]/ a* N; I2 A. j         c=vidFrames(:,:,3,k);. S  R, s7 [' Q( H- m, R
         d=0.299*a+0.587*b+0.114*c;6 u3 {% A4 }2 l3 X+ x6 X* v
         mov(k).cdata=cat(3,d,d,d);         ) y  i2 M" C3 }0 x9 k5 o- o9 g
         mov(k).colormap = [];   
) S& }& q/ H2 h4 a1 Q" a         %}        
; i! Y. P! J- i: l) n  end   
- @  v3 l' o+ W3 `( R) e5 J; [9 ^' ^5 P! U  hf=figure;%创建图像; j: X$ K# S( h; U6 n
  %基于视频的宽度和高度重建图片9 ]0 K2 L& j; ~' o6 K; v
  set(hf, 'position', [150 150 video.Width video.Height])
* F; G! Y+ s4 X$ n  %按照视频帧速率重播视频3 U& p3 m5 a  S5 a# v; t8 \* N4 |6 r
  movie(hf, mov, 1, video.FrameRate/3);%这个地方为什么要除3请看下面解释。
0 U0 v" F+ \5 l
5 P6 z. h( L7 t  R9 t9 ?" h. ^0 b问题:% Y% J7 x% q2 Y& p& l

* ]# |& a( b1 Q, B, F) l2 ^  ?(1)读取WMV格式的视频MATLAB总是要有一个警告:5 @# F! s$ F4 l% D/ o2 o
% _% L- \2 c8 u. [3 \8 M
Warning: Unable to determine the number of frames in this file.
3 \+ R6 D8 u9 W" ~2 {
8 ]8 G0 c  q5 {: i; B其实,这个警告是说不能确定视频帧的个数(能不确定帧的个数,也就不知道视频时间是多长,这个可能是个BUG吧,不懂。读取AVI视频的时候没有这个警告)。这个警告可以忽略,因为最终我们还是可以正常播放视频。& ]- \  c# o1 J, x8 `

+ F6 R0 A: q+ d$ i(2)视频大小问题
5 B; U% p! r+ H* {2 O+ d" }
5 Q# ]5 g! b% E- t& u6 A; k0 @最开始我播放一个4分钟左右标准的WMV个数的视频(像素1024*768)。使用笔记本电脑读的视频的时候,电脑发热直接死机了。使用老式的台式机读取的时候,读了一分钟左右才能正常的播放视频。对于用MATLAB播放更长视频的,感觉就是找死了。
: \7 b# o8 E4 D' n; l0 W) T  g! E6 h3 a8 \" }+ n* R
分析:MATLAB应该是首先读取视频总的帧的个数,可能是为了确定视频的总时长吧。视频一幅画面像素数越多、时间越长,MATLAB播放视频准备时间就越长(要等1分钟左右)。: W! t% ]0 F- w4 z
8 `5 F& @/ ]2 V: L5 Q, @% j) x
(3)解决方案3 z6 J/ I  G3 k; @/ u8 d3 B9 m+ o& V
4 S9 ^, |6 R+ d0 j: H# `* S
这个地方我自己制作了一段一分钟左右的视频。一幅画面像素数300*260左右。这样在播放的时候,MATLAB只要准备6秒钟左右就可以。视频有500帧左右。
: |$ n, _# ~+ M, ^5 z3 f7 R! J5 [! z
(4)  movie(hf, mov, 1, video.FrameRate/3);/ d; ?# h' L1 V( t0 A: E

0 Z+ }4 k9 k) `" ^这个地方是播放视频。如果播放AVI视频的时候,不用除3。这个地方除3主要是因为视频时我自己做的。如果不除3,视频播放的帧速率过快,播放的视频和原视频的速度不匹配。
) U1 J6 G) P6 {5 y  I9 b  P6 M; w1 x' I& I8 @, w! x
测试结果如下图:
, {3 \- e; c5 h" V# A/ h' k4 y6 H; V/ ~$ I7 k" o8 e. x/ [
- o+ G" x5 c/ F$ ]; m0 `# M
2 n! d2 N$ {+ A

" ^. F  Q" k, b8 `0 K' |2 u; Q2 R" P/ N1 B, D
演示视频在我的网盘里面:+ ^, C6 M# @8 o6 u9 H7 _- W8 K' _, |

$ ?. \4 X, H9 x! r两个视频都小于5M.- j' q/ j: `2 U9 i6 Y( p* _
6 }4 @( R- L1 {9 Z+ l4 K
MATLAB测试小视频:http://pan.baidu.com/s/1qWoamde
, s4 U) b# C3 J( F  G! C  [( c, H* y4 s6 M3 ^
MATLAB程序读取WMV实际演示:http://pan.baidu.com/s/1pJ5Dj435 c6 d1 F, e( W8 |* a5 W6 {5 e

/ v' i; D% V% W# ^8 S& j6 r
4 D8 v0 r3 k# H5 p, f+ K- T5 Q4 _5 P  p  E; v

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-24 10:21 , Processed in 0.078125 second(s), 26 queries , Gzip On.

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

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

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