windows平台编译CEF支持MP3、MP4

CEF默认不支持mp3、mp4,需要的话得自己编译,记录在window下编译过程中遇到的各种坑

CEF基础版

如果不需要mp3、mp4的支持,可以直接下载构建好的版本,下载链接戳这里
新版本是cef和chromium在一个压缩包里,老版本是分开的。

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

准备工作

google的项目,都要配置好代理,想直接下是不行的。找个路径放相关的文件,比如E:\cef

时区设置

设置系统区域为英语(美国)。(控制面板-区域-管理-更改系统区域设置-英语(美国)),设置完需要重启。防止编译一些字符集的报错。

代理设置

不知道是啥的话后面也不用搞了,不过就算设置了也还是慢,最好还是云服务器编译。

V2ray代理设置

  1. 路由设置->勾选启用高级功能
  2. 右下角小图标选择全局

git clone 代理配置

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

//设置代理,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

//取消代理(上面端口设置错了的话)
git config --global --unset http.proxy && git config --global --unset https.proxy

windows设置CMD代理

netsh
netsh>winhttp
netsh winhttp>
netsh winhttp>set proxy 127.0.0.1:10809      //设置代理
netsh winhttp>show proxy                     //查看代理
netsh winhttp>reset proxy                    //重置代理,下载完了不想要代理才用

设置Boto代理

[Boto]
proxy = 127.0.0.1
proxy_port = 10809

创建.boto文件,在命令行设置环境变量,set NO_AUTH_BOTO_CONFIG=E:\cef\.boto

构建脚本

构建脚本会执行下载和编译,通过指定参数达到想要的编译效果,下载链接。下载好后放到E:\cef目录下。这是个python脚本,python也需要装下,编译旧版本需要安装python2,新版本需要安装python3,在执行脚本的时候环境不对会给出提示。

参数说明

automate-git.py 的参数可以手动执行 python automate-git.py --help 来查看,下面列举大部分情况都会用的。

  • --branch 表示你要下载和编译哪个版本的代码,Chromium和CEF的版本对应关系可以看这个链接
  • --no-build 表示只下载代码而不编译
  • --no-distrib 不执行打包项目,这里只为下载代码,我们还要修改支持多媒体的参数,所以不进行打包
  • --force-clean 如果你曾经执行过这个脚本,可能会出错,则加上这个参数,它执行清理残留文件(你也可以手动在 chromium 源码目录执行 git clean -xdf 来清理目录中的多余内容)。
  • --download-dir 下载的源码目录
  • --checkout 如果你不想编译某个分支的最新版代码,可以指定具体的提交,只用设置CEF的提交就行,Chromium会跟着切换
  • --force-clean-deps 编译老版本的时候会碰到下载第三方依赖库失败,碰到了可以加下这个
  • --no-depot-tools-update 如果工具包之前下载过了可以加上,就不升级工具包了,第一次下载不加
  • --no-update 编译时用,不更新直接编译
  • --no-debug-build 编译时用,不编译debug只要release
  • --build-log-file 生成编译的日志文件,出错可以看下
  • --x64-build 构建64位的版本

准备好后目录如下:


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

CEF源码下载

下载前需要设置下环境变量,也可以直接在命令行输入就行。

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内部有一些bat和python脚本,需要把它的路径设置到环境变量的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的路径设置到环境变量的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源码编译

编译需要设置的参数最重要的就是添加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安装在默认目录,但任然需要下面设置,可能是由于VS2015和VS2017同时安装,路径根据自己的安装目录和版本确定
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位调用VS的脚本有问题,环境变量还是去找的32位路径,下面改手动设置路径
@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下,还把压缩包也生成了。
生成的文件里没有libcef_dll_wrapper.lib,需要的话拿cmake生成一个vs工程再编译就行,什么配置都不用改,就略过了。

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

编后感

下载和编译环节一定要把参数都搞好,下载搞了2天,编译也搞了2天,心累...一开始直接编译了一个32位的,后面才反应过来要编译一个64位的,编译的时候CPU直接100%,其他活都不用干了。
等搞完发现指定分支提交和项目中使用的版本还不一样,又要重新checkout再编译Orz
最后发现还是搞个windows云服务器省事,环境直接选美国,代理也不用设置,我本地代理也只能3M/S,服务器下载30M/S,服务器编译还不影响本地工作( ̄▽ ̄)"

参考链接:

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容