时隔一年,再次编译cef3,独一无二的目的仍为加入mp3支持。新版本的编译环境和注意事项都已经发生了变化,于是再记录一下。

一、编译版本

cef版本号格式为X.YYYY.A.gHHHHHHH

  • X为主版本号,当前只有3
  • YYYY为chromium分支号
  • A为递增的svn提交版本号
  • HHHHHHH为7位git提交hash

此次编译cef版本为3.2704.1434.gec3e9ed

二、编译条件

  • 快速稳定的VPN,下载chromium源码必需,推荐nydus
  • 60G磁盘空间
  • 64位操作系统,Win 7+
  • vs2015 update2或update3
  • Windows 10.0.10586 SDK (已包含在vs2015中,安装注意选择)
  • MFC库(已包含在vs2015中,安装注意选择)

其它各版本编译条件查看官方文档说明

三、准备工作

  • 设置系统区域为英语(美国)。(控制面板-区域-管理-更改系统区域设置-英语(美国)
  • 创建工作目录,路径不能包含空格及特殊字符。例如h:\ws
  • 下载编译工具包,解压至工作目录。
  • 下载编译脚本至工作目录。
  • 在工作目录下创建源码目录。例如h:\ws\source
  • 添加系统环境变量
    • CEF_ARCHIVE_FORMAT=tar.bz2
    • DEPOT_TOOLS_WIN_TOOLCHAIN=0
    • GYP_DEFINES=buildtype=Official
    • GYP_MSVS_VERSION=2015
    • Path添加h:\ws\depot_tools,为避免与已安装的python或git冲突,建议写在path靠前位置
完整目录结构:
h:/
ws/
automate-git.py
depot_tools/
source/

四、开始

1. 以管理员身份运行cmd,安装python、git、svn

h:
cd h:\ws\depot_tools
update_depot_tools.bat

2. 运行编译脚本。

cd h:\ws
#不传入参数会显示帮助
python automate-git.py --download-dir=h:\ws\source --depot-tools-dir=h:\ws\depot_tools --branch= --checkout=ec3e9ed7fecc0d9f37a96951ba1bb26fd4f64dc7 --no-build --no-distrib

由于下载完源码要先修改配置,所以设置为不编译。下载大概持续4-5个小时。如何获得checkout值请查看前一篇介绍。

3. 修改配置

修改h:\ws\source\chromium\src\cef\cef.gypi,variables节下添加如下即可支持mp3。

'proprietary_codecs': ,
'ffmpeg_branding': 'Chrome',

同时可参考http://blog.csdn.net/chromium_webkit/article/details/8575629加入更多格式支持

从Chromium的源码third_party\ffmpeg\chromium\config\Chrome\win\ia32\config.h可以得知Chrome采用的FFmpeg的配置选项,在原有的配置选项后面添加如下选项:

--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'

4. 修改其它错误

#解决错误:无法识别的符号_ff_w64_guid_data
#修改chromium/third_party/ffmpeg / ffmpeg_generated.gypi
#在行'libavformat/vorbiscomment.c',后加入
'libavformat/w64.c',
#解决egl语法错误
#修改h:\ws\source\chromium\src\third_party\swiftshader\include\egl\eglext.h
#在62行后加入
typedef EGLAttribKHR EGLAttrib;

5. 编译

python automate-git.py --download-dir=h:\ws\source --depot-tools-dir=h:\ws\depot_tools --branch= --checkout=ec3e9ed7fecc0d9f37a96951ba1bb26fd4f64dc7 --no-debug-build --force-build --no-update

可加入--build-log-file参数,将日志信息输出到文件,方便查看完整信息。

但不能同时在cmd窗口观察进度,而且生成文件较大,注意取舍。

#最终生成输出路径
H:\ws\source\chromium\src\out\Release
H:\ws\source\chromium\src\cef\binary_distrib

五、结果测试

1. 版本号

2. 与官方版本对比

六、参考资料

https://bitbucket.org/chromiumembedded/cef/wiki/MasterBuildQuickStart.md

https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding.md

https://bitbucket.org/chromiumembedded/cef/wiki/AutomatedBuildSetup.md

http://www.magpcss.org/ceforum/viewtopic.php?f=6&t=14473

https://chromium-review.googlesource.com/#/c/343398/4

如何在windows上编译Chromium (CEF3) 并加入MP3支持(二)的更多相关文章

  1. 如何在 Windows上编译Objective-C

    Objective-C现在几乎已经变成了苹果的专利了,可以直接在苹果的Xcode上编译Objective-C程序,但是在Windows平台下的编译工具就寥寥无几了,本身这种语言用的人就不是很多.今天在 ...

  2. Build Slic3r on Windows // 如何在Windows上编译Slic3r

    下载Strawberry Perl 5.22 64bit绿色版,解压缩到某个地方,比如C盘根目录,比如 C:\strawbrry-perl-5.22.2.1-64bit-portable 下载Boos ...

  3. windows下编译chromium浏览器的15个流程整理

    编译chromium 系统为windows, 国内在windows上编译chromium的资料比较少, 我这篇文章只能作为参考, 记录我遇到的一些问题,因为chromium团队也会修改了代码,或者编译 ...

  4. [ZZ] 在windows上编译Mesa3d opengl32库

    在windows上编译Mesa3d opengl32库 cheungmine http://blog.csdn.net/ubuntu64fan/article/details/8061475 Mesa ...

  5. 如何在WINDOWS下编译BOOST C++库 .

    如何在WINDOWS下编译BOOST C++库 cheungmine 2008-6-25   写出来,怕自己以后忘记了,也为初学者参考.使用VC8.0和boost1.35.0.   1)下载boost ...

  6. 在Mac/Linux/Windows上编译corefx遇到的问题及解决方法

    这两天尝试在Mac/Linux/Windows三大平台上编译.NET跨平台三驾马车(coreclr/corefx/dnx)之一的corefx(.NET Core Framework),结果三个平台的编 ...

  7. (转)如何在Windows上安装多个MySQL

    原文:http://www.blogjava.net/hongjunli/archive/2009/03/01/257216.html 如何在Windows上安装多个MySQL 本文以免安装版的mys ...

  8. Redis简介以及如何在Windows上安装Redis

    Redis简介 Redis是一个速度非常快的非关系型内存数据库. Redis提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erla ...

  9. 如何在Windows上搭建Android开发环境

    Android开发越来越火,许多小伙伴们纷纷学习Android开发,学习Android开发首要任务是搭建Android开发环境,由于大家 主要实在Windows 上开发Android,下面就详细给大家 ...

随机推荐

  1. 解决 release-stripped.ap_' specified for property 'resourceFile' does not exist.

    设置buildTypes里的release的shrinkResources为false即可,如果是 release-stripped.ap_' specified for property 'reso ...

  2. 一些有趣的Javascript技巧

    整理一些刷题时学会的小技巧…… 目录: 即大于0又小于0的变量 String.split() 与 正则表达式 缓存的几种方法 初始化一个数组 即大于0又小于0的变量 问题: 设计一个变量val,使得以 ...

  3. python基础八

    面向对象的好处 更容易扩展.提高代码使用效率,使你的代码组织性更强, 更清晰,更适合复杂项目的开发 封装 把功能的实现细节封装起来,只暴露调用接口 继承 多态 接口的继承 定义 类   ===> ...

  4. raspbian调整分辨率

    参考 https://www.raspberrypi.org/documentation/configuration/config-txt.md 设置示例,设置成800*600 tvservice - ...

  5. 基于SSM的租赁管理系统1.0_20161225_框架搭建

    搭建SSM底层框架 1. 利用mybatis反向工程generatorSqlmapCustom完成对数据库十表的映射 generatorConfig.xml <?xml version=&quo ...

  6. SQL 隐藏手机号中间四位

    SELECT INSERT(mobile, 4, 4, '****')AS Mobile from Users ;

  7. Http与Socket小谈

    http与socket是网络编程中最为重要的概念,不管是客户端还是服务端,都是最为重要的部分,以下简述两者的关系和区别(个人见解). Http 定义 基于应用层的超文本传输协议.通常承载于TCP/IP ...

  8. 配置oozie4.10+hadoop2.5.2

    终于将这个神秘的寻象人 oozie 安装配置成功了,这个困扰我好几天, 当看到如下的画面, 我觉得值! 废话少说,看我如何编译和安装过程: (已经将hadoop2.5.2HA 的环境搭建起来了,hiv ...

  9. 同感,C#对JSON序列化和反序列化有点蹩脚

    http://www.cnblogs.com/baisoft/p/5860676.html

  10. EF多对多更新报错(TableNoTracking引发的bug)

    实体映射关系如下,SISTUser和SISTUserRoles存在多对多的关系,生成中间表 public partial class SISTUserMap: EntityTypeConfigurat ...