自己動手編譯播放器MPC-HC的原始碼
好久沒有關注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
需要修改的內容:
1、subtitles
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視訊的截圖:
相關文章
- 自己動手編譯OpenJDK編譯JDK
- 自己動手編譯OpenSSL庫編譯
- 自己動手編譯NodeMCU韌體編譯
- Android NDK 提供的交叉工具鏈手動編譯原始碼Android編譯原始碼
- MPC-HC視訊播放器播放器
- Dubbo原始碼之動態編譯原始碼編譯
- 編譯打包自己的雲手機(redroid)映象編譯
- 編譯FFMPEG原始碼的指令碼編寫案例編譯原始碼指令碼
- ubuntu手動編譯lampUbuntu編譯LAMP
- 原始碼編譯Vim 8原始碼編譯
- MongoDB(0)- 原始碼編譯MongoDB原始碼編譯
- 編譯Android原始碼編譯Android原始碼
- 編譯hibernate原始碼編譯原始碼
- Docker編譯Azerothcore原始碼Docker編譯原始碼
- Spring原始碼編譯Spring原始碼編譯
- 原始碼編譯安裝的原理原始碼編譯
- 原始碼的下載與編譯原始碼編譯
- 自己動手實現springboot執行時執行java原始碼(執行時編譯、載入、註冊bean、呼叫)Spring BootJava原始碼編譯Bean
- cmake編譯指定自己編譯的庫路徑編譯
- 自己動手,在macOS High Sierra中編譯一個可debug的JDKMac編譯JDK
- WIN32 手動編譯Win32編譯
- 自己動手寫basic直譯器 一
- 走進Vue-cli原始碼,自己動手搭建前端腳手架工具Vue原始碼前端
- Android 原始碼中的編譯命令Android原始碼編譯
- WebRTC研究 (一) 編譯原始碼Web編譯原始碼
- 原始碼編譯 apache2.4原始碼編譯Apache
- Kubernetes原始碼編譯原始碼編譯
- Swift原始碼專案編譯Swift原始碼編譯
- 龍芯原始碼編譯MySQL原始碼編譯MySql
- Ceph原始碼編譯與打包原始碼編譯
- nvme driver 原始碼修改、編譯原始碼編譯
- 原始碼編譯安裝Redis原始碼編譯Redis
- LAMP原始碼編譯安裝LAMP原始碼編譯
- osg原始碼編譯步驟原始碼編譯
- Android原始碼編譯--整理Android原始碼編譯
- XCode 編譯 PAG 原始碼XCode編譯原始碼
- Android原始碼閱讀-編譯8.0原始碼Android原始碼編譯
- Vue3原始碼分析——編譯模組和編譯器Vue原始碼編譯