1.配置代理
bash
set HTTP_PROXY "http://127.0.0.1:7890"
set HTTPS_PROXY "http://127.0.0.1:7890"
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890
git config --global --get http.proxy
若不用了,恢复使用以下两个命令
bash
git config --global --unset http.proxy
git config --global --unset https.proxy
2.下载CEF和depot_tools
bash
E:\work\demo\newcef\source
git clone https://bitbucket.org/chromiumembedded/cef.git -b 6834
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
将E:\work\demo\newcef\source\depot_tools的路径加到系统环境变量里
3.拉取Chromiun源码
在E:\work\demo\newcef\source\automate目录下创建脚本文件update.bat
bash
git config --global http.sslVerify false
setx GN_DEFINES "is_official_build=true proprietary_codecs=true ffmpeg_branding=Chrome"
cd E:\work\demo\newcef\cef\tools\automate
python .\automate-git.py --download-dir=E:\work\demo\newcef\source --depot-tools-dir=E:\work\demo\newcef\source\depot_tools --no-build --no-distrib --branch=6834
拉取源码的时间非常漫长,慢慢等吧
修改源码以支持H264
-
修改chromium\src\third_party\ffmpeg\chromium\scripts\build_ffmpeg.py
找到configure_flags['Chrome'].extend
configure_flags['Chrome'].extend([ '--enable-decoder=aac,h264,mp3,mpeg4,amrnb,amrwb,flv', '--enable-demuxer=aac,mp3,mov,avi,amr,flv', '--enable-parser=aac,h264,mpegaudio,mpeg4video,h263', ]) -
修改chromium\src\third_party\ffmpeg\chromium\config\Chrome\win\ia32\config.h
在第4行下增加如下代码
#define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio,vp9' --extra-cflags=-I/usr/local/google/home/jrummell/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=nasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --toolchain=msvc --extra-cflags=-I/usr/local/google/home/jrummell/chromium/src/third_party/ffmpeg/chromium/include/win --enable-cross-compile --cc=clang-cl --ld=lld-link --nm=llvm-nm --ar=llvm-ar --extra-cflags=-O2 --extra-cflags=-m32 --extra-cflags=-imsvc/usr/local/google/home/jrummell/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/9ff60e43ba91947baca460d0ca3b1b980c3a2c23/win_sdk/Include/10.0.18362.0/um --extra-cflags=-imsvc/usr/local/google/home/jrummell/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/9ff60e43ba91947baca460d0ca3b1b980c3a2c23/win_sdk/Include/10.0.18362.0/shared --extra-cflags=-imsvc/usr/local/google/home/jrummell/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/9ff60e43ba91947baca460d0ca3b1b980c3a2c23/win_sdk/Include/10.0.18362.0/winrt --extra-cflags=-imsvc/usr/local/google/home/jrummell/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/9ff60e43ba91947baca460d0ca3b1b980c3a2c23/win_sdk/Include/10.0.18362.0/ucrt --extra-cflags=-imsvc/usr/local/google/home/jrummell/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/9ff60e43ba91947baca460d0ca3b1b980c3a2c23/VC/Tools/MSVC/14.23.28105/include --extra-cflags=-imsvc/usr/local/google/home/jrummell/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/9ff60e43ba91947baca460d0ca3b1b980c3a2c23/VC/Tools/MSVC/14.23.28105/atlmfc/include --extra-ldflags='-libpath:/usr/local/google/home/jrummell/chromium/src/third_party/depot_tools/win_toolchain/vs_files/9ff60e43ba91947baca460d0ca3b1b980c3a2c23/VC/Tools/MSVC/14.23.28105/atlmfc/lib/x86' --extra-ldflags='-libpath:/usr/local/google/home/jrummell/chromium/src/third_party/depot_tools/win_toolchain/vs_files/9ff60e43ba91947baca460d0ca3b1b980c3a2c23/win_sdk/Lib/10.0.18362.0/ucrt/x86' --extra-ldflags='-libpath:/usr/local/google/home/jrummell/chromium/src/third_party/depot_tools/win_toolchain/vs_files/9ff60e43ba91947baca460d0ca3b1b980c3a2c23/win_sdk/Lib/10.0.18362.0/um/x86' --extra-ldflags='-libpath:/usr/local/google/home/jrummell/chromium/src/third_party/depot_tools/win_toolchain/vs_files/9ff60e43ba91947baca460d0ca3b1b980c3a2c23/VC/Tools/MSVC/14.23.28105/lib/x86' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' -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.编译
将CEF源码拷贝进E:\work\demo\newcef\source\chromium\src
执行以下命令
bash
set GYP_MSVS_VERSION=2022
set GYP_MSVS_OVERRIDE_PATH=D:\Program Files\Microsoft Visual Studio\2022\Community
set VS2022INSTALLDIR=D:\Program Files\Microsoft Visual Studio\2022\Community
setx GN_DEFINES "is_official_build=true proprietary_codecs=true ffmpeg_branding=Chrome"
set PATH=D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\bin\Hostx64\x64;%PATH%
call "D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
#生成工程文件
cd E:\work\demo\newcef\source\chromium\src\cef
set GYP_MSVS_OVERRIDE_PATH=D:\Program Files\Microsoft Visual Studio\2022\Community
set GN_ARGUMENTS=--ide=vs2022 --sln=cef --filters=//cef/*
call cef_create_projects.bat
#编译
cd dirty\chromium_git\chromium\src
ninja -C out\Release_GN_x86 cef
#打包
set CEF_VCVARS=D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat
cd E:\work\demo\newcef\source\chromium\src\cef\tools
#make_distrib.bat --ninja-build --minimal --x64-build
make_distrib.bat --ninja-build --minimal --x64-build --no-sandbox
编译的时间也很漫长,慢慢等吧
编译报错:
-
UnicodeDecodeError: 'gbk' codec can't decode byte 0x92 in position 277: illegal multibyte sequence,解决方法:找到文件:根据错误堆栈,文件位于
E:\work\demo\newcef\source\depot_tools\bootstrap-2@3_11_8_chromium_35_bin\python3\bin\Lib\subprocess.py,python# 原代码 buffer.append(fh.read()) # 修改为 buffer.append(fh.read().decode('utf-8', errors='ignore')) # 或者使用 'replace' 而非 'ignore'
5.最终打包文件位置在E:\work\demo\newcef\source\chromium\src\cef\binary_distrib
分享下载路径:https://download.csdn.net/download/mywyu_wmb/92460451
6.参考文章
https://www.jianshu.com/p/6b17d149f0fd