windows平台编译CEF支持H264(MP3、MP4)超详细
编译目标(如何确定目标定版本请查看:BranchesAndBuilding)
CEF Branch:4664
CEF Commit:fe551e4
Chromium Version:96.0.4664.110
编译环境准备
1 安装或修改VS2019
1)在“在工作负荷”勾选“使用C++的桌面开发”

2)在“单个组件”勾选“Windows 10 SDK (10.0.19014.0)”

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

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

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\

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"
执行以上命令即可在系统中创建环境变量 (记得不用的时候把这些环境变量删除了)

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"

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)
windows平台编译CEF支持H264(MP3、MP4)超详细的更多相关文章
- window 下编译cef 内核 加入mp3/mp4 支持
下载 depot_tools 解压,加入到环境变量 进入cmd(管理员)运行 gclient 获取 python和git,svn,设置python环境变量 创建新文件夹 mkdir chromium ...
- FFMPEG在windows平台编译的详细过程,包括环境安装
下面开始: 由于FFMpeg是基于Linux开发的开源项目,源代码和Windows下最常见的Visual Studio提供的C/C++编译器不兼容,因此它不能使用MSVC++编译.要想使用FFMpeg ...
- openssl windows平台编译库
首先感谢http://blog.csdn.net/YAOJINGKAO/article/details/53041165?locationNum=10&fps=1和https://www.cn ...
- Windows平台编译openssl-0.9.8k库(32位、64位)
近期工作中使用到了openssl的win64位资料,所以进行前期调研,汇总结果例如以下: [注意]openssl代码所在文件夹中不要带中文,否则"nmake -f ms\ntdll.mak ...
- Windows平台编译memcached 1.2.6
两个项目libevent.memcached,Platform Toolset使用Visual Studio 2013 - Windows XP (v120_xp).在编译memcached时会提示& ...
- Windows平台编译SQLite 3
由于需要sqlite的x64版本只能自己编译,下载sqlite源代码.sqlite.def.Visual Studio 2013新建一个Visual C++ Empty Project,Configu ...
- windows平台编译bgfx
1.下载bgfx工程并解压到任意目录,链接:https://github.com/bkaradzic/bgfx/ 2.下载bx工程并解压到bgfx工程所在父目录,链接:https://github.c ...
- openfl关于windows平台编译报错解决办法
报错信息: 无法打开程序数据库“e:\newproj\mainclient\bin\windows\cpp\obj\obj\msvc-debug-ncxp\vc.pdb”:如果要将多个 CL.EXE ...
- Windows平台编译libevent
使用VisualStudio来编译,我的电脑上安装的是VS2013.1.在开始菜单项里面(或者在VS安装路径中)打开Developer Command Prompt for VS2013.exe2.在 ...
随机推荐
- Spring 源码(4)在Spring配置文件中自定义标签如何实现?
Spring 配置文件自定义标签的前置条件 在上一篇文章https://www.cnblogs.com/redwinter/p/16165274.html Spring BeanFactory的创建过 ...
- 【Java分享客栈】SpringBoot线程池参数搜一堆资料还是不会配,我花一天测试换你此生明白。
一.前言 首先说一句,如果比较忙顺路点进来的,可以先收藏,有时间或用到了再看也行: 我相信很多人会有一个困惑,这个困惑和我之前一样,就是线程池这个玩意儿,感觉很高大上,用起来很fashion, ...
- c/c++递归打印文件夹
调用linux的系统函数,实现tree的功能,递归打印文件夹 使用到得函数: DIR *opendir(const char *name); // 打开文件夹 struct dirent *readd ...
- 你不知道的 Linux 使用技巧
开源Linux 一个执着于技术的公众号 1.快速跳转命令 - z 要是每次都要进入一个目录很深的文件夹下,像下面这样: # cd /root/py/auto/fabric 每次都要输入好多个目录名是不 ...
- css自定义省略实例1
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ansible的介绍与安装
ansible是在远程主机上批量执行命令或者脚本的一个工具 epel源:一个第三方的yum源(阿里巴巴开源镜像站:https://opsx.alibaba.com/mirror?lang=zh-CN) ...
- 新作!分布式系统韧性架构压舱石OpenChaos
摘要:本文首先以现今分布式系统的复杂性和稳定性的需求引出混沌工程概念,并阐述了OpenChaos在传统混沌工程上的优化与创新. 背景 随着Serverless,微服务(含服务网格)与越来越多的容器化架 ...
- JUC的数据库连接池小练习
JUC练习数据库连接池实现 通过一个连接数组来充当连接池 一个原子的标记数组 通过cas来保持多线程下的安全,用synchronized来进行暂停和唤醒 @Slf4j public class MyC ...
- 印尼医疗龙头企业Halodoc的数据平台转型之数据平台V2.0
1. 摘要 数据平台已经彻底改变了公司存储.分析和使用数据的方式--但为了更有效地使用它们,它们需要可靠.高性能和透明.数据在制定业务决策和评估产品或 Halodoc 功能的性能方面发挥着重要作用.作 ...
- 【WPF】WPF开发用户控件、用户控件属性依赖DependencyProperty实现双向绑定、以及自定义实现Command双向绑定功能演示
前言: Wpf开发过程中,最经常使用的功能之一,就是用户控件(UserControl)了.用户控件可以用于开发用户自己的控件进行使用,甚至可以用于打造一套属于自己的UI框架.依赖属性(Dependen ...