Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 779|回复: 0
打印 上一主题 下一主题

CEF3 源码编译支持H264(mac)

[复制链接]

1228

主题

1997

帖子

7586

积分

认证用户组

Rank: 5Rank: 5

积分
7586
跳转到指定楼层
楼主
发表于 2023-2-23 11:21:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本文记录在macos平台下,编译最新版本 CEF(Chromium Version: 82.0.4085.0)过程 ,包含详细的步骤和常见问题,编译完成后的 CEF 具备完整功能的 cef_sandbox.a 和完整的多媒体功能(如常用的 MP3 MP4 FLV AVI 等)支持。
本次源码编译流程以官方文档为主,中间穿插因环境差异导致问题的解决方案。
环境准备
1、建议编译机器尽可能选择高性能的,以及足够的硬盘空间(100G以上);
2、安装 git 与 python 工具;
3、稳定的V*N,用来下载 chromium 源码,源码大小在 17.5 G 左右,稳定性非常重要;
CEF 源码编译流程
1> 创建工作目录,参考官方wiki:
mkdir ~/codemkdir ~/code/automatemkdir ~/code/chromium_git
这两个目录的用途:
automate:存放官方资料中提供的 automate-git.py 脚本文件
chromium_git:存放 chromium 源码
2> 使用Git下载 depot_tools
cd ~/codegit clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
需要注意的是,depot_tools 压缩包含有的 .git 版本管理信息,最好直接解压到指定目录。
The first surprise caming,是不是发现git访问 chromium 域名失败(原谅我没有留截图),可是明明已经有梯子并且在浏览器可以访问!!why ?因为我们是使用的代理网络(V*N),这时候需要为git也配置代理。
先看下代理网络的端口,这里端口是 1087,配置如下:
// 配置 git 代理git config --global http.proxy http://127.0.0.1:1087git config --global https.proxy http://127.0.0.1:1087// 设置本地代理export http_proxy=http://127.0.0.1:1087export https_proxy=http://127.0.0.1:1087
查看代理设置是否成功 git config --global -l ,再次下载 depot_tools 。
3> 将 depot_tools 所在目录添加到系统的环境变量 PATH
export PATH=/Users/marshall/code/depot_toolsPATH   // 你的depot_tools目录
4> 下载 automate-git.py 脚本到目录 "~/code/automate/automate-git.py"
5> 下载 chromium 源码
// 仅下载 chromium 源码,不执行编译、打包操作python ../automate/automate-git.py --download-dir=/Users/marshall/code/chromium_git --depot-tools-dir=/Users/marshall/code/depot_tools --no-distrib --no-build --x64-build
官方文档是创建 update.sh,这里直接在窗口运行。automate-git.py 参数介绍:
  • --branch 表示要下载哪个版本的代码,CEF 每个版本都有固定的分支,在 CEF 项目页查看分支名称指定即可。
  • --no-build 表示只下载代码而不编译,这里只为下载代码,我们还要修改支持多媒体的参数,所以不进行编译。
  • --no-distrib 不执行打包项目,这里只为下载代码,我们还要修改支持多媒体的参数,所以不进行打包。
  • --force-clean 如果你曾经执行过这个脚本,可能会出错,则加上这个参数,它执行清理残留文件(你也可以手动在 chromium 源码目录执行 git clean -xdf 来清理目录中的多余内容)。
automate-git.py 的其他参数可以手动执行 python automate-git.py --help 来查看。
当我们开始下载后,The second surprise is coming,如下图所示:
curl 下载失败,因为 macos 系统的 curl 不支持 https, 需要我们重新编译 curl 支持 https;这里不再介绍编译过程,百度教程很多。
下载速度取决于你的网络环境,一个稳定的 V*N 的重要性就体现出来了。
6> 激活 ffmpeg 内部解码器及配置
通过修改 ffmpeg 的配置文件,以支持更多的多媒体编解码,修改编解码宏为 1 即可。
配置文件路径:code/chromium_git/chromium/src/third_party/ffmpeg/chromium/config/
Chrome/mac/x64/config.h
这里需要注意的是,#define CONFIG_SIPR_PARSER 1 宏一定要打开,否则会在编译时期报错,找不到指定变量。
// 激活 ffmpeg 内部解码器,macos 注意必须加引号set GN_DEFINES="ffmpeg_branding=Chrome proprietary_codecs=true is_official_build=true"
GN_DEFINES 参数介绍:
  • ffmpeg_branding和proprietary_codecs 表示开启多媒体编解码支持,但默认仅支持一小部分,想要支持更多就是修改上面 ffmpeg 配置。
  • is_official_build 决定了是否是编译正式版本,指定该参数为 true 基本上都是为了产品发布使用,同时也会在创建解决方案的时候生成带有 sandbox 的解决方案(如 Release_GN_x64_sandbox),而不指定这个参数是没有的。
  • use_jumbo_build 官方资料默认指定,表示是否启用试验性的 jumbo 编译,编译过程会加快很多(至少快 1 小时),但是占用 CPU 和内存(尤其是内存)会剧增。
  • is_component_build 官方资料默认指定,但我们没有开启,这个参数表示是否启用组件化编译,设置为 true 以后,base、ffmpeg 等等都会被编译为动态库,使用时也是动态链接,编译出来的 cef_sandbox 只有几兆大小,并且你需要复制很多 dll 文件到项目目录下才能运行。
7> 创建工程文件
cd code/chromium_git/chromium/src/cef// 执行脚本,生成工程文件./cef_create_projects.sh
此时工程文件都创建好了,可以在 code/chromium_git/chromium/src/out 目录下看到这些工程目录:
8> 编译 CEF
根据需要编译指定版本,执行 Release 还是 Debug 版本的编译:
cd ~/code/chromium_git/chromium/srcninja -C out/Release_GN_x64 cef
编译速度视机器性能而定,编译过程中消耗 CPU 和内存比较多,我 macOS Catalina 版本 10.15.3 + 处理器 3.5 GHz 六核Intel Xeon E5 + 内存 48 GB 1866 MHz DDR3,大概耗时10小时左右编译完成。
编译过程中报错不要慌张,执行的命令是增量编译的,修正完错误再执行相同的命令继续编译即可。
9> 编译 sandbox
过程与上面编译 CEF 类似,编译时间很快。
cd ~/code/chromium_git/chromium/srcninja -C out/Release_GN_x64__sandbox cef_sandbox
10> 打包工程
编译完 Release 版本后开始打包操作:
cd ~/code/chromium_git/chromium/src/cef/tools // --minimal 表示仅发布 Release 版本,不包含 Debug./make_distrib.sh --ninja-build --minimal
在 code/chromium_git/chromium/src/cef/binary_distrib 目录下就可以看到打包过的文件了。
11> 验证编解码是否激活
在 CEF 编译完成后,就可以在 cef3/code/chromium_git/chromium/src/out/Release_GN_x64 目录运行示例 demo 进行验证,如下图所示,运行 cefclient 示例加载 http://html5test.com 测试,可以看出已经支持 H264。


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






回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-5-8 23:39 , Processed in 0.090571 second(s), 19 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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