CEF3 91.0.4472的源代码编译以及支持MP3MP4的播放
以下是以cef_91.0.4472为例进行的流程说明
- 下载代码前的准备
- Git安装
- Python安装,至少2.7版本,最新的版本好像自带python,可以先不装,后面如果脚本运行不成功在装,因为我自己以前就已经装好了,就没有验证过
- Visual Studio安装,根据编译的cef版本,确定安装vs的哪个版本,可以查询https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding.md 确定具体的vs版本,例如编译chromium version 91,就需要安装vs2019 16.8.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 用于清理chromium和cef的一些检出信息,如果下载失败,重新执行下载时,需要带上这个参数来清理一些信息,否则会失败。
其他参数可以通过命令行输入命令automate-git.py --help 查看所有的。
代码下载过程很长,在国内需要稳定的vpn,如果网络很好,大概需要6到7个小时,网络不好就可能在中间下载时各种断掉,需要重新下载。
下载过程中,会先下载depot_tools,然后下载cef,最后下载chromium目录,整体大小在55G到60G左右,下载代码前需要准备足够的空间,后续编译也需要大概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的播放相关推荐
- 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 ...
- Google Chrome 91.0.4472.101 正式版
本文来自:N软网,Google Chrome v91.0.4472.101 正式版下载 谷歌浏览器Google Chrome正式版迎来v91第二个维护版本发布,详细版本号为v91.0.4472.101 ...
- Google Chrome 91.0.4472.124 官方正式版
谷歌浏览器Google Chrome 91正式版例行更新,最新详细版本为v91.0.4472.124.Google Chrome浏览器,自主研发Chromium内核,全球最受欢迎的PC端网页浏览器,追 ...
- Open3D 0.13版本 源代码编译
GitHub - isl-org/open3d-cmake-find-package: Find pre-installed Open3D package in CMake 这里面有官方怎 ...
- chrome91.0.4472.77(正式版本)(64位) windows和mac跨域解决
登录系统输入验证码,明明输入正确却显示"验证码输入错误"提示. 在当前登录系统点击F12 控制台中有个感叹号,鼠标移动上面显示(手打的可能有些单词错误,因为复制不上): This ...
- Ubuntu 18.04从源代码编译安装GPU支持的Tensorflow 1.8.0
当我第一次使用Linux时,我想要做的第一件事就是安装GPU版本Tensorflow.我找到了一个很好的指南.但即使考虑到这一点,我也花了超过40个小时的安装.这篇文章我想节省你的时间,分享自己的经验 ...
- 从源代码编译安装 Mono 2.4 和 MonoDevelop 2.0
虽然现在几乎所有的Linux发行版都预置了Mono软件,但是大多数都比较旧,因此要体验最新版本的Mono,还是要用源代码自己进行编译安装的. 先说几句废话,Mono 2.4 提供了.Net 3.5 的 ...
- Android10.0 系统解析(02)——搭建Android源代码编译调试环境
1.前言 Android的编译环境作为深入学习Android的基础,不可或缺,能够完整下载Android源代码并编译成功,对深入学习Android是非常关键和重要的一步.Android环境搭建比较繁琐 ...
- 在windows上用源代码编译安装MPlayer
转自:http://www.cnblogs.com/smallmuda/archive/2009/03/31/1425976.html 在windows上用源代码编译安装MPlayer 作者:心情花园 ...
最新文章
- 模板匹配—归一化相关系数匹配算法
- runat=server 所代表及隐含的意义
- Groovy的本地安装和Eclipse插件的配置
- 《MySQL——加锁规则(待补全,有些没看懂)》
- Linux ${}表达式详解
- 奇怪的ISA服务停止故障
- 树莓派使用 USB 摄像头做网络监控
- spss因子分析结果解读_SPSS进行问卷量表信度检验(详细操作过程及结果分析)——【杏花开生物医药统计】...
- mdoublem matlab,imhist以及matlab图像矩阵的数据类型
- ios识别人脸自动拍照_iOS 相机流人脸识别(一)-人脸框检测(基于iOS原生)
- signature=cc8d613f503e9b933c233da06afc0fc6,襄阳市公安局交通警察支队违法车辆信息公告20210118...
- 《华为工作法》5 态度有时候比能力更加重要
- 无法访问共享计算机文件,电脑无法访问共享文件怎么解决?
- 第一课:电极的安放位置和测量
- Linux 操作系统的体系结构
- 教你微信怎么加更多好友的绝佳方法
- OpenCV基于dlib进行人脸关键点检测(摄像头)
- 【Oracle】6.JDBC
- QGIS-创建QGIS项目
- Replacing LIBOR
热门文章
- SwinNet: Swin Transformer drives edge-aware RGB-D and RGB-T salient object detection
- 如何识别手写文字python_如何快速使用Python神经网络识别手写字符?(文末福利)...
- html让视频跟图片之间无缝,图片、样式、音视频之间的无缝拼接,教你一个万能方法!...
- Python如何给矩阵加行或列?
- python 去掉双引号_你要偷偷的学Python,然后惊呆所有人(第一天) - python阿喵
- 20221204Deep Learning to Discover Coordinates for Dynamics: Autoencoders Physics Informed ML
- 用于光流估计的无监督深度学习DSTFlow
- 两万字长文总结,梳理 Java 入门进阶哪些事
- 快速把照片做成MV,用什么软件好?抖音火爆效果制作
- The road to learning English-Writing