目前使用Cef框架的軟件很多,除了我們的程序,還有網易云音樂,StartUML,通信達等都基于Cef框架。閱讀Cef/Chrome底層代碼有助于了解他的設計架構和細節,可以幫助我們解決一些Cef框架層面的故障,同時可以學習他的編程思想和框架結構提高編程能力。本文主要介紹Cef3和Chromium,涉及Cef3/Chromium編譯,代碼目錄結構和具體功能實現細節,會根據需要不斷完善。需要指出的是Cef3/Chrome版本之間代碼框架,文件位置變動很多,如無特殊說明,本文以2623分支為基準。.
一 Cef3/Chromium的編譯和音視頻支持的修改
先說一點,國內從官網下載源碼網絡很不穩定,這里以別人下載好的cef2623版本來編譯
網盤地址: https://pan.baidu.com/s/1jHY4hls
編譯先決條件:win64系統,安裝python2.7 Virtual Studio2013 硬盤空間大于54G以上
下載完成后解壓 這里解壓到D盤下的2623目錄
打開CMD窗口 執行以下操作以設定環境變量
Set DEPOT_TOOLS_WIN_TOOLCHAIN=0
Set CEF_USE_GN=0
Set GYP_MSVS_VERSION=2013
Set GYP_GENERATORS=ninja,msvs-ninja
然后執行
python automate-git.py --download-dir=d:\cef3\source --branch=2623 --no-update --build-log-file --verbose-build --force-distrib --force-build
大致等待5個小時即可編譯完成
注意,指定—no-update 不更新代碼;如果不需要編譯debug版本,則需要指定
—no-debug-build
輸出目錄在src\cef\binary_distrib下
Cefclient.exe為demo程序,輸入www.html5test.com可查看支持音視頻的情況
當前編譯好的2623對音視頻的支持如下:
音視頻的支持有2處需要修改分別是
1是在source/chromium/src/cef/cef.gypi文件 在variables節點下增加
'proprietary_codecs': 1,
'ffmpeg_branding': 'Chrome',
2是修改二者
source\chromium\src\third_party\ffmpeg\chromium\config\Chrome\win\ia32\config.h
source\chromium\src\third_party\ffmpeg\chromium\config\Chrome\win\x64\config.h
在宏FFMPEG_CONFIGURATION 中增加
–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
可以根據需要修改要支持的音視頻情況