提问人:noober 提问时间:11/7/2011 最后编辑:Luboš Tureknoober 更新时间:8/2/2017 访问量:17639
Chromium Embedded Framework MP3 支持
Chromium Embedded Framework MP3 support
问:
我已经下载了适用于 Windows 的 Chromium Embedded Framework r306 并构建了它。不幸的是,它表明它不支持 mp3:
<script>
var a = document.createElement("audio");
document.write(a.canPlayType('audio/mpeg'));
</script>
输出是空的,当我尝试打开 mp3 文件时,它无法播放(ogg 是可播放的)。
同时,谷歌浏览器写了“也许”(它实际上在播放)。
如何在 CEF 中添加对 MP3 的支持?
答:
Marshall Greenblatt(Chromium 嵌入式框架的维护者)在此错误报告中解决了 Chromium 和 CEF 中缺乏对 MP3(和 AAC)的支持的问题(请参阅下面复制的评论 #7):
MP3 和 AAC 等编解码器包含在 Google Chrome 版本中,但不包括 Chromium 版本。这是因为这些格式不开放,需要许可。在没有许可协议的情况下将这些编解码器与应用程序一起分发可能会违反某些国家/地区的法律。如果合适,您应该与律师讨论。
评论
有一种方法可以在 CEF 中启用 MP3 支持,但您必须修改源代码分发中的 cef.gypi,重新生成 Visual Studio 项目并重新生成。
详细的构建说明:
https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding
启用专有编解码器支持:
http://code.google.com/p/chromiumembedded/issues/detail?id=371
将 'proprietary_codecs': 1 添加到 cef.gypi 配置中,以便根据 net/base/mime_util.cc 的要求定义USE_PROPRIETARY_CODECS。
您还需要正确构建 avcodec、avformat 和 avutil DLL。 幸运的是,您可以从 Google Chrome 本身的安装目录 ($User/AppData/Local/Google/Chrome/$Version) 获取这些内容。
评论
dll
仅支持 MP3 编解码器 在构建到 Google Chrome 时,请查看 chromium 的编解码器支持。
在客户端,兼容的方式可能是 Flash,请查看谷歌翻译的代码。
注意:在继续之前,请考虑法律问题
有一种方法可以在 CEF 中启用 MP3 支持,但您必须修改源代码分发中的 cef.gypi,重新生成 Visual Studio 项目并重新生成。
分步说明:
评论
我按照 null1941 答案中的步骤操作,它们效果很好,除了一些与修改 build.ps1 脚本有关的警告
step 16 e. search for any instances of 3.y.z and replace them with the current version you are building (from the folder name containing the builds ex. 3.2272.32.gbda8dc7).
in function DownloadNuget it is trying to see if you have nuget in a specific place and if it isn't there it tries to go get it. Problem is DownloadFile would fail if the save directory didn't already exist. so you can manualy create or add this to the function:
$Nuget_dir = Join-Path $env:LOCALAPPDATA .\nuget
if(-not (Test-Path $Nuget_dir))
{
mkdir $Nuget_dir
}
change line: "Copy-Item $Cef64\include $CefInclude -Recurse | Out-Null" to use $Cef32 if you don't have 64bit cef folders
自上次回答以来,启用选项(即 H.264 和 MP3)已移动。proprietary codecs
您可以阅读我的回答,其中包含有关如何在启用的情况下编译 CEF 的所有详细信息proprietary codecs
魔术现在发生在这里:
set GN_DEFINES=is_official_build=true proprietary_codecs=true ffmpeg_branding=Chrome
您应该更新/创建 2 个批处理文件(如此处所示):
c:\code\chromium_git\update.bat:
set CEF_USE_GN=1
set GN_DEFINES=is_official_build=true proprietary_codecs=true ffmpeg_branding=Chrome
set GN_ARGUMENTS=--ide=vs2015 --sln=cef --filters=//cef/*
python ..\automate\automate-git.py --download-dir=C:\code\chromium_git --depot-tools-dir=C:\code\depot_tools --no-distrib --no-build
c:\code\chromium_git\chromium\src\cef\create.bat:
set CEF_USE_GN=1
set GN_DEFINES=is_win_fastlink=true proprietary_codecs=true ffmpeg_branding=Chrome
set GN_ARGUMENTS=--ide=vs2015 --sln=cef --filters=//cef/*
call cef_create_projects.bat
有 2 篇 wiki 文章解释了如何构建 CEF/Chromium:
- https://bitbucket.org/chromiumembedded/cef/wiki/MasterBuildQuickStart.md
- 并在同一个 wiki 中
BranchesAndBuilding
评论