当前位置: 首页 > >

Mplayer学*总结一

发布时间:

总总一
首先,在 fedora14 编 编 和安装 mplayer。在官网下了源码 :MPlayer-1.0rc3.tar.bz2,编 编 安装就 是./configure, make, make install 三部曲。但是,不知道为 什么 在 make 时 出错 。出现 如下的错 错 : “/usr/lib/libgif.so.4: could not read symbols: Invalid operation collect2: ld returned 1 exit status make: *** [mplayer] 错 错 1” 以为 版本 mplayer 版本太高,后来就下了 MPlayer-1.0rc2.tar.bz2 重新编 编 。但在 make 时 出现 了新 错 错 ,如下: vo_ivtv.c:80: warning: unused variable ''sd1'' vo_ivtv.c:79: warning: unused variable ''sd''或者-o vo_ivtv.o vo_ivtv.cvo_ivtv.c: In function 'ivtv_reset':vo_ivtv.c:79: error: storage size of 'sd' isn't knownvo_ivtv.c:80: error: storage size of 'sd1' isn't knownvo_ivtv.c:84: error: ………… 在网上查 了资 料后,知道之前配置出现 了问 问 ,./configure 后面应 加上——disable-ivtv 屏蔽 ivtv (若不屏蔽,make 时 将出现 -o vo_ivtv.o vo_ivtv.c 错 错 ),这 个问 问 解决后,又出现 了刚 刚 始的问 问 。又 在网上找到资 料后知道,产 生这 个问 问 的原因是 lib 库 引用错 了:QuantizeBuffer 是 libgif 里的东 西, 但 是却引用成-lungif。 解决办 法:找到 Makefile 引用的地方, 把-lungif 改成-lgif 就可以了。位置在: MPlayer-1.0rc2 目录 下包含的一个 config.mak 里(大概是 46 行)。 这 个问 问 解决后,后面就顺 利安装上 Mplayer 了。 接着就是刚 始看源码 了,了解 mplayer 的框架。看代码 当然需要一个好软 件,这 这 才能提高阅 阅 效 率。在 windows 下可以用 source insight 软 件,而在 linux 下通过 vim+ctags+Tlist 可以得到同这 的效果。 这 里就要熟悉各种 命令,在网上也查 了一些用法。比较 常用的是查 找和变 量跳转 。这 时 自己也好好熟悉一下, vim 的一些常用的快捷键 ,因为 在看代码 时 要经 常用到。 看代码 时 ,刚 刚 始真的是无从下手,因为 太多了,各种 跳转 ,没有侧 重点。在网上查 了些资 料,发 现 这 方面的资 料也挺少的。后来,看了一下视 视 播放原理的资 料。mplayer 本身就是一个播放器,原理也是大同 小异。大体来说 播放视 视 分 4 个步 步 :1)获 取音视 视 2)音视 视 分离 3)音视 视 解码 4)音视 视 视 出 。在源 码 里,/stream 目录 录 应 的功能主要是实 现 接收和获 取音视 视 ; /libmpdemux 是解复 用,作用是分离音视 视 ; /libmpcodecs 作用是解码 ;/libvo 为 视 视 视 出;/libao2 为 音视 的视 出。 刚 始不太明白为 什么 要分离音视 视 ,查 资 料后知道,其实 之所以需要 demux,是因为 音视 视 在制作的 候实 实 上都是独立编 码 的,得到的是分刚 的数据,为 了传 视 方便必须 要用某种 方式合起来,这 就有了各种 封 时 装格式也就有了 demux。因为 原始的音视 视 都是占用大量空间 ,而且冗余度较 高的数据,通常在制作的时 候就 会进 行某种 种 种 。所以,在解码 之前需要先分离。 解码 是比较 重要的一部分, 解出来是一张 张 张 片,最终 会视 出到显 示器上。这 里解码 器只负 负 解码 , 把解码 后的帧 传 帧 一个过 渡变 量,不负 负 显 示。 显 示的时 候,有些函数接口可以调 用显 卡加速功能,不然,直接一张 一张 张 片刷在屏幕上,会很慢。 同时 , 音视 和视 视 在 demux 之后就是独立的,但是需要有一套机制把它们 同步 起来。同时 我们 需要有一套机 制来控制速度、暂 停、停止、跳进 ,获 取各种 媒体信息,这 些都是很复 复 而又很重要的事情。
这 周只是查 了些网上资 料,大概了解了一下 mplayer,代码 码 没有怎么 么 看。接下来就要就某模块 么 看代码 ,好好理清各个模块 的作用,是怎么 这 分离视视流和音视流,解码接口函数如何调用,如截张 功能,就 得好好看看 libmpcodes/mp_image.c, 看看解码 后的张 片是怎这 样 存的。




友情链接: