Chromium Embedded Framework MP3支持

时间:2011-11-07 06:48:34

标签: mp3 chromium chromium-embedded mpeg

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

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

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

Google Chrome同时撰写“可能”(并且实际播放)。

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

6 个答案:

答案 0 :(得分:10)

Marshall Greenblatt(Chromium Embedded Framework的维护者)解决了this bug report中Chromium和CEF中对MP3(和AAC)缺乏支持的问题(见下面复制的评论#7):

  

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

答案 1 :(得分: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。幸运的是,你可以从谷歌浏览器本身的安装目录中获取这些内容($ User / AppData / Local / Google / Chrome / $ Version)。

答案 2 :(得分:6)

注意:请在审议前考虑法律问题

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

分步说明:

enter image description here enter image description here  a enter image description here  enter image description here a enter image description here enter image description here

答案 3 :(得分:2)

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

您可以阅读我的answer,其中包含有关如何使用已启用proprietary codecs

编译CEF的所有详细信息

魔法现在发生在这里:

set GN_DEFINES=is_official_build=true proprietary_codecs=true ffmpeg_branding=Chrome

您应该更新/创建2个批处理文件(找到here):

C:\代码\ 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:\代码\ chromium_git \铬\ 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在同一个wiki中

答案 4 :(得分:1)

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

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

答案 5 :(得分: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