CEF源码下载及集成完整多媒体功能

本文详细介绍了CEF(Chromium Embedded Framework)的源码下载、编译和打包过程,包括环境准备、下载源码、编译选项设置、创建工程文件、使用Ninja编译以及工程打包。特别强调了如何开启ffmpeg编解码功能以实现完整的多媒体支持。同时,文中提供了应对下载中断和编译错误的解决办法。
摘要由CSDN通过智能技术生成

本文主要参考资料来源官方wiki文档:官方wiki文档

环境准备

1.windows X64环境,win7和win10都可以
2.VS环境,安装VS环境后记得配置SDK系统环境,此处使用VS2017(注意:CEF版本使用的VS版本也不同,具体查看官网CEF对应VS版本)。
3.python环境,切记使用python2,automate-git.py脚本使用的是python2
4.git环境,便于拉取源码
5.稳定的外网条件,下载源码需要外网条件
6.足够的存储内存,源码下载后大概占用四五十G内存,建议100g存储空间

源码下载工作

1.下载源码前先创建工作目录

C:/code/
   automate			<-- 存放CEF构建脚本   
   chromium_git     <-- 存放运行脚本
   depot_tools       <-- 谷歌构建工具

在这里插入图片描述
2.下载CEF构建脚本automate-git.py,存放到C:/code/automate目录下

下载地址:automate-git.py

3.下载谷歌构建工具

可以直接通过链接下载
depot_tools.zip
下载后是个压缩文件,需要解压到文件夹depot_tools,目录一定要是这个,下载后会自动形成git仓库。
也可以通过git仓库拉取到depot_tools文件夹中

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

在这里插入图片描述

4.解压depot_tools.zip到depot_tools文件夹后,需要将C:/code/depot_tools路径设成系统环境变量
在这里插入图片描述
5.进入depot_tools目录下找到update_depot_tools.bat运行更新,脚本能帮下载git和python,以及更新最新谷歌构建工具,详情可以看看基本代码内容
在这里插入图片描述
6.在chromium_git创建update.bat脚本,该脚本可以整合后续所有cmd指令操作。

::如果之前编译过,想重新编译
::set DEPOT_TOOLS_WIN_TOOLCHAIN=0 
::激活 ffmpeg 内部解码器,也可以下载之后激活
set GN_DEFINES=ffmpeg_branding=Chrome proprietary_codecs=true is_official_build=true
set GN_ARGUMENTS=--ide=vs2017 --sln=cef --filters=//cef/*
python ..\automate\automate-git.py --download-dir=c:\code\chromium_git --depot-tools-dir=c:\code\depot_tools --branch=4389 --no-build --no-distrib --force-clean

根据官方文档介绍
1).GN_DEFINES 参数介绍

ffmpeg_branding 和 proprietary_codecs 表示开启部分多媒体编解码支持,后面介绍如果开启支持全部
is_official_build 决定了是否是编译正式版本,指定该参数为 true 基本上都是为了产品发布使用,同时也会在创建解决方案的时候生成带有 sandbox 的解决方案(如 Release_GN_x86_sandbox),而不指定这个参数是没有的。如果你不是为了贡献代码,那默认这个都加上吧。
use_jumbo_build 官方资料默认指定,表示是否启用试验性的jumbo编译,编译过程会加快,但是占用 CPU 和内存(尤其是内存)会剧增。
is_component_build 官方资料默认指定,但我们没有开启,这个参数表示是否启用组件化编译,设置为 true 以后,base、ffmpeg 等等都会被编译为动态库,使用时也是动态链接,编译出来的 cef_sandbox.lib 只有几兆大小,并且你需要复制很多dll 文件到项目目录下才能运行。

2).automate-git.py 参数介绍
可以通过cmd执行automate-git.py –help查看

--branch 表示你要下载的版本代码,CEF 每个版本都有固定的分支
--no-build 表示只下载代码而不编译,这里只为下载代码
--no-distrib 不执行打包项目,这里只为下载代码
--force-clean 如果你曾经执行过这个脚本,可能会出错,则加上这个参数,它执行清理残留文件
--no-update :不更新cef和chromium源码
--no-depot-tools-update : 不更新depot-tools源码
--verbose-build : 开启编译日志,该参数比较重要,编译出错时方便定位问题,相关编译错误见下节
--force-build : 强制编译。在编译失败时,重新运行脚本能重新编译,不加该参数,则会提示out目录已存在
--no-debug-build : 不进行debug版本的编译,默认debug和release一起编译,同理--no-release-build不编译release版本
--force-distrib :强制发布二进制包,如果已经发布过,再次运行脚本会重新生成二进制发布包

在这里插入图片描述
7.执行update.bat即可下载源码

ps:由于网络问题,换到了win10上下载
在这里插入图片描述
下载过程漫长,容易出现中断情况,可以继续运行脚本下载,可以接着上次下载中断位置下载。

这是我下载后的包
在这里插入图片描述

激活ffmpeg编解码功能,开启完整的多媒体功能

ffmpeg_branding 和 proprietary_codecs 能开启部分多媒体编解码支持
开启更多需要去修改 ffmpeg 的头文件
chromium_git\chromium\src\third_party\ffmpeg\chromium\config\Chrome\win\ia32\config.h
修改你要开启的编解码能力宏为 1 即可
在这里插入图片描述
或者找到原有配置宏FFMPEG_CONFIGURATION,在里面增加以下配置:

–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’

在这里插入图片描述

#define CONFIG_SIPR_PARSER设置为1,不然后续编译可能会出现找不到指定变量
在这里插入图片描述

源码编译

1. 创建工程文件

在c:\code\chromium_git\chromium\src\cef\目录下创建create.bat脚本,并写入以下代码:

::is_official_build=true创建release版本,is_component_build=true创建debug版本
set GN_DEFINES=ffmpeg_branding=Chrome proprietary_codecs=true is_official_build=true
set GN_ARGUMENTS=--ide=vs2017 --sln=cef --filters=//cef/*
call cef_create_projects.bat

运行create.bat后,会在chromium_git\chromium\src\out目录下创建Releas_GN_x86目录(因为脚本设置的是is_official_build<release版本>),并在其目录生成ninja和VS工程cef.sln文件。

cd c:\code\chromium_git\chromium\src\cef
create.bat

在这里插入图片描述
可以使用vs打开cef.sln工程文件来编译单个文件,需要64位版本就选择X64版本,32位版本就选择X86,始终用ninja来构建完整的项目。

2.编译 CEF

根据之前create.bat创建的Release 还是 Debug 版本,使用Ninja创建并编译,并多次重复此步骤以在开发时执行增量构建

cd c:\code\chromium_git\chromium\src
ninja -C out\Release_GN_x86 cef

3.编译 sandbox

以下步骤编译具有完整功能的cef_sandbox.lib

cd c:\code\chromium_git\chromium\src
ninja -C out/Release_GN_x86_sandbox cef_sandbox

工程打包

用” Release”替换” Debug”以生成发行版本
–minimal 表示仅发布 Release 版本,不包含 Debug

cd c:\code\chromium_git\chromium\src\cef\tools
./make_distrib.sh --ninja-build --minimal

打包完成后能在 c:\code\chromium_git\chromium\src\cef\binary_distrib 目录下就可以看到打包过的文件了

在这里插入图片描述

测试实例效果

将打包的工程放入之前的Cef项目看能否播放视频

在这里插入图片描述

自编译已集成视频播放功能CEF3.3239版本库 (官方版本编译类似)详解介绍步骤(含编译错误解决)

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
CEF视图插入源码的过程如下: 1. 首先,需要下载和安装CEF库。可从CEF的官方网站上获取。在安装过程中,请确保选择相应的平台和编译器。 2. 完成CEF库的安装后,打开你的源代码项目。将CEF库的路径添加到项目的编译配置中。具体步骤可能因你所使用的IDE而异,通常在项目属性或配置文件中可以找到这些选项。 3. 创建一个新的类或文件来承载CEF视图。这个类将是你在应用程序中使用CEF的接入点。你可以将其命名为"CEFForm"或其他相关的命名。 4. 在CEFForm类中,需要包括CEF库的头文件,并且在类的成员变量中添加一个CEF的View指针,用于在应用程序中显示CEF视图。例如:`CefRefPtr<CefBrowser> browser;` 5. 在CEFForm类的构造函数中,需要调用CEF库的初始化函数。可以使用CefSettings结构体来配置CEF的一些参数。例如:`CefInitialize(settings, nullptr, nullptr, nullptr);` 6. 在CEFForm类的析构函数中,调用CEF库的关闭函数。例如:`CefShutdown();` 7. 在应用程序的主窗口中,创建一个CEFForm类的实例。根据你的应用程序结构,可以选择将视图嵌入到一个窗体控件中,或者作为整个窗口的内容。 8. 调用`CreateBrowser()`函数,通过创建一个CEF浏览器对象并指定URL,以在应用程序中加载网页。例如:`browser = CefBrowserHost::CreateBrowserSync(windowInfo, handler.get(), url, browserSettings, nullptr);` 9. 最后,运行你的应用程序,你将能够看到CEF视图在应用程序窗口中加载和显示网页。 通过上述步骤,你可以将CEF视图插入到你的源码中,并在应用程序中使用CEF来加载和显示网页内容。注意,这只是一个简要的步骤指南,实际操作可能会因具体的应用程序和编程语言而有所不同。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

离歌漠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值