CEF编译整理、支持MP3和MP4的整理以及.NET的调用

由于chrome目前不支持NPAPI,项目中需要用到NPAPI控件,所以尝试编译低版本的chrome;

关于3.2357.1287.g861c26e、3.2526.1373.gb660893、3.2623.1397.gaf139d7 的编译版本,三个都支持MP3\MP4。下载地址:

3.2357.1287.g861c26e

3.2526.1373.gb660893

3.2623.1397.gaf139d7

以下是自己研究一些整理资料:

cef和chrome的关系: chrome代码是谷歌浏览器的开源库,CEF则是chrome提供给其他语言调用的接口,CEF类似于chrome接口的一个封装;

Xilium.CefGlue则是对CEF的再次保证,提供给.NET调用

cef的源码:https://bitbucket.org/chromiumembedded/cef/

chrome的源码:https://chromium.googlesource.com/chromium/

cef编译版本:http://opensource.spotify.com/cefbuilds/index.html

这个编译版本下载下来,比如:cef_binary_3.3396.1779.g36f9eab_windows32.tar.bz2 可以用CMake生成VS的工程,可以修改cefclient和cefsimple的代码,但是改不了chrome的源码,当然也改不了支持MP3\MP4;

关于CEF版本对NPAPI的支持,和谷歌官方说的可能不一样,官方说是43版本最后一个支持的,其实不然,49版本是最后一个支持的,只是49版本阉割了NPAPI的网络模块,导致依赖NPAPI接口的flash和siverlight,都不能用了,说了,严格意义上 45版本是最后一个完整支持NPAPI的;当然谁有兴趣也可以改下49版本的NPAPI,加上被去掉的网络模块,我尝试过,由于chrome代码改动量太大,每天至少几百个GIT提交,要找到去掉的代码实在太多,不得不放弃了;毕竟不是专业些浏览器的;

废话说了这多,下面是CEF的编译

关于CEF的编译,我尝试编译了3个版本,分别是:3.2357.1287.g861c26e、3.2526.1373.gb660893、3.2623.1397.gaf139d7

这个版本号,是libcef.dll的属性可以看到详细版本号;

编译之前,请自行购买翻墙的软件,建议大家别用SS和SSR代理,因为下载源码的过程,会有GS://的访问,这个SS代理不了,建议大家直接购买VPN或者全局代理的软件;

第一步:环境准备

(1)64位操作系统,Win 7+;
(2)vs2013 update4;
(3)Windows 8.1 SDK 

VS编译版本大家可以参考我这个的



第二步:目录创建chrome,chrome下面有3个文件夹:automate、chromium_git、depot_tools

第三步:确点checkout版本

比如CEF版本是3.2526.1373.gb660893

访问:https://bitbucket.org/chromiumembedded/cef/commits/branch/2526

切换到2526分支,可以看到b660893对应的是2526最新的分支,

checkout的值是b660893c6e800374d2b908a0b56ca47441ea2135;下面我还会讲.NET对应的CEF版本是怎么找的

第四步:下载编译工具:depot_tools

下载地址:https://chromium.googlesource.com/chromium/tools/depot_tools

由于我们编译的版本是比较老的版本,最新的depot_tools编译会有问题,所以最好用GIT切到你要编译的版本对应的日期上,我这边切换到是 这个分支:SHA-1: 1a85b3c9a2c92d4c23c00450a29ecf44f28be6b1,时间点是2016/5/26日,这个自己把握吧,我也是踩坑过来的;

下载下工具后,我们需要手动更新工具,这个更新并不是GIT更新,而是depot_tools的工具下载更新;我们首先要关掉GIT 的更新;

打开 update_depot_tools文件,set DEPOT_TOOLS_UPDATE=0

CMD执行 update_depot_tools.bat ;

depot_tools的目录添加到环境变量path中,最好放在前面点,可能和已经安装好的python git svn冲突

记住:python 、git 、svn、depot_tools都 需要再环境变量里,没有的自己安装检查;python 是2.7的版本即可

第五步:找到CEF对应分支后,去TOOLS文件夹下载automate-git.py放到 本地automate文件夹;

https://bitbucket.org/chromiumembedded/cef/src/b660893c6e800374d2b908a0b56ca47441ea2135/tools/automate/automate-git.py?at=2526

第六步:下载代码

首先环境变量调整好:

设置:DEPOT_TOOLS_UPDATE=0;

DEPOT_TOOLS_WIN_TOOLCHAIN=0

GYP_GENERATORS=ninja,msvs-ninja

GYP_MSVS_VERSION=2013

在chromium_git目录下,新建个UPDATE.BAT文件,文件写如下指令:

set DEPOT_TOOLS_WIN_TOOLCHAIN=0  
set GYP_DEFINES=buildtype=Official  
set GYP_GENERATORS=msvs-ninja,ninja  
set GYP_MSVS_VERSION=2013

python ..\automate\automate-git_2526.py --download-dir=D:\chrome\chromium_git --depot-tools-dir=D:\chrome\depot_tools --branch=2526 --no-build --no-distrib --force-clean --force-clean-deps --no-depot-tools-update

经过5-6个小时的等待。20G的代码下载完了,

参数:

// 以下为参数说明
--download-dir 源码下载目录
--depot-tools-dir 工具包目录
--branch 源码分支(默认trunk主分支
--checkout 指定patch版本(默认最近提交 如何确定checkout下文介绍
--no-build 下载完不自动开始编译(我们需要修改编译配置
--no-update 确定源码下载完毕仅重新编译时使用
--force-build 强制编译(发现在有成功编译的时候再编译不会执行,可以加上这个
--no-debug-build 只编译release版本

--no-release-build 只编译debug版本


第七步: 修改支持MP4\MP4\,然后是忽略警告,我以2526版本为例,2357版本太多修改,建议大家别玩这个版本,我玩了好几天:

 打开e:\cef\source\chromium\src\cef\cef.gypi,variables节下添加如下即可支持mp3/mp4。
'proprietary_codecs': 1,
'ffmpeg_branding': 'Chrome',
 从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'

common.gypi 修改:

 [ 'OS=="win"', {
            'defines': [
              '_CRT_SECURE_NO_DEPRECATE',
              '_CRT_NONSTDC_NO_WARNINGS',
              '_CRT_NONSTDC_NO_DEPRECATE',
              '_SCL_SECURE_NO_DEPRECATE',
            ],
            'msvs_disabled_warnings': [
              4800,4091,4127,4351,4355,4503,4589,4611,4100,4121,4244, 4505,4510,4512,4610, 4838, 4995, 4996,
 4334,4819,4396, 4125,4130,4131,4189, 4201, 4238,4245,4310,4428, 4481,4530, 4701, 4702,4706,
 4067,4251,4702,4456, 4457, 4458, 4459,4312,

            ],

google_apis.gyp 修改

      'msvs_disabled_warnings': [4267,4334, ],

skia_common.gypi 修改

  'msvs_disabled_warnings': [4244, 4267, 4334, 4341, 4345, 4390, 4554, 4748, 4800],

第八步编译:

编译时,需要预留40G空间,对是40G,你没看错,你编译完就知道为什么需要40G了

设置系统区域为英语(美国)。(控制面板-区域-管理-更改系统区域设置-英语(美国),电脑重启后生效

在chromium_git目录下,新建个COMEON.BAT文件。其实名字随便取啦;

内如如下:

set DEPOT_TOOLS_WIN_TOOLCHAIN=0
set GYP_GENERATORS=msvs-ninja,ninja
set GYP_DEFINES=buildtype=Official  
set GYP_MSVS_VERSION=2013
set CEF_ARCHIVE_FORMAT=tar.gz

python ..\automate\automate-git_2526.py --download-dir=D:\chrome\chromium_git --depot-tools-dir=D:\chrome\depot_tools --branch=2526 --no-debug-build --verbose-build --force-build --force-distrib --no-update --build-log-file

然后开始漫长的编译过程,force-distrib这个参数我说下,强制发布,不加的话不会生成发布文件,也就是http://opensource.spotify.com/cefbuilds/index.html这个网站下的东东,可以用CMAKE生成工程文件的;

编译完成;

下面关于.NET的调用


.NET调用CEF目前是有3种方式的:

我们现在说的都是CEF3,CEF1是旧的接口,已经没人用了

CefSharp:https://github.com/cefsharp/CefSharp 这个封装的很好,适合新手使用,据说效率不如xilium

xilium.cefglue:  https://bitbucket.org/xilium/xilium.cefglue 封装的一般,好在扩展性不错,可自行修改封装

chromiumfx:https://bitbucket.org/chromiumfx/chromiumfx 封装的一般,而且并不太好用;

目前大部分人用的应该是xilium.cefglue,首先这个玩意也是找对应CEF版本的;

访问 https://bitbucket.org/xilium/xilium.cefglue,切换到对应分支,比如:2526分支,找到cefglue工程下的

version.g.s里找到CEF_VERSION为:3.2526.1366.g8617e7c; 还有CEF_API_HASH_PLATFORM_WIN这个对应是cefclient工程下的版本。














评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值