Discuz! Board

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

windows平台编译CEF支持MP3、MP4

[复制链接]

1228

主题

1997

帖子

7582

积分

认证用户组

Rank: 5Rank: 5

积分
7582
跳转到指定楼层
楼主
发表于 2022-9-29 09:55:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
https://www.jianshu.com/p/d544fc2a2c67
CEF默认不支持mp3、mp4,需要的话得自己编译,记录在window下编译过程中遇到的各种坑
CEF基础版如果不需要mp3、mp4的支持,可以直接下载构建好的版本,下载链接戳这里
新版本是cef和chromium在一个压缩包里,老版本是分开的。



CEF-Build-On-Windows-2021-07-24-22-31-09

准备工作google的项目,都要配置好代理,想直接下是不行的。找个路径放相关的文件,比如E:\cef。
时区设置设置系统区域为英语(美国)。(控制面板-区域-管理-更改系统区域设置-英语(美国)),设置完需要重启。防止编译一些字符集的报错。
代理设置不知道是啥的话后面也不用搞了,不过就算设置了也还是慢,最好还是云服务器编译。
V2ray代理设置
  • 路由设置->勾选启用高级功能
  • 右下角小图标选择全局
git clone 代理配置//加大buffergit config --global http.postBuffer 524288000//设置代理,ssr通常是1080,v2ray是10809,客户端底部有显示git config --global http.proxy http://127.0.0.1:10809 && git config --global https.proxy https://127.0.0.1:10809//取消代理(上面端口设置错了的话)git config --global --unset http.proxy && git config --global --unset https.proxy
windows设置CMD代理netshnetsh>winhttpnetsh winhttp>netsh winhttp>set proxy 127.0.0.1:10809      //设置代理netsh winhttp>show proxy                     //查看代理netsh winhttp>reset proxy                    //重置代理,下载完了不想要代理才用
设置Boto代理[Boto]proxy = 127.0.0.1proxy_port = 10809
创建.boto文件,在命令行设置环境变量,set NO_AUTH_BOTO_CONFIG=E:\cef\.boto
构建脚本构建脚本会执行下载和编译,通过指定参数达到想要的编译效果,下载链接。下载好后放到E:\cef目录下。这是个python脚本,python也需要装下,编译旧版本需要安装python2,新版本需要安装python3,在执行脚本的时候环境不对会给出提示。
参数说明automate-git.py 的参数可以手动执行 python automate-git.py --help 来查看,下面列举大部分情况都会用的。
  • --branch 表示你要下载和编译哪个版本的代码,Chromium和CEF的版本对应关系可以看这个链接
  • --no-build 表示只下载代码而不编译
  • --no-distrib 不执行打包项目,这里只为下载代码,我们还要修改支持多媒体的参数,所以不进行打包
  • --force-clean 如果你曾经执行过这个脚本,可能会出错,则加上这个参数,它执行清理残留文件(你也可以手动在 chromium 源码目录执行 git clean -xdf 来清理目录中的多余内容)。
  • --download-dir 下载的源码目录
  • --checkout 如果你不想编译某个分支的最新版代码,可以指定具体的提交,只用设置CEF的提交就行,Chromium会跟着切换
  • --force-clean-deps 编译老版本的时候会碰到下载第三方依赖库失败,碰到了可以加下这个
  • --no-depot-tools-update 如果工具包之前下载过了可以加上,就不升级工具包了,第一次下载不加
  • --no-update 编译时用,不更新直接编译
  • --no-debug-build 编译时用,不编译debug只要release
  • --build-log-file 生成编译的日志文件,出错可以看下
  • --x64-build 构建64位的版本
准备好后目录如下:




CEF-Build-On-Windows-2021-07-24-22-53-01

CEF源码下载下载前需要设置下环境变量,也可以直接在命令行输入就行。
set CEF_USE_GN=1set GN_DEFINES=is_official_build=trueset GYP_DEFINES=buildtype=Officialset GYP_MSVS_VERSION=2017set CEF_ARCHIVE_FORMAT=tar.bz2@REM 第一次源码下载不加--no-depot-tools-update,会先包工具包下下来python automate-git.py --download-dir=e:\cef\source --branch=3626 --checkout=90eb8cc --no-build --no-distrib --force-clean --force-clean-deps --no-depot-tools-update
有一个注意点,depot-tools内部有一些bat和python脚本,需要把它的路径设置到环境变量的PATH里,不然下载会报错
下载错误处理python缺库


CEF-Build-On-Windows-2021-07-24-23-19-10


看到脚本自己去下了python库的.whl,但是安装没成功,我就手动装了下:
pip install numpy=1.12.1pip install opencv_python=3.2.0.7pip install psutil=5.2.2
No module named win32fileTraceback (most recent call last):
File "../../build/toolchain/win/tool_wrapper.py", line 29, in <module>
import win32file    # pylint: disable=import-error
ImportError: No module named win32file
修改方法:在错误日志里指定的目录安装pywin32,参考链接
cd E:\cef\source\depot_tools\bootstrap-2@3_8_10_chromium_20_bin\python\binpip -m install pywin32
提示subprocesss返回值非0


CEF-Build-On-Windows-2021-07-24-23-23-12

把depot-tools的路径设置到环境变量的PATH里:
set PATH=E:\cef\source\depot_tools;%PATH%;
AttributeError: 'module' object has no attribute 'CheckCallAndFilterAndHeader'老版本编译才有的问题,需要修改代码,E:\cef\source\cef\tools\gclient_util.py,参考链接
命令行出问题的话,脚本就给个提示返回值非0,没把错误打印出来就很坑...把显示的命令行在终端直接敲一下就能看到具体错误了。
踩完这一路的坑,就可以开始编译了...
CEF源码编译编译需要设置的参数最重要的就是添加MP3、MP4支持 使用此条指令,不加白折腾了。还有就是指定VS的路径,编译报错了提示少什么路径可以再加。
set CEF_USE_GN=1set GN_DEFINES=is_official_build=trueset GYP_DEFINES=buildtype=Officialset GYP_MSVS_VERSION=2017set CEF_ARCHIVE_FORMAT=tar.bz2@REM 添加MP3、MP4支持 使用此条指令set GN_DEFINES=is_official_build=true proprietary_codecs=true ffmpeg_branding=Chrome set GYP_GENERATORS=ninja,msvs-ninjaset GN_ARGUMENTS=--ide=vs2017 --sln=cef --filters=//cef/*@REM VS2017安装在默认目录,但任然需要下面设置,可能是由于VS2015和VS2017同时安装,路径根据自己的安装目录和版本确定set WIN_CUSTOM_TOOLCHAIN=1set CEF_VCVARS=noneset GYP_MSVS_OVERRIDE_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2017\Communityset SDK_ROOT=C:\Program Files (x86)\Windows Kits\10@REM 编译64位调用VS的脚本有问题,环境变量还是去找的32位路径,下面改手动设置路径@REM call "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Auxiliary/Build/vcvarsall.bat" x64@REM set INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\shared;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\atlmfc\include;%INCLUDE%@REM set PATH=C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x86;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Redist\MSVC\14.16.27012\x64\Microsoft.VC141.CRT;%PATH%@REM set LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\um\x86;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\ucrt\x86;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\x86;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\atlmfc\lib\x86;%LIB%@REM set VS_CRT_ROOT=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\crtset INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\shared;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\atlmfc\include;%INCLUDE%set LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\ucrt\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\atlmfc\lib\x64;%LIB%set VS_CRT_ROOT=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\crtset PATH=C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Redist\MSVC\14.16.27012\x64\Microsoft.VC141.CRT;%PATH%python automate-git.py --download-dir=e:\cef\source --branch=3626 --checkout=90eb8cc --no-update --no-debug-build --build-log-file --verbose-build --force-distrib --force-build --x64-build
输出文件在目录E:\cef\source\chromium\src\cef\binary_distrib下,还把压缩包也生成了。
生成的文件里没有libcef_dll_wrapper.lib,需要的话拿cmake生成一个vs工程再编译就行,什么配置都不用改,就略过了。



CEF-Build-On-Windows-2021-07-25-00-22-37

编后感下载和编译环节一定要把参数都搞好,下载搞了2天,编译也搞了2天,心累...一开始直接编译了一个32位的,后面才反应过来要编译一个64位的,编译的时候CPU直接100%,其他活都不用干了。
等搞完发现指定分支提交和项目中使用的版本还不一样,又要重新checkout再编译Orz
最后发现还是搞个windows云服务器省事,环境直接选美国,代理也不用设置,我本地代理也只能3M/S,服务器下载30M/S,服务器编译还不影响本地工作( ̄▽ ̄)"



作者:玖零儛
链接:https://www.jianshu.com/p/d544fc2a2c67
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 13:26 , Processed in 0.056020 second(s), 19 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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