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

使用matlab2010读取并播放wmv视频

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在视频处理方向,一般使用硬件进行处理。当然使用MATLAB进行仿真处理,可以做到方面、节约时间、节省开支等。基于此,本程序在MATLAB实现正常的读取WMV格式的视频,并进行播放。目前还没有加视频处理算法。视频数据能够读取出来,还没有进行处理。" r, E' l! d) m
0 v% I5 A3 V) @# {' W+ P
MATLAB程序如下:
- u1 I. K  I. I6 C0 W+ Y1 d5 {1 W+ s$ y8 q, g  q
%{+ x$ t0 k# ?' G) [6 C8 O' ~3 j
主题:使用matlab2010播放WMV视频, E9 {5 n& e/ ^3 j
使用范围:
! M( d% p/ O$ j' Q/ I可以用于视频处理。在硬件实现视频处理之前,首先使用MATLAB对
* q$ B4 i5 a! [7 e$ M+ r算法进行仿真。这样可以及时的发现问题,避免不必要的开支。7 K8 j9 ~% Z7 X5 v- B) s
制作:天空之恋0 C$ K. l4 Y4 z+ J% b, a
地点:桂电$ V& @1 d" f) T  e. L
时间:3 F3 j& P, e1 a- C1 v" j# [
说明:参考VideoReader标准使用方法6 o5 v3 k  G: m1 Q& w: S
%}& K# H  q7 m9 U6 T$ v( @
%清除所有变量
  q& R) I, D% F+ R; S%读取视频文件
# U. T8 |8 G, l! hvideo=VideoReader('test6.wmv');%此处使用mmreader()函数读取视频也可以。
! Z8 v, C$ w) a* J$ B8 ~& O% 读取视频中所有数据) h5 i, W2 i5 z
vidFrames = read(video);
% C7 J; G9 Y* @$ P' L/ x6 O! U%读取视频的帧的个数
# S% p# z7 Z; T5 c6 L5 lnumFrames = get(video, 'numberOfFrames');%获得总的视频帧的个数
3 m/ l3 m' I5 S* J  c%从视频帧数据中创建一个MATLAB视频播放结构体" d# F8 k6 |5 E5 F
  for k = 1 : numFrames            4 g; l& k2 r$ T5 S. T
         mov(k).cdata = vidFrames(:,:,:,k);
1 ], M6 g- O: F7 Z: x         %{
  G- i: m2 M5 |( A/ ?9 m9 [8 Z          %---------亮点,处理程序都可以放在这里了。。
! ]8 ?; D& e; x& f* j% `( D! W3 X          %这段程序是将视频转换成灰度图像,也就是彩色电视变成黑白电视
7 G6 j3 u' o% ]; j, U/ \         a=vidFrames(:,:,1,k);
7 A% f8 C' W6 d7 y& ^, G, Q         b=vidFrames(:,:,2,k);+ g% R' L$ N# [5 z
         c=vidFrames(:,:,3,k);
2 c& g' i9 K2 m, d0 \         d=0.299*a+0.587*b+0.114*c;
1 [! c( m+ A: ~6 t* j2 x- F5 k         mov(k).cdata=cat(3,d,d,d);         
% [6 r" j- |% O" E2 x3 M9 j         mov(k).colormap = [];   # f& G8 v- L% x3 g
         %}        / o) U. y, V& C. g. p. X
  end   9 E+ U$ w! L+ X5 c4 H2 V8 ?4 ?
  hf=figure;%创建图像% A/ g  W# `* a2 S. \
  %基于视频的宽度和高度重建图片
$ ]8 U; B9 n7 @: j4 P  set(hf, 'position', [150 150 video.Width video.Height])
9 g& {6 M2 ~0 ]9 w  %按照视频帧速率重播视频' q- u# R6 y1 `8 e6 T" E
  movie(hf, mov, 1, video.FrameRate/3);%这个地方为什么要除3请看下面解释。' a9 l; V! z/ k7 H" s

. |) |# o3 y- x0 r3 E问题:
0 O5 `) n5 _8 P! k; a! m: d0 e
( R4 P' X& x+ }(1)读取WMV格式的视频MATLAB总是要有一个警告:
& D7 F3 V/ U7 \/ V  ^7 Y/ K3 y; t8 v8 Q4 U' U
Warning: Unable to determine the number of frames in this file. ) M4 }  J8 h  _1 _% Y2 p
2 `+ O! q  Y0 L1 P$ O2 `( B5 V
其实,这个警告是说不能确定视频帧的个数(能不确定帧的个数,也就不知道视频时间是多长,这个可能是个BUG吧,不懂。读取AVI视频的时候没有这个警告)。这个警告可以忽略,因为最终我们还是可以正常播放视频。: h3 O" g* _6 {
" o- }1 ]/ k. i! V6 F! J' y( F
(2)视频大小问题1 E$ {& f8 D4 ^

' `6 C  S7 G$ W3 u3 c& U  d5 p' M最开始我播放一个4分钟左右标准的WMV个数的视频(像素1024*768)。使用笔记本电脑读的视频的时候,电脑发热直接死机了。使用老式的台式机读取的时候,读了一分钟左右才能正常的播放视频。对于用MATLAB播放更长视频的,感觉就是找死了。) u$ n+ C# C8 p/ u  D- P
$ a9 F, N5 V8 I- F3 u' W  a
分析:MATLAB应该是首先读取视频总的帧的个数,可能是为了确定视频的总时长吧。视频一幅画面像素数越多、时间越长,MATLAB播放视频准备时间就越长(要等1分钟左右)。
  U+ e# R( C8 u& R+ J# j' T9 }; ^( {5 [) Q6 W5 @. e; A! Y0 u
(3)解决方案! J# L, e% c: |8 s) Y
8 h7 d, h3 s1 g1 [
这个地方我自己制作了一段一分钟左右的视频。一幅画面像素数300*260左右。这样在播放的时候,MATLAB只要准备6秒钟左右就可以。视频有500帧左右。
' f% R" V3 O' a  F8 |& ~# v" T
! B  p) j, e, m! x. X9 E(4)  movie(hf, mov, 1, video.FrameRate/3);: G2 K/ b/ A1 W$ i

5 b( j/ q! p" Y) |; _  e* o$ [这个地方是播放视频。如果播放AVI视频的时候,不用除3。这个地方除3主要是因为视频时我自己做的。如果不除3,视频播放的帧速率过快,播放的视频和原视频的速度不匹配。1 E7 t9 ?1 n# G' O9 j1 N* H' [4 m* T8 t

2 J; h& x2 ?8 a5 z5 i$ |$ L测试结果如下图:( x' H4 H: Z% R8 `

: ~0 W4 [+ Y  |. N7 ^8 |5 L8 v1 ` 2 p" z3 d, [4 @1 F  _

& f" ~* d4 B) k7 K1 A2 C6 R2 o
2 m6 n/ s& L1 K8 x7 \8 k! ?
$ J& m4 L! ^1 W0 T& M演示视频在我的网盘里面:0 J# [2 q! }% b
0 x) ?  Z1 V: t" o' R
两个视频都小于5M.
6 n* v' M( ^8 T3 Y8 Q1 J4 A# V% Q5 b" D4 j
MATLAB测试小视频:http://pan.baidu.com/s/1qWoamde
/ ]# r' p" N8 E0 y7 f6 f' t8 b5 N: L5 e6 G9 j* _5 [, t- x; p
MATLAB程序读取WMV实际演示:http://pan.baidu.com/s/1pJ5Dj43
0 \( x3 d8 L1 H$ G9 K  J% P! `+ h. _1 [

& u% X5 ?; y& Y0 @) Y: q! J
/ _9 U/ u) q  x  e- F5 \/ O

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-24 05:40 , Processed in 0.125000 second(s), 27 queries , Gzip On.

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

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

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