播放器

来自NMM Doc
跳到导航 跳到搜索

播放是压片的第一步。现在的播放器琳琅满目,随便一个播放器都号称是全能解码的播放器。但其实所谓的全能解码都是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

主页:http://www.mplayerhq.hu

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

主页:http://videolan.org

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媒体分离器

主页: http://haali.su/mkv/

可分离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
  • 暴风影音