如何在windows上編譯Chromium (CEF3) 並加入MP3支持(二)


時隔一年,再次編譯cef3,獨一無二的目的仍為加入mp3支持。新版本的編譯環境和注意事項都已經發生了變化,於是再記錄一下。

一、編譯版本

     cef版本號格式為X.YYYY.A.gHHHHHHH

  • X為主版本號,當前只有3
  • YYYY為chromium分支號
  • A為遞增的svn提交版本號
  • HHHHHHH為7位git提交hash

    此次編譯cef版本為3.2704.1434.gec3e9ed

 

二、編譯條件

  • 快速穩定的VPN,下載chromium源碼必需,推薦nydus
  • 60G磁盤空間
  • 64位操作系統,Win 7+ 
  • vs2015 update2或update3
  • Windows 10.0.10586 SDK (已包含在vs2015中,安裝注意選擇)
  • MFC庫(已包含在vs2015中,安裝注意選擇)

    其它各版本編譯條件查看官方文檔說明

 

三、准備工作

  • 設置系統區域為英語(美國)。(控制面板-區域-管理-更改系統區域設置-英語(美國)
  • 創建工作目錄,路徑不能包含空格及特殊字符。例如h:\ws
  • 下載編譯工具包,解壓至工作目錄。
  • 下載編譯腳本至工作目錄。
  • 在工作目錄下創建源碼目錄。例如h:\ws\source
  • 添加系統環境變量
    • CEF_ARCHIVE_FORMAT=tar.bz2
    • DEPOT_TOOLS_WIN_TOOLCHAIN=0
    • GYP_DEFINES=buildtype=Official
    • GYP_MSVS_VERSION=2015
    • Path添加h:\ws\depot_tools,為避免與已安裝的python或git沖突,建議寫在path靠前位置
完整目錄結構:
h:/
   ws/
       automate-git.py
       depot_tools/
       source/

 

四、開始

1. 以管理員身份運行cmd,安裝python、git、svn

h:
cd h:\ws\depot_tools
update_depot_tools.bat

 2. 運行編譯腳本。

cd h:\ws
#不傳入參數會顯示幫助
python automate-git.py --download-dir=h:\ws\source --depot-tools-dir=h:\ws\depot_tools --branch=2704 --checkout=ec3e9ed7fecc0d9f37a96951ba1bb26fd4f64dc7 --no-build --no-distrib

由於下載完源碼要先修改配置,所以設置為不編譯。下載大概持續4-5個小時。如何獲得checkout值請查看前一篇介紹。

3. 修改配置

修改h:\ws\source\chromium\src\cef\cef.gypi,variables節下添加如下即可支持mp3。

'proprietary_codecs': 1,
'ffmpeg_branding': 'Chrome',

同時可參考http://blog.csdn.net/chromium_webkit/article/details/8575629加入更多格式支持

從Chromium的源碼third_party\ffmpeg\chromium\config\Chrome\win\ia32\config.h可以得知Chrome采用的FFmpeg的配置選項,在原有的配置選項后面添加如下選項:

--enable-decoder='rv10,rv20,rv30,rv40,cook,h263,h263i,mpeg4,msmpeg4v1,msmpeg4v2,msmpeg4v3,amrnb,amrwb,ac3,flv' --enable-demuxer='rm,mpegvideo,avi,avisynth,h263,aac,amr,ac3,flv,mpegts,mpegtsraw' --enable-parser='mpegvideo,rv30,rv40,h263,mpeg4video,ac3'

4. 修改其它錯誤

#解決錯誤:無法識別的符號_ff_w64_guid_data
#修改chromium/third_party/ffmpeg / ffmpeg_generated.gypi
#在行'libavformat/vorbiscomment.c',后加入
'libavformat/w64.c',
#解決egl語法錯誤
#修改h:\ws\source\chromium\src\third_party\swiftshader\include\egl\eglext.h
#在62行后加入
typedef EGLAttribKHR EGLAttrib; 

5. 編譯

python automate-git.py --download-dir=h:\ws\source --depot-tools-dir=h:\ws\depot_tools --branch=2704 --checkout=ec3e9ed7fecc0d9f37a96951ba1bb26fd4f64dc7 --no-debug-build --force-build --no-update

可加入--build-log-file參數,將日志信息輸出到文件,方便查看完整信息。

但不能同時在cmd窗口觀察進度,而且生成文件較大,注意取舍。

#最終生成輸出路徑
H:\ws\source\chromium\src\out\Release
H:\ws\source\chromium\src\cef\binary_distrib

 

五、結果測試

1. 版本號

2. 與官方版本對比

 

六、參考資料

https://bitbucket.org/chromiumembedded/cef/wiki/MasterBuildQuickStart.md

https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding.md

https://bitbucket.org/chromiumembedded/cef/wiki/AutomatedBuildSetup.md

http://www.magpcss.org/ceforum/viewtopic.php?f=6&t=14473

https://chromium-review.googlesource.com/#/c/343398/4


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM