9

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

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

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

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

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

4

6 回答 6

10

Marshall Greenblatt(Chromium Embedded Framework的维护者)在此错误报告中解决了 Chromium 和 CEF 中缺乏对 MP3(和 AAC)的支持(参见注释 #7,复制如下):

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

于 2011-12-04T00:40:13.357 回答
6

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

于 2012-09-10T15:13:28.670 回答
6

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

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

分步说明:

在此处输入图像描述 在此处输入图像描述 a在此处输入图像描述 在此处输入图像描述 a在此处输入图像描述 在此处输入图像描述

于 2016-03-03T12:29:09.870 回答
3

自上次回答以来,启用的选项proprietary codecs(即 H.264 和 MP3)已被移动。

您可以阅读我的答案,其中包含有关如何在启用的情况下编译 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. 并且BranchesAndBuilding在同一个维基
于 2017-08-01T16:58:00.387 回答
1

仅支持 MP3 编解码器 当构建到 Google Chrome 时,请检查chromium 的 Codec Support

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

于 2013-05-06T07:50:27.567 回答
1

我按照 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
于 2016-06-16T15:52:24.287 回答