编译CEF 132.3.3

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

https://zhuanlan.zhihu.com/p/694014974

https://blog.csdn.net/qq_42144475/article/details/125017053?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522816cef5dfdcefb0a4a10e76837fc9344%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=816cef5dfdcefb0a4a10e76837fc9344&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-125017053-null-null.142^v102^pc_search_result_base1&utm_term=cef%20windows%E7%BC%96%E8%AF%91&spm=1018.2226.3001.4187

相关推荐
wadesir2 小时前
Judy数组:C语言中的高性能动态数组(全面入门Judy库使用指南)
c语言·开发语言
一个平凡而乐于分享的小比特2 小时前
C语言中 volatile 关键字总结
c语言·volatile
发疯幼稚鬼2 小时前
插入排序与冒泡排序
c语言·数据结构·算法·排序算法
一个平凡而乐于分享的小比特2 小时前
static 关键字详解
c语言·static
一个平凡而乐于分享的小比特2 小时前
C语言内存布局
c语言·const·内存布局
Bigan(安)4 小时前
【奶茶Beta专项】【LVGL9.4源码分析】09-core-global全局核心管理
linux·c语言·mcu·arm·unix
CoderYanger10 小时前
C.滑动窗口-求子数组个数-越长越合法——2799. 统计完全子数组的数目
java·c语言·开发语言·数据结构·算法·leetcode·职场和发展
LinHenrY122712 小时前
初识C语言(自定义结构:结构体)
c语言·开发语言
程序员Jared13 小时前
深入浅出C语言——文件操作
c语言