播放器
播放是压片的第一步。现在的播放器琳琅满目,随便一个播放器都号称是全能解码的播放器。但其实所谓的全能解码都是ffmpeg开发者的功劳。我们看到的播放器几乎都是得益于ffmpeg的。
ffmpeg是一个开源的编解码器项目,主页在http://www.ffmpeg.org 。ffmpeg的ff代表fast_forward,经过开发者多年的努力,有丰富完善的以GPLv2或LGPL发布音频视频编解码库,可以工作于linux、Windows、WM等平台。ffmpeg和下面要提到的mplayer有千丝万缕的联系。
当然纯用ffmpeg来放片是没有意义的,尽管ffmpeg带有一个专门用来播放的组件ffplay。我们用的是使用ffmpeg的几个开源的播放器和解码器。Windows系统,我推荐用MPC-HC搭配ffdshow,或用mplayer,或用VLC。linux系统,推荐用mplayer和VLC。其中mplayer所带的编码程序mencoder功能强大,用法值得学习。
开源播放器
MPC-HC
MPC-HC的全称是MediaPlayer Classic - Home Cinema
主页: http://mpc-hc.sourceforge.net/
Night Build: http://www.xvidvideo.ru/media-player-classic-home-cinema-x86-x64/
MPC-HC是Gabest开发的基于DirectShow的MediaPlayer Classic的后续。当Gabest放弃开发MPC后,有一群人接手了这个项目继续开发,修正了不少Bug,也开发了新功能,最具代表性的就是DXVA滤镜和对渲染器的改进。
MPC-HC是一个基于DirectShow的播放器,可以方便的调用系统中已经注册的DirectShow滤镜(包括分离器、解码器和渲染器)。 详细配置说明见MPC-HC页面。
MPlayer
ffmpeg和MPlayer的渊源非常深,两者的开发者也多有重叠。MPlayer本来是linux上的播放器,各发行版的源里一般都有mplayer的包。mplayer移植到Windows上后也同样好用,这里推荐一个国人的编译版:mplayer-ww。为了使用mencoder,需要下载console(命令行)版。
此外还有其他编译版mulder-louder和sephyer编译的版本,各版所用补丁不尽相同。
mplayer的用法是
>mplayer video.mkv
会出现一个画面窗口,命令行里继续显示解码信息。
试着按上下左右,可以感受到mplayer的跳 转速度非常快,这正是mplayer的一大特点。命令行版的mplayer没有按钮,一切操作都需要用快捷键,默认的快捷键f是全屏,j是切换字幕,#是切换音轨。
mplayer和mencoder还有丰富的滤镜。
>mplayer input.mkv -vf scale=864:480
是把输出的画面缩放到864x480。
并不是说mplayer一定要在命令行里输入才能使用,把mplayer的快捷方式放在桌面上,把片子拖到mplayer的图标上也能直接播放。
我用mplayer的另一个方面是播放正在编码中的h264码流。用x264编码一般输出.264文件,是没有封装的H.264码流,因为MPC-HC没有相应的源滤镜,没有办法播放,但是mplayer找吃不误,而且可以读到码流中的fps信息(这个fps对于封装后的fps没有影响)。在编码开始后,用mplayer看一下输出的前十几帧,可以避免当压了几万帧几十万帧压完时再发现压错了的郁闷。
VLC
VLC是从法国高校开始的一个开源媒体播放器项目,其编解码器同样来自ffmpeg。
VLC的构架十分灵活,开发周期稳定。全平台制霸,在Windows、linux和MacOSX上都有已编译好的版本。
DirectShow和DirectShow滤镜及工具
DirectShow是Windows的媒体播放框架,大多数Windows上的播放器都是基于DirectShow构架的。AviSynth里的DirectShowSource便是使用系统的默认DirectShow滤镜打开片子的。
ffdshow-tryouts
主页: http://ffdshowtryouts.sorceforge.net/
nightly-build:http://xvidvideo.ru/
ffdshow-tryouts是原ffdshow的一脉相承后续版本,因此一般还叫做ffdshow。ffdshow是一个综合了视频解码器、音频解码器、vfw滤镜和DXVA解码器的全能解码器。有64位编译版,但由于64位asm还没跟上,目前ffdshow还没法编译出win上的64位版,64位版速度不一定比32位版快,因此一般还是选32位编译版。
得益于ffmpeg-mt,ffdshow的H.264解码器有多线程版,解码速度不逊于CoreAVC。测试表明,在H.264解码器当中,如果单线程使用,ffdshow的速度是最快的。ffdshow引入了MPC-HC的DXVA解码器,在配置合适时也能硬解H.264的片子了。
ffdshow除了解码全能,还带了强大的后处理(post processing)功能,有丰富的滤镜,可以在播放时处理,也可以用在avs里(将在下章介绍)。
Vsfitler
Vsfilter是Windows上的字幕渲染滤镜。有三个接口可以调用。
从DirectShow接口调用,此时称为DirectVobSub,在托盘区会显示一个绿色的小箭头。DirectVobSub从解码器接收视频,加载字幕后交给渲染器,完成字幕加载工作。
从AviSynth接口调用,此时的函数名是textsub和vobsub,在Avs里作为滤镜。
从crsi接口调用,普通程序接口。Aeigsub就是使用这种方式调用Vsfilter的。
Haali Media Splitter
Haali媒体分离器
可分离mkv、mpeg ts、mpeg es、mp4、avi等
带有GDSmuxer,可利用DirectShow封装mkv文件。
CoreAVC
H.264解码器
GraphStudio
DirectShow滤镜的Debug工具 -- GraphEdit和GraphStudio
GraphEdit是微软的DirectShow SDK里的工具,GraphStudio是开源的工具。两者的功能基本相同。用法详见GraphStudio的页面。
GraphStudio有32位版和64位版,分别可以调用32位和64位的DirectShow滤镜。
把片子拖到GraphStudio里,如果是可以打开的文件,会出线一串由箭头连起来的方框。一般有文件读取、分离器(二者有时是合体的)、视频解码器、音频解码器、视频渲染器和音频输出方框。GraphStudio调用的滤镜都是DirectShow中可用的优先级最高的滤镜,也就是默认设置。通过调整滤镜的优先级(可以在Insert Filter对话框里设置),可以改变系统的默认设置。
其他播放器
一些免费的和商业的和有特点的播放器和天朝常见的播放器
免费播放器
- ZoomPlayer
有特点播放器
开源,是MPC-HC的fork,字幕专长。可以自动从射手网下载合适的字幕。作者是沈晟。我们必须感谢辛苦制作字幕的人员,没有他们就没有字幕。
- ArcSoft TotalMedia Theater
BD播放器,可以播放蓝光原盘,完整呈现蓝光光盘的菜单
- CyberLink PowerDVD
同上
解码包
迪奥大人作品,DirectShow滤镜很全,更新及时,方便好用。
- sdxy大人作品
- 提供不同的DirectShow滤镜组合的解码包,从Start到Mega都用。但这个网站被墙了。
到论坛翻帖能找到新版
违反GPL协议的播放器
- KMPlayer
- PotPlayer
- QQplayer
- 暴风影音