播放器

出自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
  • 暴風影音