在Windows上編譯Chromium(CEF3)並加入mp3/mp4的支持


  公司有一個基於谷歌瀏覽器內核加上公司自己做的瀏覽器皮膚,然后開發出具有公司特性的瀏覽器。隨着谷歌瀏覽器不斷的更新升級,為了能提升公司瀏覽器的用戶體驗,所以也需要定期的對公司的瀏覽器進行相應的更新與升級。去年(2015年)6月份自己基於公司現有的項目對公司瀏覽器升級為cef3.2171版本(對應於Chromium ver=39)。近一年來,谷歌瀏覽器升級很快,目前已經升級到53/54版本了,所以公司要求升級公司瀏覽器。

  現在cef3的版本與之前差異很大,經過一番研究和實踐終於升級到cef3.2785(Chromium ver=53. 備注:為什么不直接升級到54版本,原因是目前市場上最新的版本還是53版本,而54版本才剛分離出來沒幾天,基於穩定性考慮所以選擇了53版本)。然而在測試過程中發現自己編譯出來的瀏覽器不支持播放mp3(音頻)和mp4(視頻)格式的文件,這可是個大問題,因為業務需求就是需要能正常播放mp3和mp4。為了解決編譯出來的瀏覽器能支持mp3和mp4,網上查找了很多資料,了解到為什么cef3不直接支持mp3/mp4等格式文件的原因。為方便自己以后升級公司瀏覽器及其他有需要的朋友,所以打算寫該文檔。(目的是為了解決讓cef3支持mp3和mp4文件)

一、什么是CEF

  CEF包括CEF1和CEF3兩個版本,CEF1已停止更新,目前大家所用的都是CEF3。CEF即Chromium Embeded Framework,由谷歌的開源瀏覽器項目Chromium擴展而來,可方便地嵌入其它程序中以得到瀏覽器功能。

二、編譯版本

  cef版本號格式為X.YYYY.A.gHHHHHHH。X為主版本號,當前只有3;YYYY為chromium分支號;A為遞增的svn提交版本號;HHHHHHH為7位git提交hash。我本人本次編譯版本為:cef3.2785.1482.g16e49fb(Chromium version 53.0.2785.116)

三、編譯條件

  (1)快速穩定的VPN,下載chromium源碼必需;
  (2)60G磁盤空間;
  (3)64位操作系統,Win 7+ ;
  (4)vs2015 update2或update3;
  (5)Windows 10.0.10586 SDK (已包含在vs2015中,安裝注意選擇);
  (6)MFC庫(已包含在vs2015中,安裝注意選擇)。
  其它各版本編譯條件查看:

  備注:這個編譯條件如果達不到,可能會跟我一樣遇到以下問題。

  (1)使用免費版本的vpn,結果下載過程中常出現中斷導致下載不了。所以為這事,我特意購買了vpn,即使用購買的vpn我也下載了大概8個小時(下載的文件有近16G)。
  (2)vs版本不對,導致編譯過程老是出錯,所以卸載了自己原來的vs2013 update5,改安裝vs2015 update3
  (3)磁盤空間不足,我騰出一個40G的磁盤來下載和編譯該版本,結果出現磁盤空間不足導致編譯失敗,最后對電腦重新分區才騰出空間來編譯該版本

四、准備工作

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

完整目錄結構:
e:/
   cef/
       automate-git.py
       depot_tools/
       source/

五、下載與編譯

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

e:
cd e:\cef\depot_tools
update_depot_tools.bat

  (2)下載chromium源碼

cd e:\cef
python automate-git.py --download-dir=e:\cef\source --depot-tools-dir=e:\cef\depot_tools --branch=2785 --checkout=16e49fb8af7aacfd8e32b232eaf1e736bb3269f1 --no-debug-build --force-build --no-update

// 以下為參數說明
--download-dir 源碼下載目錄
--depot-tools-dir 工具包目錄
--branch 源碼分支(默認trunk主分支
--checkout 指定patch版本(默認最近提交 如何確定checkout下文介紹
--no-build 下載完不自動開始編譯(我們需要修改編譯配置
--no-update 確定源碼下載完畢僅重新編譯時使用
--force-build 強制編譯(發現在有成功編譯的時候再編譯不會執行,可以加上這個
--no-debug-build 只編譯release版本
--no-release-build 只編譯debug版本

  由於下載完源碼要先修改配置,所以設置為不編譯。這個下載過程需要一定時間,我用購買的vpn也下載了大概8小時,下載了近16G的文件。

  如何確認以上checkout的值,可以參考文檔中的“五、如何確定--checkout值”

  (3)修改編譯配置文件

    1> 打開e:\cef\source\chromium\src\cef\cef.gypi,variables節下添加如下即可支持mp3/mp4。

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

    2> 同時可參考《讓Chrome的HTML5 video/audio tag支持更多種音視頻格式》加入更多格式支持。

從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'

    3> 修改其他錯誤

#解決錯誤:無法識別的符號_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; 

  (4)編譯

python automate-git.py --download-dir=f:\cef\source --depot-tools-dir=f:\cef\depot_tools --branch=2785 --checkout=16e49fb8af7aacfd8e32b232eaf1e736bb3269f1 --no-debug-build --force-build --no-update
#最終生成輸出路徑
e:\cef\source\chromium\src\out\Release
e:\cef\source\chromium\src\cef\binary_distrib

六、測試結果

  (1)版本號

  

  (2) 對mp3/mp4的支持

  

七、封裝后的瀏覽器

      

八、參考文檔 

  (1)https://cefbuilds.com/
  (2)該鏈接竟然被和諧了
  (3)https://github.com/cefsharp/cef-binary/wiki/Building-Cef-from-source
  (4)http://www.cnblogs.com/honker/p/5616433.html
  (5)https://bitbucket.org/chromiumembedded/cef

  

  另外,自己搞了個寫論文的工具,可以爬取論文,添加索引及支持論文查重等功能。
  網站地址:https://www.essaytool.com

 


免責聲明!

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



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