• windows平台编译CEF支持H264(MP3、MP4)超详细


    🚀 优质资源分享 🚀

    学习路线指引(点击解锁)知识定位人群定位
    🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    💛Python量化交易实战💛入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

    编译目标(如何确定目标定版本请查看:BranchesAndBuilding

    CEF Branch:4664
    CEF Commit:fe551e4
    Chromium Version:96.0.4664.110
    
    • 1
    • 2
    • 3

    编译环境准备

    1 安装或修改VS2019

    VS版本和SDK版本可查看:BranchesAndBuilding

    1)在“在工作负荷”勾选“使用C++的桌面开发

    2)在**“单个组件”勾选“Windows 10 SDK (10.0.19014.0)”**

    3)安装或修改完成后在**“控制面板”/“程序”/“卸载程序”中找到刚才对应的SDK,“右键”/“更改”**

    4)找到“Debgging Tools for Windows”,然后勾选

    2 网络代理工具和代理配置

    1)一个稳定的代理, 比如: V2free

    2)配置git 代理(v2rayN本地服务地址为http://127.0.0.1:10809)

    ::设置代理(执行一次即可)
    git config --global http.proxy http://127.0.0.1:10809
    git config --global https.proxy http://127.0.0.1:10809
    ::取消代理
    git config --global --unset http.proxy
    git config --global --unset https.proxy
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    CEF 源码编译流程

    1 创建工作目录

    md C:\Code\cef\
    md C:\Code\chromium\src\
    md C:\Code\depot\_tools\
    
    • 1
    • 2
    • 3

    2 添加环境变量

    :: 代理
    setx HTTP\_PROXY "http://127.0.0.1:10809"
    setx HTTPS\_PROXY "http://127.0.0.1:10809"
    
    :: 禁止depot\_tools自动更新
    setx DEPOT\_TOOLS\_UPDATE "0"
    
    :: 使用本地安装的 Visual Studio 版本
    setx DEPOT\_TOOLS\_WIN\_TOOLCHAIN "0"
    
    :: GN 构建工具
    setx CEF\_USE\_GN "1"
    
    :: 使用 VS2019 创建项目
    setx GN\_ARGUMENTS "--ide=vs2019 --sln=cef --filters=//cef/*"
    
    :: 使用官方构建并添加ffmpeg音视频解码
    setx GN\_DEFINES "is\_official\_build=true proprietary\_codecs=true ffmpeg\_branding=Chrome"
    
    :: 将depot\_tools路径("C:\Code\depot\_tools\)添加到用户环境变量Path
    for /f "tokens=3,*" %i in ('reg query HKCU\Environment /v Path') do setx Path "C:\Code\depot\_tools\;%i%j"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    执行以上命令即可在系统中创建环境变量 (记得不用的时候把这些环境变量删除了)

    3 下载源码

    1)下载cef

    cd C:\Code
    
    :: clone源码并切换至4664分支
    git clone https://bitbucket.org/chromiumembedded/cef.git -b 4664
    
    • 1
    • 2
    • 3
    • 4

    2)下载chromium

    cd C:\Code\chromium
    
    :: clone指定tag(96.0.4664.110)的源码, (cef 4664分支 对应chromiun tag: 96.0.4664.110)
    :: "--depth 1": 只下载当前版本不需要历史提交记录, 否则耗时严重且浪费储存空间或者意外中断
    git clone https://chromium.googlesource.com/chromium/src.git -b 96.0.4664.110 --depth 1
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3)下载depot_tools

    cd C:\Code
    
    :: clone depot\_tools工具
    git clone https://chromium.googlesource.com/chromium/tools/depot\_tools.git
    
    cd C:\Code\depot\_tools
    
    :: 临时允许更新
    set DEPOT\_TOOLS\_UPDATE=1
    :: 执行update\_depot\_tools.bat下载内部工具
    update\_depot\_tools.bat
    :; 禁止更新
    set DEPOT\_TOOLS\_UPDATE=0
    
    :: checkout, (cef 4664分支 对应depot\_tools commit id: e023d44820)
    checkout e023d44820
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    注意: cef, chromium, depot_tools对应版本关系在"cef\CHROMIUM_BUILD_COMPATIBILITY.txt"

    4 gclient 同步chromium依赖项目

    1)创建.gclient文件

    cd C:\Code\chromium
    
    :: 通过命令创建.gclient文件
    gclient config  https://chromium.googlesource.com/chromium/src.git --unmanaged
    
    • 1
    • 2
    • 3
    • 4

    2)执行gclient sync

    cd C:\Code\chromium
    
    gclient sync --nohooks --no-history
    
    • 1
    • 2
    • 3

    此命令执行过程中可能会中途暂停或失败,耐心等待或重复执行此命令直到成功为止

    3)执行gclient runhooks

    cd C:\Code\chromium
    
    :: 如果前面已经设置了此环境变量, 可以不用执行
    set DEPOT\_TOOLS\_WIN\_TOOLCHAIN=0
    
    gclient runhooks
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    此命令执行过程中可能会中途暂停或失败,耐心等待或重复执行此命令直到成功为止

    5 构建项目

    1)复制 C:\Code\cef 到 C:\Code\chromium\src

    xcopy "C:\Code\cef" "C:\Code\chromium\src\cef\" /e
    
    • 1

    2)构建项目

    cd C:\Code\chromium\src\cef
    
    :: 如果前面已经设置了这些环境变量则可以跳过这3条命令
    set CEF\_USE\_GN=1
    set GN\_ARGUMENTS=--ide=vs2019 --sln=cef --filters=//cef/*
    set GN\_DEFINES=is\_official\_build=true proprietary\_codecs=true ffmpeg\_branding=Chrome
    
    :: 构建项目
    call cef\_create\_projects.bat
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    6 编译

    cd C:\Code\chromium\src
    
    ninja -C out/Release\_GN\_x86 cef
    
    • 1
    • 2
    • 3

    7 打包

    cd C:\Code\chromium\src\cef\tools
    
    make\_distrib.bat --ninja-build --client
    
    • 1
    • 2
    • 3

    在 C:\Code\chromium\src\cef\binary_distrib 目录下就可以看到打包过的文件了

    8 其他

    1)如果在构建或编译过程中遇到python gbk编码错误, 找到报错的代码添加 utf-8 编码即可, 比如:

          if (environment\_block\_name != ''):
     env\_block = \_FormatAsEnvironmentBlock(env)
     with open(environment\_block\_name, 'w', encoding='utf-8') as f:
     f.write(env\_block)
    
    • 1
    • 2
    • 3
    • 4

  • 相关阅读:
    Github流出高质量高并发手册,看完面试手稳心不慌,吊打敢于提问高并发的面试官
    docker 安装 portainer
    【问题解决】Linux-conda环境下安装PyKDL无法链接.so动态库
    关于阅读《重构的时机和方法》这本书所带来的启发
    底层逻辑-理解Go语言的本质
    挂载VMware esxi服务器文件夹到本地ubuntu
    21天打卡挑战 - 经典算法之冒泡排序
    将 APACHE 日志解析到 SQL 数据库中
    【算法刷题】手撕LRU算法(原理、图解、核心思想)
    【Docker】Docker 网络
  • 原文地址:https://blog.csdn.net/qq_43479892/article/details/125532424