|
我是一个影迷,在网络中寻找我喜爱的电影,是我获取最新影视的重要途径。在这个“BT”时代“BT”下来的电影也非常BT,还有各种千奇百怪的问题,时常把人搞得都要崩溃。作为一个时尚的超级影迷,对这些问题不解决怎么行。今天就让我们静下心来,研究其原理,分析其症结,做一个播放电影的真正高手!
打通任督二脉——从认识DirectShow起步
在各个论坛里出现电影播放中问题频率非常高的有:下载的电影放不了;只有声音没有图像或者只有图像没有声音;在播放电影时,图像异常以及声音带有杂音等。对于这样的问题,如果排除电影文件本身的问题,我们需要从播放器和解码器两方去找原因。
1、了解播放器的类型
播放器大致可分成两种类型:封闭型播放器和基于DirectShow的播放器。前者有一套自己专用的解码器,播放器通过它们来进行播放;后者则依赖系统中的DirectShow解码器进行播放,这些解码器是通用的,一般是由发布该种媒体格式的组织所开发和提供的。
封闭型播放器以超级解霸、Mplayer、Winamp、QuickTime Player为代表。
优点:较少受系统的影响,很少出现兼容性的问题;
缺点:不方便扩充对新媒体的支持;
基于DirectShow的播放器的数量众多,Windows Media Player、Media Player Classic、BSPlayer、ZoomPlayer都是这一类播放器。
优点:支持的格式丰富,扩充方便;
缺点:易受系统的影响,尤其是某些多媒体软件会替换掉系统中的部分解码文件,造成某些格式不能播放,或者播放不正常。
从目前的趋势看,基于DirectShow的播放器无疑占了主流,部分封闭型播放器也开始在一定程度上支持DirectShow播放。如果用封闭型播放器,发现不能播放的电影,一般没有太多的办法解决,除非开发者提供了新的播放插件(也有第三方开发的插件)。而基于DirectShow的播放器要方便一些,只需要安装相应的DirectShow过滤器就行了,但实际情况是复杂的,特定的媒体解码所需的DirectShow过滤器有多种,其中任何一个环节出了问题都会导致播放出现异常。
2、理解DirectShow播放原理
DirectShow属于DirectX技术的一部分,它规定了用什么样的过滤器来处理媒体数据,过滤器主要有源过滤器(Source filter)、转换过滤器(Transform filter)、表现过滤器(Renderer filter)三种。
(1)源过滤器用来从数据源(如摄像机、因特网、磁盘文件等)获取数据;
(2)转换过滤器用来获取、处理和传送媒体数据,它包括分离视频和音频的分离器(Splitter filter)、解压缩视频数据的视频解码器(Video Decoder filter)、解压音频数据的音频解码器(Audio Decoder filter);
(3)表现过滤器用来在硬件(如显示卡和声卡)上表现媒体数据,它包括用来显示图像的视频表现过滤器(Video renderer filter)、将音频数据送到声卡上去的音频表现过滤器(Audio renderer filter)。
对于其它媒体文件的处理流程,我们可以使用GraphEdit(下载地址:http://www.shooter.com.cn/?芽softid=graphedit&site=1)来查看。理解了DirectShow播放原理,意味着我们已经打通了任督二脉,内力大增。接下来就要利用这些知识去解决播放中碰到的实际问题了 |
|