一、编译chrome让其支持mp4
这个地址里面有必须的编译条件介绍.
https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md
要点如下:
1.设置系统区域为英语(美国)。控制面板-区域-管理-更改系统区域设置-英语(美国)
2.当前新版仅支持vs2015 update2编译。
3.至少win7 64 或者更高版本
编译命令参考:
set GYP_DEFINES=windows_sdk_path="C:\Program Files (x86)\Windows Kits\8.1"
python automate-git.py --download-dir=D:\chrome_src_ws\ws\source --depot-tools-dir=D:\chrome_src_ws\ws\depot_tools --branch=2623 --no-debug-build --force-build --no-update --build-log-file
cef.gypi的variables节下添加如下即可支持mp3/mp4,开启以下:
'proprietary_codecs': 1,
'ffmpeg_branding': 'Chrome',
third_party\ffmpeg\chromium\config\Chrome\win\ia32\config.h原有配置增加以下:
--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'
chrome加入mp4支持可
参考
1.http://www.cnblogs.com/himax/p/how_to_build_cef3_on_windows_2704.html
http://blog.csdn.net/hns707/article/details/45390387
2.http://www.cnblogs.com/hezhixiong/p/5935143.html
3.http://www.mamicode.com/info-detail-1026791.html
二、编译chrome出现的各种故障和解决汇总
0.去掉”注意: 包含文件:"的警告输出
修改 tools\gyp\pylib\gyp\generator\ninja.py
2025行修改为如下语句,去掉showIncludes:
msvc_deps_prefix='注意: 包含文件:'
cc_command = ('ninja -t msvc -e $arch ' +
'-- '
'$cc /nologo /FC '
'@$out.rsp /c $in /Fo$out /Fd$pdbname_c ')
cxx_command = ('ninja -t msvc -e $arch ' +
'-- '
'$cxx /nologo /FC '
'@$out.rsp /c $in /Fo$out /Fd$pdbname_cc ')
解决错误:无法识别的符号_ff_w64_guid_data
#修改chromium/third_party/ffmpeg / ffmpeg_generated.gypi
#在行'libavformat/vorbiscomment.c',后加入
'libavformat/w64.c',
2.egl语法错误
#解决egl语法错误
#修改h:\ws\source\chromium\src\third_party\swiftshader\include\egl\eglext.h
#在62行后加入
typedef EGLAttribKHR EGLAttrib;
3.ACTION Copying D3D Compiler DLL错误
系统环境变量windows_sdk_path改到"C:\Program Files (x86)\Windows Kits\8.1"(8.0是之前编译36版本的)。
命令行编译前设置set GYP_DEFINES=windows_sdk_path="C:\Program Files (x86)\Windows Kits\8.1"
4.gl_bindings_skia_in_process.cc(684) : error C2679: binary '=' : no operator found which takes a right-hand operand of ty
pe 'overloaded-function' (or there is no acceptable conversion)
解决:gl_bindings_skia_in_process.cc和 gl_bindings_skia_in_process.hh已经死代码了。ui/gl/BUILD.gn和gl.gyp去除这两个引用详见https://codereview.chromium.org/1673323002
5.d:\chrome\ws\source\chromium\src\cef\libcef\browser\browser_host_impl.cc(666): error C2039: "PrintNow": ??"printing::PrintViewManager"???
d:\chrome\ws\source\chromium\src\cef\libcef\browser\printing\print_view_manager.h(23): note: ??"printing::PrintViewManager"???查找gyp文件,把print_view_manager_base.h和print_view_manager_base.cc,放到print_view_manager.h和print_view_manager.cc前面
6.出现“IDR_BLOCKED_PLUGIN_HTML”: 未声明的标识符
“IDR_PLUGIN_POSTER_HTML”: 未声明的标识符
相应的cc文件添加
#include "include/cef_pack_resources.h"
https://cefbuilds.com/
编译出现问题问题1 LINK : fatal error C1007: unrecognized flag '
解决:官方介绍,/Zc:inline选项可以去除该错误,vs2013update2起支持,
本人升级到vs2013 update5,编译通过。
问题2.无法解析的外部符号 _GetFileVersionInfoW@16
解决:配置属性-链接器-输入-附加依赖项增加version.lib
问题3.xp不支持
解决:配置属性-常规-平台工具集-设置Windows XP (v120_xp).
四、xilium.cefglue集成
1.下载和安装sourcetree
查看xilum.cefglue的commit提交,找到需要的版本,用sourcetree下载和cef3.bin一致的版本。