firemail

标题: CEF3 91.0.4472的源代码编译以及支持MP3MP4的播放 [打印本页]

作者: Qter    时间: 2022-11-25 13:56
标题: CEF3 91.0.4472的源代码编译以及支持MP3MP4的播放
以下是以cef_91.0.4472为例进行的流程说明

下载代码前的准备
Git安装
Python安装,至少2.7版本,最新的版本好像自带python,可以先不装,后面如果脚本运行不成功在装,因为我自己以前就已经装好了,就没有验证过
Visual Studio安装,根据编译的cef版本,确定安装vs的哪个版本,可以查询https://bitbucket.org/chromiumem ... nchesAndBuilding.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/chromiumem ... ate/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/chromiumem ... nchesAndBuilding.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/ar ... -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
————————————————
版权声明:本文为CSDN博主「whhx2021」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/whhx2021/article/details/119027875






欢迎光临 firemail (http://firemail.wang:8088/) Powered by Discuz! X3