如何在windows上编译Chromium (CEF3) 并加入MP3支持

Posted 超软毛毛虫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在windows上编译Chromium (CEF3) 并加入MP3支持相关的知识,希望对你有一定的参考价值。

时隔一年,再次编译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=2704 --checkout=ec3e9ed7fecc0d9f37a96951ba1bb26fd4f64dc7 --no-build --no-distrib

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

3. 修改配置

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

\'proprietary_codecs\': 1,
\'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=2704 --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支持的主要内容,如果未能解决你的问题,请参考以下文章

在ubuntu上编译chrome

如何在 Windows 上编译 nDPI 库?

如何在 Windows 上编译它

如何在 Windows 上编译skia

Chromium 自定义构建运行太慢

如何在 Windows 上编译 libevent2?