在Windows上编译 CEF3 且加入mp3/mp4的支持

2023-11-09

现在因为工作需要,为了得到支持mp3、mp4的cef32和64位版本,需要编译cef3,本次编译版本是3239(6.0.3239.132)。


一、编译条件
1.可用于稳定的下载网络
2.Win7或者更新的系统,必须64位,至少8GB的RAM,我采用win10 64位,16GRAM
3.比较新的VS,最近免费的社区版(编译不同版本要求不一样,具体看Cef官网帮助,我用的是VS2017),需要安装“C++桌面组件” 和 “MFC和ATL支持”,最好安装在默认路径,VS2017还需要特殊配置
4.Win10 SDK(官方10.0.15063,VS2017中有)
5.至少100G剩余空间(官方要求),NTFS文件系统,部分文件超过4G,部分资料显示最少60G,编译结束后发现远超60G

二、准备工作
1.设置系统区域为英语(美国)。(控制面板-区域-管理-更改系统区域设置-英语(美国)),设置完需要重启
2.创建工作目录,路径不能包含空格及特殊字符。例如e:\cef
3.下载编译工具包,解压至工作目录。例如e:\cef\depot_tools
4.下载编译脚本至工作目录。例如e:\cef
5.在工作目录下创建源码目录。例如e:\cef\source
6.添加系统环境变量

  set CEF_USE_GN=1
        set GN_DEFINES=is_official_build=true
        set GYP_DEFINES=buildtype=Official
        set GYP_MSVS_VERSION=2017
        set CEF_ARCHIVE_FORMAT=tar.bz2

Path添加e:\cef\depot_tools,为避免与已安装的python或git冲突,写在path靠前位置。
 若环境变量设置后任有问题,在cmd使用set设置,例如:set DEPOT_TOOLS_WIN_TOOLCHAIN=0

    完整目录结构:
    e:/ 
        cef/
            automate-git.py
            depot_tools/
            source/

三、网络环境

请查看我的Github查看该部分

四、检出代码

1.切换到工作目录e:\cef
2.使用命令下载源码

python automate-git.py --download-dir=e:\cef\source --branch=3239 --no-build --no-distrib --force-clean

其中–branch=3239是指定要下载的Cef版本;
–no-build --no-distrib是只下载代码而不编译;
–force-clean这个参数用于清理Chromium和Cef的一些检出信息,如果没有一次性下载成功而再次执行下载命令时,需要带上这个参数来清理一些信息,否则检出会失败(第一次下载时直接带上这个参数也可以)。
下载和编译只需要这个一个脚本就可以,脚本会自动下载depot_tools 、Chromium、Cef等源码。如果下载过程中出现错误,就再次执行这个命令直到下载完成。
网络调通以后不会有太多问题,下载时间和网络速度有关,我用了5个小时多些全部下载完成。

五、编译代码

1.添加MP3、MP4支持

source\chromium\src\third_party\ffmpeg\chromium\scripts\build_ffmpeg.py

      configure_flags['Chrome'].extend([  
          '--enable-decoder=aac,h264,mp3',  
          '--enable-demuxer=aac,mp3,mov',  
          '--enable-parser=aac,h264,mpegaudio',  
      ]) 

改为

     configure_flags['Chrome'].extend([  
          '--enable-decoder=aac,h264,mp3,mpeg4,amrnb,amrwb,flv',  
          '--enable-demuxer=aac,mp3,mov,avi,amr,flv',  
          '--enable-parser=aac,h264,mpegaudio,mpeg4video,h263',  
      ])  

分别打开e:\cef\source\chromium\src\third_party\ffmpeg\chromium\config\Chrome\win\ia32\config.h
e:\cef\source\chromium\src\third_party\ffmpeg\chromium\config\Chrome\win\x64\config.h,在原有配置宏FFMPEG_CONFIGURATION里增加以下:

    –enable-decoder=’rv10,rv20,rv30,rv40,cook,h263,h263i,mpeg4,msmpeg4v1,msmpeg4v2,msmpeg4v3,amrnb,amrwb,ac3,flv’ –enable-demuxer=’rm,mpegvideo,avi,avisynth,h263,aac,amr,ac3,flv,mpegts,mpegtsraw’ –enable-parser=’mpegvideo,rv30,rv40,h263,mpeg4video,ac3’

上面是通过查资料修改的,修改后编译能通过,没有报错,但是没有MP3、MP4支持。下面指令设置后再次编译便有了MP3、MP4支持,所以上面的这些有没有用不敢确定
下面的指令,很重要!!!
set GN_DEFINES=is_official_build=true proprietary_codecs=true ffmpeg_branding=Chrome

2.windows 构建指令设置

//为保险再设置一次
set CEF_USE_GN=1
set GN_DEFINES=is_official_build=true	
//set GN_DEFINES=is_official_build=true proprietary_codecs=true ffmpeg_branding=Chrome 添加MP3、MP4支持 使用此条指令
set GYP_DEFINES=buildtype=Official    
//set GYP_DEFINES=proprietary_codecs=1 ffmpeg_branding=Chrome 此条指令可能是以前版本用来添加MP3、MP4支持
set GYP_MSVS_VERSION=2017
set CEF_ARCHIVE_FORMAT=tar.bz2

set GYP_GENERATORS=ninja,msvs-ninja
set GN_ARGUMENTS=--ide=vs2017 --sln=cef --filters=//cef/*
//VS2017安装在默认目录,但任然需要下面设置,可能是由于VS2015和VS2017同时安装,路径根据自己的安装目录和版本确定
set WIN_CUSTOM_TOOLCHAIN=1
set CEF_VCVARS=none
set GYP_MSVS_OVERRIDE_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community
set SDK_ROOT=C:\Program Files (x86)\Windows Kits\10
set INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\shared;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128\include;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128\atlmfc\include;%INCLUDE%
set PATH=C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x86;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128\bin\HostX64\x86;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128\bin\HostX64\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Redist\MSVC\14.13.26020\x64\Microsoft.VC141.CRT;%PATH%
set LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.15063.0\um\x86;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.15063.0\ucrt\x86;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128\lib\x86;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128\atlmfc\lib\x86;%LIB%
set VS_CRT_ROOT=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128\crt\src\vcruntim

此处参考资料
3.Bug修改
可以跳过,直接编译,等bug出现再查找相应解决方案。
编译过程中如果出现bug导致编译过程结束,一方面看cmd的输出,可能提供解决方案,还可以查看src\build-3239-release.log文件,搜索关键字FAILED来查找发生错误的文件
以下是我出现的问题:
错误

FAILED: obj/cef/chrome_elf_set/content_switches.obj
FAILED: obj/cef/chrome_elf_set/crash_keys.obj

解决方案
在cef/BUILD.gn文件中,查找 “chrome_elf_set”,在其子节点deps下添加"//media:media_features" 。
参考资料
4.编译代码
打开cmd切换到工作目录,然后输入命令来编译

python automate-git.py --download-dir=e:\cef\source --branch=3239 --no-update --no-debug-build --build-log-file --verbose-build --force-distrib --force-build

其中–no-update是让脚本不再更新代码,因为已经下载完毕了;
–no-debug-build是只编译release版本,这样编译速度会快很多,–no-release-build可以只编译debug版本;
–force-distrib --force-build用于强制编译cef代码;
–build-log-file --verbose-build用于输出编译日志到e:\cef\source目录,名字为build-3239-release.log,编译发生错误,可以打开这个日志文件并通过搜索关键字FAILED来查找发生错误的文件;
如果需要64位版本,则添加**–x64-build**参数且设置下列环境变量

set PATH=C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128\bin\HostX64\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Redist\MSVC\14.13.26020\x64\Microsoft.VC141.CRT;%PATH%
set LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.15063.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.15063.0\ucrt\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128\lib\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128\atlmfc\lib\x64;%LIB%
set INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\shared;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128\include;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128\atlmfc\include;%INCLUDE%

编译第一次大概有6、7个小时,第二次以后2、3个小时

六.编译完成

  • 输出目录为source\chromium\src\out\Release_GN_x86 和 source\chromium\src\cef\binary_distrib,Release_GN_x86下有cefclient.exe可以测试,binary_distrib下有cef_binary_3.3239.1723.g071d1c1_windows32.tar.bz2

  • http://html5test.com可以测试结果
    http://html5test.com

  • chrome://version查看版本

chrome://version

部分参考资料:
https://bitbucket.org/chromiumembedded/cef/wiki/MasterBuildQuickStart
https://bitbucket.org/chromiumembedded/cef/wiki/AutomatedBuildSetup.md#markdown-header-windows-configuration
https://github.com/cefsharp/cef-binary/wiki/Building-Cef-from-source
http://blog.csdn.net/spark_fountain/article/details/73867813?locationNum=9&fps=1
http://www.cnblogs.com/hezhixiong/p/5935143.html
http://blog.csdn.net/zhuhongshu/article/details/54193842
https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md
http://blog.csdn.net/cromma/article/details/51141573
https://mfweb.top/820.html

欢迎关注我的公众号,持续分析优质技术文章
欢迎关注我的公众号

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Windows上编译 CEF3 且加入mp3/mp4的支持 的相关文章

随机推荐

  • Mybatis PageHelper(MyBatis 分页插件 )的使用

    概述 如果你也在用 MyBatis 建议尝试该分页插件 这一定是最方便使用的分页插件 分页插件支持任何复杂的单表 多表分页 我们在项目中使用sql的手动分页太常见了 如果前台需要分页信息的话 一般我们是需要2条slq语句 一条是查询总页数c
  • leetcode刷题-代码训练营-第3章-哈希表

    目录 242 有效的字母异位词 349 两个数组的交集 202 快乐数 1 两数之和 454 四数相加II 383 赎金信 1 暴力解法 2 哈希表解法 15 三数之和 1 哈希解法 2 双指针法 18 四数之和 242 有效的字母异位词
  • Java 微服务框架选型(Dubbo 和 Spring Cloud?)

    微服务 Microservices 是一种架构风格 一个大型复杂软件应用由一个或多个微服务组成 系统中的各个微服务可被独立部署 各个微服务之间是松耦合的 每个微服务仅关注于完成一件任务并很好地完成该任务 在所有情况下 每个任务代表着一个小的
  • 【常见错误】FPGA器件DDR类型选择错误

    ZedBoard开发常见错误 DDR的型号配置错误 间接会导致的结果是 在调试debug时 会发现cpu一直处于running的状态 但是在控制台并不能看到打印的信息 并且不管是只用了PS端或者是PS PL端都用了 都不能在控制台上出现打印
  • 短信验证码

    短信验证码用的是阿里云的 目录结构如下 其中aliyunsdkdysmsapi是在官方下载的 https help aliyun com document detail 55359 html aliyun py coding utf 8 i
  • 注入技术--LSP劫持注入

    1 原理 简单来说 LSP就是一个dll程序 应用程序通过winsock2进行网络通信时 会调用ws2 32 dll的导出函数 如connect accept等 而后端通过LSP实现这些函数的底层 简单来说就是调用winsock2提供的函数
  • 硬件系统工程师宝典(13)-----PCB的布局“有讲究”

    各位同学大家好 欢迎继续做客电子工程学习圈 今天我们继续来讲这本书 硬件系统工程师宝典 上篇我们说到EMC的标准以及提高EMC性能的一些常用方法 今天我们来看看PCB上模块的布局有什么讲究 模块划分及布局 PCB上模块的划分和布局会影响到布
  • Linux  root密码忘记了,怎么办?

    Linux root用户密码忘记了 怎么办 一 清除密码 首先 启动Linux 出现这个画面 有的版本不一定 和这个 一样但是大同小异 注意这句话就行 Press any key to enter the menu 按任意键进入菜单 然后
  • Cocos2d-x Js Binding 的手动绑定实现

    http www ityran com archives 4902 Cocos2d x Js Binding 的手动绑定实现 一叶 cocos2d x 08 13 2304 4条评论 随着 Cocos2d x 的发展 Cocos2d htm
  • Command ‘roscore‘ not found, but can be installed with: sudo apt install python-roslaunch

    ubuntu18 04安装ros melodic时报错 解决方法 查看是否安装包 cd opt ros melodic bin ls 发现没有roscore 安装 在bin目录 sudo apt get install ros melodi
  • NGINX指定启动的配置文件

    若不指定安装路径 nginx默认安装在 usr local nginx路径下 若不指定nginx的配置文件 nginx默认启动找的是同级nginx更路径下的 conf nginx conf配置文件 但该配置文件的所在路径 以及文件名不是绝对
  • git revert后无法merge发生的惨案

    git revert后无法merge发生的惨案 前景描述 目前公司开发模式是这样的 有测试分支test 开发分支dev1 dev2 dev3 dev1 dev2 dev3都是基于test分支拉出来的 各分支如果没有问题后都会合并到test
  • c# postgresql帮助类

    1 安装Npgsql 2 代码
  • 判断Java中map键值对中是否包含一个key

    boolean b map containsKey menuId
  • 前端拼音首字母搜索姓名

    前言 实际工作中碰到一个业务场景 只需要输入姓名字母简称就可以直接匹配出相应的汉字 这样可以极大的方便用户检索 提升用户的使用体验 具体需求 在搜索框中根据拼音首字母来快速搜索出人名 例如曾琴琴 曾是多音字 可以通过输入 z c zq cq
  • socket通讯相互发送读取xml实例

    首先了解下socket通讯传输数据的特点 数据在网络传输时使用的都是字节流或字符流 Socket也不例外 所以我们发送数据的时候需要转换为字节发送 读取的时候也是以字节为单位读取 那么问题就在于socket通讯时 接收方并不知道此次数据有多
  • git 某次提交补丁的生成与应用

    使用git format patch生成所需要的patch git format patch s 1bbe3c8c197a35f79bfddaba099270a2e54ea9c7 please replace the hash code w
  • 协议栈中绑定流程的一点认识

    2011年4月27日 初学者关于协议栈中绑定流程的一点认识 本人刚接触zigbee不久 在学习中将不断记录每天的进步 期待大家的指导 在这里指出我还是参考了ZStack CC2530 2 3 1 1 4 0 Projects zstack
  • Motion Detection

    Frame Difference Method FDM Background Subtraction Method BSM B is background image Adaptive Background Substraction Met
  • 在Windows上编译 CEF3 且加入mp3/mp4的支持

    现在因为工作需要 为了得到支持mp3 mp4的cef32和64位版本 需要编译cef3 本次编译版本是3239 6 0 3239 132 一 编译条件 1 可用于稳定的下载网络 2 Win7或者更新的系统 必须64位 至少8GB的RAM 我