Chromium Embedded Framework MP3 支持

Chromium Embedded Framework MP3 support

提问人:noober 提问时间:11/7/2011 最后编辑:Luboš Tureknoober 更新时间:8/2/2017 访问量:17639

问:

我已经下载了适用于 Windows 的 Chromium Embedded Framework r306 并构建了它。不幸的是,它表明它不支持 mp3:

<script>
var a = document.createElement("audio");
document.write(a.canPlayType('audio/mpeg'));
</script>

输出是空的,当我尝试打开 mp3 文件时,它无法播放(ogg 是可播放的)。

同时,谷歌浏览器写了“也许”(它实际上在播放)。

如何在 CEF 中添加对 MP3 的支持?

MP3 Chromium Chromium 嵌入式 MPEG

评论


答:

10赞 Emerick Rogul 12/4/2011 #1

Marshall Greenblatt(Chromium 嵌入式框架的维护者)在此错误报告中解决了 Chromium 和 CEF 中缺乏对 MP3(和 AAC)的支持的问题(请参阅下面复制的评论 #7):

MP3 和 AAC 等编解码器包含在 Google Chrome 版本中,但不包括 Chromium 版本。这是因为这些格式不开放,需要许可。在没有许可协议的情况下将这些编解码器与应用程序一起分发可能会违反某些国家/地区的法律。如果合适,您应该与律师讨论。

评论

3赞 noober 12/4/2011
它们可以为开发人员提供一种自担风险包含 MP3 支持的方法。
6赞 zah 9/10/2012 #2

有一种方法可以在 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) 获取这些内容。

评论

0赞 Kermia 8/22/2013
你能告诉我如何为 Delphi XE2 编译这个吗?我不知道我到底该怎么做!
1赞 zah 8/22/2013
好吧,这些是重建 CEF 本身的说明。完成此操作后,您将使用 Delphi 中的构建作为标准二进制发行版的直接替代品。
0赞 Kermia 8/22/2013
谢谢,你的意思是我应该只替换文件吗?dll
0赞 Kermia 8/24/2013
你能把编译好的二进制文件发给我吗?
2赞 zah 8/24/2013
对不起,我刚才已经这样做了,但我没有最新的二进制文件。此外,您不应接受来自陌生人的二进制文件:)确实,设置 Chromium 版本相当复杂,但如果您按照链接页面上的说明进行操作,您应该没问题。
1赞 aufula 5/6/2013 #3

仅支持 MP3 编解码器 在构建到 Google Chrome 时,请查看 chromium 的编解码器支持

在客户端,兼容的方式可能是 Flash,请查看谷歌翻译的代码。

6赞 null1941 3/3/2016 #4

注意:在继续之前,请考虑法律问题

有一种方法可以在 CEF 中启用 MP3 支持,但您必须修改源代码分发中的 cef.gypi,重新生成 Visual Studio 项目并重新生成。

分步说明:

enter image description here enter image description here aenter image description here enter image description here aenter image description here enter image description here

评论

1赞 null1941 4/11/2016
还需要安装 CMake :)
0赞 Harry 5/19/2016
我试图按照此说明(Windows 10 / VS 2015)进行操作,但没有喜悦。使 chromium 刚刚返回超级有用的“返回代码 1”错误,我不知道现在该去哪里。按照指示,我具备所有先决条件。完全按照说明进行操作。有没有更简单的选择?
0赞 Harry 5/21/2016
现在我到了 16g 点:“Get-Content:找不到路径 'B:\Downloads\cef-binary-master\cef-binary-master\cef_binary_3.2704.1414.g185cd6c_windows32\libcef_dll\libcef_dll_wrapper.vcxproj',因为它不存在。
0赞 null1941 5/22/2016
你在第 14 步成功了吗?
0赞 Harry 5/26/2016
是的,我得到了非常相似的输出。我搜索了这些文件,发现了类似“make_projects.bat”的东西(我不再有这些文件了)。已生成项目文件,但未放置在正确的文件夹中。我自己移动了它们,但无论如何都不起作用。我又遇到了另一个错误。我将从头开始所有过程,但 Chromium 大约需要 8 个小时来编译,所以我把它作为项目的最后一部分。
1赞 Jared Wilkin 6/16/2016 #5

我按照 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
3赞 Eugen 8/2/2017 #6

自上次回答以来,启用选项(即 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:

  1. https://bitbucket.org/chromiumembedded/cef/wiki/MasterBuildQuickStart.md
  2. 并在同一个 wiki 中BranchesAndBuilding

评论

0赞 robinCTS 8/2/2017
虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。- 来自评论
0赞 Eugen 8/2/2017
我从链接中添加了所有详细信息。由于它是一个 SO 链接,我假设它“永远不会死”......
0赞 yanman1234 8/4/2017
@Eugen 永远不要假设链接最终不会更改或被删除。仅对于 SO,可以创建标记,可以删除问题,并且可以进行外部编辑;所有这些都可能导致您在该链接上的答案与预期不同,或被完全删除。