自己動手編譯播放器MPC-HC的原始碼

iihero發表於2009-05-19

好久沒有關注MPC(Media Player Classic)的原始碼了。幾年前,暴風影音不帶廣告和捆綁外掛時,曾經用過,感覺不錯。可是現在這個影音綁了一堆無用的東西,總是不怎麼幹淨。於是乾脆自己下了原始碼,試著編譯一下。把它放到了我的下載裡頭了。

http://iihero.download.csdn.net/ 裡頭應該能找到。

 

總共下了三份原始碼:

1. https://guliverkli.svn.sourceforge.net/svnroot/guliverkli

這個是最早的MPC原始碼了,作者gabest於 2006.04停止更新

編譯順序如下:

<!--[if gte mso 9]><![endif]--><!--[if gte mso 9]><![endif]--><!--[if gte mso 10]>

1. deccs

2. dsutil

3. ui

4. subpic

5. subtitles

6. filters (for mpc only build thoseconfigurations which output a lib, the rest outputs stand-alone filters)

7. apps/mplayerc

 

需要修改的內容:

1subtitles

guliverkli/src/subtitles/CCDecoder.cpp

' ','!','"','#','$','%','&','/'','(',')','?','+',',','-','.','/',//lsp

將 '? 全域性替換成 '?' 。
原始碼也要作若干改動。

俺使用的是2003版的DirectxSDKa9. 它的baseclass工程使用的是VC6程式碼格式,需要改動幾個檔案。

另外,

<!--[if gte mso 9]><![endif]--><!--[if gte mso 9]><![endif]--><!--[if gte mso 10]>

(a) winnt.h

d:/Program Files/Microsoft Visual Studio8/VC/PlatformSDK/include/winnt.h

在該檔案頭部新增:

#define POINTER_64 __ptr64 // add bypeter lee

 

(b) vmr9.h

D:/DXSDK/Include/vmr9.h

      MixerPref9_RenderTargetRGB      = 0x1000,

 

      MixerPref9_RenderTargetYUV      = 0x00002000, //lspadd

 

 該份原始碼使用VS2005編譯。基本還算順利。

 

2. http://sourceforge.net/projects/guliverkli2/

   這份程式碼是第1份的維護版本,編譯起來相對方便。整個就一個大工程。先把baseclasses編譯好,再編譯餘下的。

 

   可是1和2編譯出來的mpc,功能還是不全。連個flv檔案都播放不了。於是我又嘗試編譯3。要準備的東西就多了。

 

3. https://mpc-hc.svn.sourceforge.net/svnroot/mpc-hc/trunk

   我準備的有:

   1. VS2008標準版  

   2. 重新下載了SDK for vista

       http://www.microsoft.com/downloads/details.aspx?FamilyID=4377f86d-c913-4b5c-b87e-ef72e5b4e065

       安裝完以後,發覺並不完全可用。

   3. DirectX9c (2007版)

       http://www.microsoft.com/downloads/details.aspx?FamilyID=529f03be-1339-48c4-bd5a-8506e5acf571

   弄完之後,header路徑和lib路徑也按要求設定完畢,編譯就是死活過不去。

   同樣,按照上邊的改改winnt.h。

   最後,只差一點了,就是SDK for vista中缺少MDAC相關標頭檔案,建議把VS2008自帶的6.0a的sdk標頭檔案中的mdac部分拷一部分過來。

   另外,VS2008中缺少ATL_server相關標頭檔案。可以從:

   http://atlserver.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=3754

   下一份。放到單獨的目錄裡邊,再設定好相應的header路徑。

 

   於是乎,build完畢。kao, sourceforge上或者原始碼裡頭的readme寫得可是不夠仔細。讓人一頓摸索。建議學習或者摸索MPC相關原始碼的朋友把directx 從2003a到2009March的所有版本打包,platform_SDK從XP_sp2到SDK2008也都打包,放到一起,這樣可以很方便的組合在一起。

 

   搞了半天,我就是想弄個flash視訊播放的東東。下邊是flv視訊的截圖:


 


 

 


 

相關文章