windows平臺編譯CEF支持MP3、MP4

CEF默認(rèn)不支持mp3朱转、mp4夺刑,需要的話得自己編譯存淫,記錄在window下編譯過程中遇到的各種坑

CEF基礎(chǔ)版

如果不需要mp3、mp4的支持荚虚,可以直接下載構(gòu)建好的版本,下載鏈接戳這里
新版本是cef和chromium在一個壓縮包里,老版本是分開的恢恼。

CEF-Build-On-Windows-2021-07-24-22-31-09

準(zhǔn)備工作

google的項目漏隐,都要配置好代理,想直接下是不行的脖隶。找個路徑放相關(guān)的文件,比如E:\cef

時區(qū)設(shè)置

設(shè)置系統(tǒng)區(qū)域為英語(美國)。(控制面板-區(qū)域-管理-更改系統(tǒng)區(qū)域設(shè)置-英語(美國))铐姚,設(shè)置完需要重啟拙毫。防止編譯一些字符集的報錯。

代理設(shè)置

不知道是啥的話后面也不用搞了蛀醉,不過就算設(shè)置了也還是慢逝段,最好還是云服務(wù)器編譯。

V2ray代理設(shè)置

  1. 路由設(shè)置->勾選啟用高級功能
  2. 右下角小圖標(biāo)選擇全局

git clone 代理配置

//加大buffer
git config --global http.postBuffer 524288000

//設(shè)置代理,ssr通常是1080浙值,v2ray是10809,客戶端底部有顯示
git config --global http.proxy http://127.0.0.1:10809 && git config --global https.proxy https://127.0.0.1:10809

//取消代理(上面端口設(shè)置錯了的話)
git config --global --unset http.proxy && git config --global --unset https.proxy

windows設(shè)置CMD代理

netsh
netsh>winhttp
netsh winhttp>
netsh winhttp>set proxy 127.0.0.1:10809      //設(shè)置代理
netsh winhttp>show proxy                     //查看代理
netsh winhttp>reset proxy                    //重置代理筐付,下載完了不想要代理才用

設(shè)置Boto代理

[Boto]
proxy = 127.0.0.1
proxy_port = 10809

創(chuàng)建.boto文件卵惦,在命令行設(shè)置環(huán)境變量,set NO_AUTH_BOTO_CONFIG=E:\cef\.boto

構(gòu)建腳本

構(gòu)建腳本會執(zhí)行下載和編譯瓦戚,通過指定參數(shù)達(dá)到想要的編譯效果沮尿,下載鏈接。下載好后放到E:\cef目錄下。這是個python腳本畜疾,python也需要裝下赴邻,編譯舊版本需要安裝python2,新版本需要安裝python3啡捶,在執(zhí)行腳本的時候環(huán)境不對會給出提示姥敛。

參數(shù)說明

automate-git.py 的參數(shù)可以手動執(zhí)行 python automate-git.py --help 來查看,下面列舉大部分情況都會用的瞎暑。

  • --branch 表示你要下載和編譯哪個版本的代碼彤敛,Chromium和CEF的版本對應(yīng)關(guān)系可以看這個鏈接
  • --no-build 表示只下載代碼而不編譯
  • --no-distrib 不執(zhí)行打包項目,這里只為下載代碼了赌,我們還要修改支持多媒體的參數(shù)墨榄,所以不進(jìn)行打包
  • --force-clean 如果你曾經(jīng)執(zhí)行過這個腳本,可能會出錯勿她,則加上這個參數(shù)渠概,它執(zhí)行清理殘留文件(你也可以手動在 chromium 源碼目錄執(zhí)行 git clean -xdf 來清理目錄中的多余內(nèi)容)。
  • --download-dir 下載的源碼目錄
  • --checkout 如果你不想編譯某個分支的最新版代碼嫂拴,可以指定具體的提交播揪,只用設(shè)置CEF的提交就行,Chromium會跟著切換
  • --force-clean-deps 編譯老版本的時候會碰到下載第三方依賴庫失敗筒狠,碰到了可以加下這個
  • --no-depot-tools-update 如果工具包之前下載過了可以加上猪狈,就不升級工具包了,第一次下載不加
  • --no-update 編譯時用辩恼,不更新直接編譯
  • --no-debug-build 編譯時用雇庙,不編譯debug只要release
  • --build-log-file 生成編譯的日志文件,出錯可以看下
  • --x64-build 構(gòu)建64位的版本

準(zhǔn)備好后目錄如下:


CEF-Build-On-Windows-2021-07-24-22-53-01

CEF源碼下載

下載前需要設(shè)置下環(huán)境變量灶伊,也可以直接在命令行輸入就行疆前。

set CEF_USE_GN=1
set GN_DEFINES=is_official_build=true
set GYP_DEFINES=buildtype=Official
set GYP_MSVS_VERSION=2017
set CEF_ARCHIVE_FORMAT=tar.bz2

@REM 第一次源碼下載不加--no-depot-tools-update,會先包工具包下下來
python automate-git.py --download-dir=e:\cef\source --branch=3626 --checkout=90eb8cc --no-build --no-distrib --force-clean --force-clean-deps --no-depot-tools-update 

有一個注意點聘萨,depot-tools內(nèi)部有一些bat和python腳本竹椒,需要把它的路徑設(shè)置到環(huán)境變量的PATH里,不然下載會報錯

下載錯誤處理

python缺庫

CEF-Build-On-Windows-2021-07-24-23-19-10

看到腳本自己去下了python庫的.whl米辐,但是安裝沒成功胸完,我就手動裝了下:

pip install numpy=1.12.1
pip install opencv_python=3.2.0.7
pip install psutil=5.2.2

No module named win32file

Traceback (most recent call last):
File "../../build/toolchain/win/tool_wrapper.py", line 29, in <module>
import win32file # pylint: disable=import-error
ImportError: No module named win32file

修改方法:在錯誤日志里指定的目錄安裝pywin32,參考鏈接

cd E:\cef\source\depot_tools\bootstrap-2@3_8_10_chromium_20_bin\python\bin
pip -m install pywin32

提示subprocesss返回值非0

CEF-Build-On-Windows-2021-07-24-23-23-12

把depot-tools的路徑設(shè)置到環(huán)境變量的PATH里:

set PATH=E:\cef\source\depot_tools;%PATH%;

AttributeError: 'module' object has no attribute 'CheckCallAndFilterAndHeader'

老版本編譯才有的問題翘贮,需要修改代碼赊窥,E:\cef\source\cef\tools\gclient_util.py參考鏈接

命令行出問題的話狸页,腳本就給個提示返回值非0锨能,沒把錯誤打印出來就很坑...把顯示的命令行在終端直接敲一下就能看到具體錯誤了。
踩完這一路的坑,就可以開始編譯了...

CEF源碼編譯

編譯需要設(shè)置的參數(shù)最重要的就是添加MP3址遇、MP4支持 使用此條指令叔收,不加白折騰了。還有就是指定VS的路徑傲隶,編譯報錯了提示少什么路徑可以再加。

set CEF_USE_GN=1
set GN_DEFINES=is_official_build=true
set GYP_DEFINES=buildtype=Official
set GYP_MSVS_VERSION=2017
set CEF_ARCHIVE_FORMAT=tar.bz2
@REM 添加MP3窃页、MP4支持 使用此條指令
set GN_DEFINES=is_official_build=true proprietary_codecs=true ffmpeg_branding=Chrome
 
set GYP_GENERATORS=ninja,msvs-ninja
set GN_ARGUMENTS=--ide=vs2017 --sln=cef --filters=//cef/*
@REM VS2017安裝在默認(rèn)目錄跺株,但任然需要下面設(shè)置,可能是由于VS2015和VS2017同時安裝脖卖,路徑根據(jù)自己的安裝目錄和版本確定
set WIN_CUSTOM_TOOLCHAIN=1
set CEF_VCVARS=none
set GYP_MSVS_OVERRIDE_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community
set SDK_ROOT=C:\Program Files (x86)\Windows Kits\10

@REM 編譯64位調(diào)用VS的腳本有問題乒省,環(huán)境變量還是去找的32位路徑,下面改手動設(shè)置路徑
@REM call "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Auxiliary/Build/vcvarsall.bat" x64

@REM set INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\shared;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\atlmfc\include;%INCLUDE%
@REM set PATH=C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x86;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Redist\MSVC\14.16.27012\x64\Microsoft.VC141.CRT;%PATH%
@REM set LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\um\x86;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\ucrt\x86;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\x86;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\atlmfc\lib\x86;%LIB%
@REM set VS_CRT_ROOT=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\crt

set INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\shared;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\atlmfc\include;%INCLUDE%
set LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\ucrt\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\atlmfc\lib\x64;%LIB%
set VS_CRT_ROOT=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\crt
set PATH=C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Redist\MSVC\14.16.27012\x64\Microsoft.VC141.CRT;%PATH%

python automate-git.py --download-dir=e:\cef\source --branch=3626 --checkout=90eb8cc --no-update --no-debug-build --build-log-file --verbose-build --force-distrib --force-build --x64-build

輸出文件

在目錄E:\cef\source\chromium\src\cef\binary_distrib下畦木,還把壓縮包也生成了袖扛。
生成的文件里沒有l(wèi)ibcef_dll_wrapper.lib,需要的話拿cmake生成一個vs工程再編譯就行十籍,什么配置都不用改蛆封,就略過了。

CEF-Build-On-Windows-2021-07-25-00-22-37

編后感

下載和編譯環(huán)節(jié)一定要把參數(shù)都搞好勾栗,下載搞了2天惨篱,編譯也搞了2天,心累...一開始直接編譯了一個32位的围俘,后面才反應(yīng)過來要編譯一個64位的砸讳,編譯的時候CPU直接100%,其他活都不用干了界牡。
等搞完發(fā)現(xiàn)指定分支提交和項目中使用的版本還不一樣簿寂,又要重新checkout再編譯Orz
最后發(fā)現(xiàn)還是搞個windows云服務(wù)器省事,環(huán)境直接選美國宿亡,代理也不用設(shè)置常遂,我本地代理也只能3M/S,服務(wù)器下載30M/S挽荠,服務(wù)器編譯還不影響本地工作( ̄▽ ̄)"

參考鏈接:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市坤按,隨后出現(xiàn)的幾起案子毯欣,更是在濱河造成了極大的恐慌,老刑警劉巖臭脓,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酗钞,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)砚作,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門窘奏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人葫录,你說我怎么就攤上這事着裹。” “怎么了米同?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵骇扇,是天一觀的道長。 經(jīng)常有香客問我面粮,道長少孝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任熬苍,我火速辦了婚禮稍走,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘柴底。我一直安慰自己婿脸,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布柄驻。 她就那樣靜靜地躺著盖淡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪凿歼。 梳的紋絲不亂的頭發(fā)上褪迟,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機(jī)與錄音答憔,去河邊找鬼味赃。 笑死,一個胖子當(dāng)著我的面吹牛虐拓,可吹牛的內(nèi)容都是我干的心俗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蓉驹,長吁一口氣:“原來是場噩夢啊……” “哼城榛!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起态兴,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤狠持,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后瞻润,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喘垂,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡甜刻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了正勒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片得院。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖章贞,靈堂內(nèi)的尸體忽然破棺而出祥绞,到底是詐尸還是另有隱情,我是刑警寧澤鸭限,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布蜕径,位于F島的核電站,受9級特大地震影響里覆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜缆瓣,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一喧枷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧弓坞,春花似錦隧甚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至族吻,卻和暖如春帽借,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背超歌。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工砍艾, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人巍举。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓脆荷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親懊悯。 傳聞我的和親對象是個殘疾皇子蜓谋,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容