windows平台编译CEF支持H264(MP3、MP4)超详细

虚幻大学 xuhss 343℃ 0评论

? 优质资源分享 ?

学习路线指引(点击解锁) 知识定位 人群定位
? Python实战微信订餐小程序 ? 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
?Python量化交易实战? 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

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

CEF Branch:4664
CEF Commit:fe551e4
Chromium Version:96.0.4664.110

编译环境准备

1 安装或修改VS2019

VS版本和SDK版本可查看:BranchesAndBuilding

1)在“在工作负荷”勾选“使用C++的桌面开发

914ad39c1665cbbecf435621423d5e70 - windows平台编译CEF支持H264(MP3、MP4)超详细

2)在“单个组件”勾选“Windows 10 SDK (10.0.19014.0)”
e4195c038f361d6b315bc8bc67cf0736 - windows平台编译CEF支持H264(MP3、MP4)超详细

3)安装或修改完成后在“控制面板”/“程序”/“卸载程序”中找到刚才对应的SDK,“右键”/“更改”

16d4be57dd6238a487262fc8222a7717 - windows平台编译CEF支持H264(MP3、MP4)超详细

4)找到“Debgging Tools for Windows”,然后勾选

9a8377add5152065854f3027ee3af50d - windows平台编译CEF支持H264(MP3、MP4)超详细

2 网络代理工具和代理配置

1)一个稳定的代理, 比如: V2free

2)配置git 代理(v2rayN本地服务地址为http://127.0.0.1:10809)

::设置代理(执行一次即可)
git config --global http.proxy http://127.0.0.1:10809
git config --global https.proxy http://127.0.0.1:10809
::取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy

CEF 源码编译流程

1 创建工作目录

md C:\Code\cef\
md C:\Code\chromium\src\
md C:\Code\depot\_tools\

595a445dbeecd502ca918099345676cd - windows平台编译CEF支持H264(MP3、MP4)超详细

2 添加环境变量

:: 代理
setx HTTP\_PROXY "http://127.0.0.1:10809"
setx HTTPS\_PROXY "http://127.0.0.1:10809"

:: 禁止depot\_tools自动更新
setx DEPOT\_TOOLS\_UPDATE "0"

:: 使用本地安装的 Visual Studio 版本
setx DEPOT\_TOOLS\_WIN\_TOOLCHAIN "0"

:: GN 构建工具
setx CEF\_USE\_GN "1"

:: 使用 VS2019 创建项目
setx GN\_ARGUMENTS "--ide=vs2019 --sln=cef --filters=//cef/*"

:: 使用官方构建并添加ffmpeg音视频解码
setx 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 setx Path "C:\Code\depot\_tools\;%i%j"

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

0e45254d18ceb48a4c513d0f503a41a1 - windows平台编译CEF支持H264(MP3、MP4)超详细

3 下载源码

1)下载cef

cd C:\Code

:: clone源码并切换至4664分支
git clone https://bitbucket.org/chromiumembedded/cef.git -b 4664

2)下载chromium

cd C:\Code\chromium

:: clone指定tag(96.0.4664.110)的源码, (cef 4664分支 对应chromiun tag: 96.0.4664.110)
:: "--depth 1": 只下载当前版本不需要历史提交记录, 否则耗时严重且浪费储存空间或者意外中断
git clone https://chromium.googlesource.com/chromium/src.git -b 96.0.4664.110 --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 4664分支 对应depot\_tools commit id: e023d44820)
checkout e023d44820

注意: cef, chromium, depot_tools对应版本关系在"cef\CHROMIUM_BUILD_COMPATIBILITY.txt"

ed5448162269a351acacb9bd74571c1c - windows平台编译CEF支持H264(MP3、MP4)超详细

4 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

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

5 构建项目

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

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

2)构建项目

cd C:\Code\chromium\src\cef

:: 如果前面已经设置了这些环境变量则可以跳过这3条命令
set CEF\_USE\_GN=1
set GN\_ARGUMENTS=--ide=vs2019 --sln=cef --filters=//cef/*
set GN\_DEFINES=is\_official\_build=true proprietary\_codecs=true ffmpeg\_branding=Chrome

:: 构建项目
call cef\_create\_projects.bat

6 编译

cd C:\Code\chromium\src

ninja -C out/Release\_GN\_x86 cef

7 打包

cd C:\Code\chromium\src\cef\tools

make\_distrib.bat --ninja-build --client

在 C:\Code\chromium\src\cef\binary_distrib 目录下就可以看到打包过的文件了

8 其他

1)如果在构建或编译过程中遇到python gbk编码错误, 找到报错的代码添加 utf-8 编码即可, 比如:

      if (environment\_block\_name != ''):
 env\_block = \_FormatAsEnvironmentBlock(env)
 with open(environment\_block\_name, 'w', encoding='utf-8') as f:
 f.write(env\_block)

转载请注明:xuhss » windows平台编译CEF支持H264(MP3、MP4)超详细

喜欢 (0)

您必须 登录 才能发表评论!