以下是以cef_91.0.4472为例进行的流程说明

  • 下载代码前的准备

    1. Git安装
    2. Python安装,至少2.7版本,最新的版本好像自带python,可以先不装,后面如果脚本运行不成功在装,因为我自己以前就已经装好了,就没有验证过
    3. Visual Studio安装,根据编译的cef版本,确定安装vs的哪个版本,可以查询https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding.md 确定具体的vs版本,例如编译chromium version 91,就需要安装vs2019 16.8.4+
    4. WINDOW SDK 和vs一样,需要注意版本号。chromium version 91需要安装10.0.19041

注意如果安装了多个版本的vs,多个WIN SDK,需要注意环境的配置,如果不确定和不知道怎么配,最好保持系统环境单一。

  • 代码下载

  • automate-git.py脚本的下载

下载地址: https://bitbucket.org/chromiumembedded/cef/raw/master/tools/automate/automate-git.py

将下载好的automate-git.py放到准备好的文件目录里中,例如I:\cef\source

代码下载

建立脚本download.bat。脚本内容为:

python automate-git.py --download-dir=I:\cef\source --branch=4472 --no-build

参数说明:

--no-distrib --force-clean

--download-dir   代码保存路径,I:\cef\source

--branch=4472 需要下载的代码分支,分支代号可以查询官方网站https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding.md

--no-build  不编译代码

--no-distrib   不进行打包发布

--force-clean 用于清理chromiumcef的一些检出信息,如果下载失败,重新执行下载时,需要带上这个参数来清理一些信息,否则会失败。

其他参数可以通过命令行输入命令automate-git.py --help 查看所有的。

代码下载过程很长,在国内需要稳定的vpn,如果网络很好,大概需要67个小时,网络不好就可能在中间下载时各种断掉,需要重新下载。

下载过程中,会先下载depot_tools,然后下载cef,最后下载chromium目录,整体大小在55G60G左右,下载代码前需要准备足够的空间,后续编译也需要大概10G的内存。

  • 编译代码

  • 编译前准备

将depot_tools目录配置到环境变量PATH中,这一步我没有验证,可能最新版本不需要设置,在脚本中自动配置了。这是我在初期查询其他人编译3.2623时进行的尝试。

执行编译脚本

新建脚本build.bat。脚本内容为(除了ffmpeg_branding参数外,其他内容都是从官网文档中获取):

set GN_DEFINES=is_official_build=true use_thin_lto=false proprietary_codecs=true ffmpeg_branding=Chrome

set GYP_MSVS_VERSION=2019

set CEF_ARCHIVE_FORMAT=tar.bz2

automate-git.py --download-dir=I:\cef\source --branch=4472 --minimal-distrib --client-distrib --no-update --force-build

proprietary_codecs=true ffmpeg_branding=Chrome 为打开支持视频播放参数。网上有其他编译方式,可以查下,目前通过设置这两个参数满足了基本的mp3、mp4等常见的视频播放支持。

编译时间根据编译选项不同,长短不一,如果只编译release,大概需要6小时左右,debug时间更长。

在编译91版本中,如果环境配置正确,中间编译过程没有任何需要改动的地方。

编译完成后,如果加上了打包选项--client-distrib,会生成cef_binary_91.1.22+gc67b5dd+chromium-91.0.4472.124_windows32.tar.bz2 压缩包。

libcef_dll_wrapper.lib的编译

通过CMakeLists.txt生成vs工程。解压上面生成的cef_binary_91.1.22+gc67b5dd+chromium-91.0.4472.124_windows32.tar.bz2文件。

根据编译环境选择不同的生成参数,如果想生成vs2019工程,可以在命令行中这样执行 cmake -G "Visual Studio 16" -A Win32 ,其他选项可以查看CMakeLists.txt中的描述,MacOS, Linux等环境都有对应的说明。

在此之前,要确定libcef_dll_wrapper.lib是否需要debug版本,以及引用该文件的工程项目对_HAS_ITERATOR_DEBUGGING=0设置是否敏感,libcef_dll_wrapper.lib默认会添加_HAS_ITERATOR_DEBUGGING=0预编译,引用工程对该设置敏感,将会在编译阶段出现编译错误:

'_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2'

或者'

_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0'

解决这个问题,可以将camake\ cef_variables.cmake文件中的这几行注释掉:

list(APPEND CEF_COMPILER_DEFINES_DEBUG

_HAS_ITERATOR_DEBUGGING=0   # Disable iterator debugging

)

注释后重新生成工程编译即可。

在编译自定义的webcore.exe 和clien.exe(或者dll)时,需要在编译完成后,将compatibility.manifest和cefclient.exe.manifest 打包进自定义的webcore.exe 和clien.exe中,可以在生成事件->后期生成事件->命令行中添加命令行:

setlocal

mt.exe -nologo -manifest "%CURRENT_SOURCE_DIR%//%TargetName%.%EX%.manifest" "%CURRENT_SOURCE_DIR%//compatibility.manifest" -outputresource:" %CURRENT_OUTPUT_DIR%//% TargetName %.%EX%";#1

if %errorlevel% neq 0 goto :cmEnd

:cmEnd

endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone

:cmErrorLevel

exit /b %1

:cmDone

if %errorlevel% neq 0 goto :VCEnd

TargetName : 生成的文件名称,例如webcore

EX: 生成的文件格式后缀,例如dll,exe

CURRENT_SOURCE_DIR:当前工程源码目录,也是放compatibility.manifest和webcore.exe.manifest目录

CURRENT_OUTPUT_DIR:生成目录

compatibility.manifest和cefclient.exe.manifest文件可以在cefclient\resources\win目录中找到,cefclient.exe.manifest需要改成你自己的目标文件名称,例如webcore.exe,就需要将cefclient.exe.manifest改成webcore.exe.manifest。如果不进行manifest压缩这一步,会导致cef版本号对不上,cef初始化失败。导致cef初始化失败的原因,还可能是旧版本的cache文件没有清理,会出现在debug调试状态下。

已经编译好的91.0.4472版本,不过只编译了x86的debug和release。支持MP3,MP4,H264等视频播放

cef_binary_91.1.22+gc67b5dd+chromium-91.0.4472.124_windows32.tar.bz2

链接: https://pan.baidu.com/s/16YkKVuHh-xEpHhUFtitC-w

提取码: wdpc

release pdb文件:

链接: https://pan.baidu.com/s/11s4BEdMxM8HoOjJ_UtTZ8Q

提取码: qr27

debug pdb文件:

链接: https://pan.baidu.com/s/1RjVWPNd3dkmPJVJCqCs2Eg

提取码: 29wu

源码较大,放到了阿里云网盘上,但不支持大文件分享,需要私聊。

参考的资料:

https://redrain.blog.csdn.net/article/details/54193842?utm_medium=distribute.pc_relevant_download.none-task-blog-baidujs-2.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-baidujs-2.nonecase

https://blog.csdn.net/diycom/article/details/80190345

https://blog.csdn.net/wrzfeijianshen/article/details/89928853

https://blog.csdn.net/zhangpeng_linux/article/details/85858746

CEF3 91.0.4472的源代码编译以及支持MP3MP4的播放相关推荐

  1. This version of ChromeDriver only supports Chrome version 88 Current browser version is 91.0.4472.12

    简单来说就是你本机安装的chrome和你下载的chrome driver不匹配,下的是81版本. 有2个解决方法,一是升级你的chrome浏览器,二的的话就是下载你本机安装的chrome浏览器对应的c ...

  2. Google Chrome 91.0.4472.101 正式版

    本文来自:N软网,Google Chrome v91.0.4472.101 正式版下载 谷歌浏览器Google Chrome正式版迎来v91第二个维护版本发布,详细版本号为v91.0.4472.101 ...

  3. Google Chrome 91.0.4472.124 官方正式版

    谷歌浏览器Google Chrome 91正式版例行更新,最新详细版本为v91.0.4472.124.Google Chrome浏览器,自主研发Chromium内核,全球最受欢迎的PC端网页浏览器,追 ...

  4. Open3D 0.13版本 源代码编译

    ​​​​​​GitHub - isl-org/open3d-cmake-find-package: Find pre-installed Open3D package in CMake 这里面有官方怎 ...

  5. chrome91.0.4472.77(正式版本)(64位) windows和mac跨域解决

    登录系统输入验证码,明明输入正确却显示"验证码输入错误"提示. 在当前登录系统点击F12 控制台中有个感叹号,鼠标移动上面显示(手打的可能有些单词错误,因为复制不上): This ...

  6. Ubuntu 18.04从源代码编译安装GPU支持的Tensorflow 1.8.0

    当我第一次使用Linux时,我想要做的第一件事就是安装GPU版本Tensorflow.我找到了一个很好的指南.但即使考虑到这一点,我也花了超过40个小时的安装.这篇文章我想节省你的时间,分享自己的经验 ...

  7. 从源代码编译安装 Mono 2.4 和 MonoDevelop 2.0

    虽然现在几乎所有的Linux发行版都预置了Mono软件,但是大多数都比较旧,因此要体验最新版本的Mono,还是要用源代码自己进行编译安装的. 先说几句废话,Mono 2.4 提供了.Net 3.5 的 ...

  8. Android10.0 系统解析(02)——搭建Android源代码编译调试环境

    1.前言 Android的编译环境作为深入学习Android的基础,不可或缺,能够完整下载Android源代码并编译成功,对深入学习Android是非常关键和重要的一步.Android环境搭建比较繁琐 ...

  9. 在windows上用源代码编译安装MPlayer

    转自:http://www.cnblogs.com/smallmuda/archive/2009/03/31/1425976.html 在windows上用源代码编译安装MPlayer 作者:心情花园 ...

最新文章

  1. 模板匹配—归一化相关系数匹配算法
  2. runat=server 所代表及隐含的意义
  3. Groovy的本地安装和Eclipse插件的配置
  4. 《MySQL——加锁规则(待补全,有些没看懂)》
  5. Linux ${}表达式详解
  6. 奇怪的ISA服务停止故障
  7. 树莓派使用 USB 摄像头做网络监控
  8. spss因子分析结果解读_SPSS进行问卷量表信度检验(详细操作过程及结果分析)——【杏花开生物医药统计】...
  9. mdoublem matlab,imhist以及matlab图像矩阵的数据类型
  10. ios识别人脸自动拍照_iOS 相机流人脸识别(一)-人脸框检测(基于iOS原生)
  11. signature=cc8d613f503e9b933c233da06afc0fc6,襄阳市公安局交通警察支队违法车辆信息公告20210118...
  12. 《华为工作法》5 态度有时候比能力更加重要
  13. 无法访问共享计算机文件,电脑无法访问共享文件怎么解决?
  14. 第一课:电极的安放位置和测量
  15. Linux 操作系统的体系结构
  16. 教你微信怎么加更多好友的绝佳方法
  17. OpenCV基于dlib进行人脸关键点检测(摄像头)
  18. 【Oracle】6.JDBC
  19. QGIS-创建QGIS项目
  20. Replacing LIBOR

热门文章

  1. SwinNet: Swin Transformer drives edge-aware RGB-D and RGB-T salient object detection
  2. 如何识别手写文字python_如何快速使用Python神经网络识别手写字符?(文末福利)...
  3. html让视频跟图片之间无缝,图片、样式、音视频之间的无缝拼接,教你一个万能方法!...
  4. Python如何给矩阵加行或列?
  5. python 去掉双引号_你要偷偷的学Python,然后惊呆所有人(第一天) - python阿喵
  6. 20221204Deep Learning to Discover Coordinates for Dynamics: Autoencoders Physics Informed ML
  7. 用于光流估计的无监督深度学习DSTFlow
  8. 两万字长文总结,梳理 Java 入门进阶哪些事
  9. 快速把照片做成MV,用什么软件好?抖音火爆效果制作
  10. The road to learning English-Writing