播放器
播放是壓片的第一步。現在的播放器琳琅滿目,隨便一個播放器都號稱是全能解碼的播放器。但其實所謂的全能解碼都是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
- 暴風影音