设为首页 收藏本站
查看: 1190|回复: 0

[经验分享] 在Windows上编译Chromium(CEF3)并加入mp3/mp4的支持

[复制链接]

尚未签到

发表于 2017-6-28 14:31:33 | 显示全部楼层 |阅读模式
  公司有一个基于谷歌浏览器内核加上公司自己做的浏览器皮肤,然后开发出具有公司特性的浏览器。随着谷歌浏览器不断的更新升级,为了能提升公司浏览器的用户体验,所以也需要定期的对公司的浏览器进行相应的更新与升级。去年(2015年)6月份自己基于公司现有的项目对公司浏览器升级为cef3.2171版本(对应于Chromium ver=39)。近一年来,谷歌浏览器升级很快,目前已经升级到53/54版本了,所以公司要求升级公司浏览器。
  现在cef3的版本与之前差异很大,经过一番研究和实践终于升级到cef3.2785(Chromium ver=53. 备注:为什么不直接升级到54版本,原因是目前市场上最新的版本还是53版本,而54版本才刚分离出来没几天,基于稳定性考虑所以选择了53版本)。然而在测试过程中发现自己编译出来的浏览器不支持播放mp3(音频)和mp4(视频)格式的文件,这可是个大问题,因为业务需求就是需要能正常播放mp3和mp4。为了解决编译出来的浏览器能支持mp3和mp4,网上查找了很多资料,了解到为什么cef3不直接支持mp3/mp4等格式文件的原因。为方便自己以后升级公司浏览器及其他有需要的朋友,所以打算写该文档。(目的是为了解决让cef3支持mp3和mp4文件)
  一、什么是CEF
  CEF包括CEF1和CEF3两个版本,CEF1已停止更新,目前大家所用的都是CEF3。CEF即Chromium Embeded Framework,由谷歌的开源浏览器项目Chromium扩展而来,可方便地嵌入其它程序中以得到浏览器功能。
  二、编译版本
  cef版本号格式为X.YYYY.A.gHHHHHHH。X为主版本号,当前只有3;YYYY为chromium分支号;A为递增的svn提交版本号;HHHHHHH为7位git提交hash。我本人本次编译版本为:cef3.2785.1482.g16e49fb(Chromium version 53.0.2785.116)
  三、编译条件
  (1)快速稳定的VPN,下载chromium源码必需;
  (2)60G磁盘空间;
  (3)64位操作系统,Win 7+ ;
  (4)vs2015 update2或update3;
  (5)Windows 10.0.10586 SDK (已包含在vs2015中,安装注意选择);
  (6)MFC库(已包含在vs2015中,安装注意选择)。
  其它各版本编译条件查看:https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding.md#markdown-header-current-release-branches-supported
  备注:这个编译条件如果达不到,可能会跟我一样遇到以下问题。
  (1)使用免费版本的vpn,结果下载过程中常出现中断导致下载不了。所以为这事,我特意购买了vpn,即使用购买的vpn我也下载了大概8个小时(下载的文件有近16G)。
  (2)vs版本不对,导致编译过程老是出错,所以卸载了自己原来的vs2013 update5,改安装vs2015 update3
  (3)磁盘空间不足,我腾出一个40G的磁盘来下载和编译该版本,结果出现磁盘空间不足导致编译失败,最后对电脑重新分区才腾出空间来编译该版本
  四、准备工作
  (1)设置系统区域为英语(美国)。(控制面板-区域-管理-更改系统区域设置-英语(美国)
  (2)创建工作目录,路径不能包含空格及特殊字符。例如e:\cef
  (3)下载编译工具包,解压至工作目录。
  (4)下载编译脚本至工作目录。
  (5)在工作目录下创建源码目录。例如e:\cef\source
  (6)添加系统环境变量
    ·CEF_ARCHIVE_FORMAT=tar.bz2
    ·DEPOT_TOOLS_WIN_TOOLCHAIN=0
    ·GYP_DEFINES=buildtype=Official
    ·GYP_MSVS_VERSION=2015
    ·Path添加e:\cef\depot_tools,为避免与已安装的python或git冲突,建议写在path靠前位置



完整目录结构:
e:/
cef/
automate-git.py
depot_tools/
source/
  五、下载与编译
  (1)以管理员身份运行cmd,安装python、git、svn



e:
cd e:\cef\depot_tools
update_depot_tools.bat
  (2)下载chromium源码



cd e:\cef
python automate-git.py --download-dir=e:\cef\source --depot-tools-dir=e:\cef\depot_tools --branch=2785 --checkout=16e49fb8af7aacfd8e32b232eaf1e736bb3269f1 --no-debug-build --force-build --no-update
// 以下为参数说明
--download-dir 源码下载目录
--depot-tools-dir 工具包目录
--branch 源码分支(默认trunk主分支
--checkout 指定patch版本(默认最近提交 如何确定checkout下文介绍
--no-build 下载完不自动开始编译(我们需要修改编译配置
--no-update 确定源码下载完毕仅重新编译时使用
--force-build 强制编译(发现在有成功编译的时候再编译不会执行,可以加上这个
--no-debug-build 只编译release版本
--no-release-build 只编译debug版本
  由于下载完源码要先修改配置,所以设置为不编译。这个下载过程需要一定时间,我用购买的vpn也下载了大概8小时,下载了近16G的文件。
  如何确认以上checkout的值,可以参考文档中的“五、如何确定--checkout值”
  (3)修改编译配置文件
  1> 打开e:\cef\source\chromium\src\cef\cef.gypi,variables节下添加如下即可支持mp3/mp4。



    'proprietary_codecs': 1,
'ffmpeg_branding': 'Chrome',
  2> 同时可参考《让Chrome的HTML5 video/audio tag支持更多种音视频格式》加入更多格式支持。



从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'
  3> 修改其他错误



#解决错误:无法识别的符号_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;
  (4)编译



python automate-git.py --download-dir=f:\cef\source --depot-tools-dir=f:\cef\depot_tools --branch=2785 --checkout=16e49fb8af7aacfd8e32b232eaf1e736bb3269f1 --no-debug-build --force-build --no-update
#最终生成输出路径
e:\cef\source\chromium\src\out\Release
e:\cef\source\chromium\src\cef\binary_distrib
  六、测试结果
  (1)版本号
DSC0000.png

  (2) 对mp3/mp4的支持
DSC0001.png DSC0002.png

  七、封装后的浏览器
DSC0003.png

  八、参考文档 
  (1)https://cefbuilds.com/
  (2)该链接竟然被和谐了
  (3)https://github.com/cefsharp/cef-binary/wiki/Building-Cef-from-source
  (4)http://www.cnblogs.com/honker/p/5616433.html
  (5)https://bitbucket.org/chromiumembedded/cef

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-389037-1-1.html 上篇帖子: windows server 2008 增加远程桌面连接数 下篇帖子: Windows ,获取硬盘物理序列号(VC++)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表