windows平台编译CEF支持H264

windows平台编译CEF支持H264

编译目标(如何确定目标定版本请查看:BranchesAndBuilding

CEF Branch:6442
CEF Commit:1701b8e
Chromium Version:125.0.6422.142

编译环境准备

1 安装或修改VS2022

VS版本和SDK版本可查看:BranchesAndBuilding
1)在“在工作负荷”勾选“使用C++的桌面开发”
在这里插入图片描述
2)在“单个组件”勾选“Windows 10 SDK (10.0.19014.0)”
在这里插入图片描述
3)安装或修改完成后在“控制面板”/“程序”/“卸载程序”中找到刚才对应的SDK,“右键”/“更改”
在这里插入图片描述
4)找到“Debgging Tools for Windows”,然后勾选
在这里插入图片描述
5)将系统语言设置成英文,方法如下:
(1)打开Windows 设置,选择时间和语言
(2)选择区域选项,将国家或地区设置成美国
(3)选择语言选项,点击添加语言,选择英语(美国),下一步勾选设置为我的Windows显示语言
(4)完成语言包的切换后会要求注销账户,根据提示注销
(5)重新登录账户
(6)回到刚才的语言选项,点击管理语言设置
(7)点击更改系统区域设置,选择英语(美国),勾选 Bate 版:使用 Unicode UTF-8 提供全球语言支持 选项
(8)点击确定,按照提示重启系统,重启完成后会将语言设置成英文

2 添加环境变量

:: 代理

set HTTP_PROXY "http://127.0.0.1:10809"
set HTTPS_PROXY "http://127.0.0.1:10809"

:: 禁止depot_tools自动更新

set DEPOT_TOOLS_UPDATE "0"

:: 使用本地安装的 Visual Studio 版本

set DEPOT_TOOLS_WIN_TOOLCHAIN "0"

:: GN 构建工具

set CEF_USE_GN "1"

:: 使用 VS2022 创建项目

set GN_ARGUMENTS "--ide=vs2022 --sln=cef --filters=//cef/*"

:: 使用官方构建并添加ffmpeg音视频解码

set GN_DEFINES "is_official_build=true proprietary_codecs=true ffmpeg_branding=Chrome"

:: 将depot_tools路径("C:\Code\depot_tools)添加到用户环境变量Path

for /f "tokens=3,*" %i in ('reg query HKCU\Environment /v Path') do set Path "C:\Code\depot_tools\;%i%j"

执行以上命令即可在系统中创建环境变量 (记得不用的时候把这些环境变量删除了)

注:最好是不用执行的方式,而是去环境变量设置中直接添加
在这里插入图片描述
PS:有时候需要重启电脑配置的环境变量才会生效

3 配置代理 (重要步骤)**

(1)为CMD设置HTTP/HTTPS代理
打开一个具有管理员权限的CMD

C:>netsh
netsh>winhttp
netsh winhttp>set proxy 127.0.0.1:10809
netsh winhttp>bye
C:>set http_proxy=http://127.0.0.1:10809 
C:>set https_proxy=http://127.0.0.1:10809

注:此步骤若关闭当前cmd,重新打开新的cmd需要重新配置代理

(2)为git设置http/https代理

C:>git config –-global http.proxy %http_proxy%
C:>git config –-global https.proxy %https_proxy%

(3)设置NO_AUTH_BOTO_CONFIG
<1>随便找个地方创建一个文本文件,比如 C:\boto.cfg
文本内容:

[Boto]
proxy=127.0.0.1
proxy_port=10809

<2>设置环境变量

C:>set NO_AUTH_BOTO_CONFIG=C:\boto.cfg

备注:
代码同步成功后,记得恢复系统设置
(1)恢复netsh winhttp设置为直连

C:>netsh
netsh>winhttp
netsh winhttp>reset proxy

(2)清除git代理

git config --global --unset http.proxy
git config --global --unset https.proxy

4 更新depot_tools

C:>gclient

5 如果之前从未使用过git,那么需要进行一下全球的git配置

C:>git config –global user.name "yourname" //#yourname改为你希望的用户名
C:>git config –global user.email "youremailaddress@gmail.com" //#输入你自己的邮箱

CEF 源码编译流程

1 创建工作目录

C:\Code\cef\
C:\Code\chromium\src\
C:\Code\depot_tools\

在这里插入图片描述

2 下载源码

1)下载cef

cd C:\Code

:: clone源码并切换至6422分支

git clone https://bitbucket.org/chromiumembedded/cef.git -b 6422

2)下载chromium

cd C:\Code\chromium

:: clone指定tag(125.0.6422.142)的源码, (cef 6422分支 对应chromiun tag: 125.0.6422.142)
:: “–depth 1”: 只下载当前版本不需要历史提交记录, 否则耗时严重且浪费储存空间或者意外中断

git clone https://chromium.googlesource.com/chromium/src.git -b 125.0.6422.142 --depth 1

3)下载depot_tools

cd C:\Code

:: clone depot_tools工具

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
cd C:\Code\depot_tools

:: 临时允许更新

set DEPOT_TOOLS_UPDATE=1

:: 执行update_depot_tools.bat下载内部工具

update_depot_tools.bat

:: 禁止更新

set DEPOT_TOOLS_UPDATE=0

:: checkout, (cef 6422分支 对应depot_tools commit id: 3e4ab13934)

git checkout 3e4ab13934

注意: cef与chromium和depot_tools对应版本关系在 “cef\CHROMIUM_BUILD_COMPATIBILITY.txt”
在这里插入图片描述

3 gclient 同步chromium依赖项目

1)创建.gclient文件

cd C:\Code\chromium

:: 通过命令创建.gclient文件

gclient config  https://chromium.googlesource.com/chromium/src.git --unmanaged

2)执行gclient sync

cd C:\Code\chromium
gclient sync --nohooks --no-history

此命令执行过程中可能会中途暂停或失败,耐心等待或重复执行此命令直到成功为止
3)执行gclient runhooks

cd C:\Code\chromium

:: 如果前面已经设置了此环境变量, 可以不用执行

set DEPOT_TOOLS_WIN_TOOLCHAIN=0
gclient runhooks

此命令执行过程中可能会中途暂停或失败,耐心等待或重复执行此命令直到成功为止

4 修改ffmpeg配置文件

C:\Code\chromium\src\third_party\ffmpeg\chromium\config\Chromium\win-msvc\x64\config.h
C:\Code\chromium\src\third_party\ffmpeg\chromium\config\Chromium\win\x64\config_components.h

这两个地方都将CONFIG_SIPR_PARSER 宏开关启用,改为1

5 构建项目

1)复制 C:\Code\cef 到 C:\Code\chromium\src

xcopy "C:\Code\cef" "C:\Code\chromium\src\cef\" /e

3)构建项目

cd C:\Code\chromium\src\cef

:: 如果前面已经设置了这些环境变量则可以跳过这3条命令

set CEF_USE_GN=1set GN_ARGUMENTS=--ide=vs2022 --sln=cef --filters=//cef/*
set GN_DEFINES=is_official_build=true proprietary_codecs=true ffmpeg_branding=Chrome

:: 构建项目

call cef_create_projects.bat

6 编译CEF

cd C:\Code\chromium\src
ninja -C out/Release_GN_x86 cef

注:编译所需时间大概要10小时,电脑配置高的话所花时间会短一些(66146个obj)

7 打包

cd C:\Code\chromium\src\cef\tools
make_distrib.bat --ninja-build --client

在 C:\Code\chromium\src\cef\binary_distrib 目录下就可以看到打包过的文件了
在这里插入图片描述

8 其他

1)构建项目call cef_create_projects.bat遇到版本的问题,把src的cef删除,再拷贝外面的cef进去即可

2)再执行call cef_create_projects.bat遇到
C:\code\chromium\src\third_party\boringssl\src不存在的问题

说明执行gclient sync --nohooks --no-history时有报错,只完成97%,可以使用gclient status命令查看报错信息,会提示下载C:\code\chromium\src\third_party\boringssl\src时仓储损坏,找到该目录,删掉目录下的.git文件夹,再执行gclient sync --reset 来清理和重新同步,然后再执行如下命令
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
gclient runhooks
解决完上面问题后再重新执行call cef_create_projects.bat构建项目即可

3)如果在构建或编译过程中遇到python gbk编码错误, 比如:
在这里插入图片描述
只要不是报错,只是警告,可以不用管,继续编译即可

注:必须在一个cmd中执行以上操作,如果配置好的代理的cmd窗口关闭之后,打开新的cmd窗口,必须要重新配置一遍代理执行下载等操作才会生效。编译过程中,如果电脑配置比较低,CPU和内存可能会爆满,如下图所示:
在这里插入图片描述

该文档是通过网上相关文章,通过实践后总结出来的,参考文章:
https://www.cnblogs.com/zgliubo/p/16423247.html

cef125 x64支持H264资源下载:https://download.youkuaiyun.com/download/lishan777/89491333
cef125 x86支持H264资源下载:https://download.youkuaiyun.com/download/lishan777/89614800
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值