音乐文件编码在Javascript或PHP


Music file encoding in Javascript or PHP

我想弄清楚如何在javascript中编码音频文件。

我想做一些像

播放声音>等待1秒>播放另一个声音>等待1秒

然后把所有这些转换成wav文件,最好是mp3。

有人知道我该怎么做吗?这可能吗?

或者我需要使用php这样的服务器端php语言吗?

如果是,为什么,我该如何使用PHP?

据我所知,你需要在服务器上编码音频文件,所以你需要一些可以用PHP调用的东西。

你最好的选择是FFmpeg之类的东西,它需要安装在服务器上,然后你可以通过命令行调用它。

这里有一篇关于从PHP调用命令行工具的非常有用的文章:

https://trac.ffmpeg.org/wiki/Using%20FFmpeg%20from%20PHP%20scripts

编辑

经过一番挖掘,谷歌有一个JS MP3编码器:libmp3lame.js

这是GIT页面:https://github.com/akrennmair/libmp3lame-js

这是一篇关于使用HTML5和JS录制音频的文章。它确实涵盖了记录,但编码过程一旦完成,就是你感兴趣的部分: http://nusofthq.com/blog/recording-mp3-using-only-html5-and-javascript-recordmp3-js/

您目前最好的选择是使用Aurora.js by Audiocogs进行音频解码。
至于音频编码,请参阅这个SO答案,音频编码不包括在Web audio API中,但请参阅一个可能的库端口和其他可能的有用线索的线程。

在HTML5中使用:

使用readAsDataURL()或其他Base64编码器对音频数据进行Base64编码。

:

var Sound = (function () {
    var df = document.createDocumentFragment();
    return function Sound(src) {
        var snd = new Audio(src);
        df.appendChild(snd); // keep in fragment until finished playing
        snd.addEventListener('ended', function () {df.removeChild(snd);});
        snd.play();
        return snd;
    }
}());
使用:

var snd = Sound("data:audio/wav;base64," + base64string);

值得一提的是,你可以用C或Python编写一个程序来进行编码,然后可以使用Emscripten将其转换为JS。

项目主页:

Emscripten是一个LLVM到JavaScript编译器。它需要LLVM字节码(它可以使用Clang或任何其他语言从C/c++生成(可以转换为LLVM字节码)并将其编译为JavaScript,它可以在web上运行(或任何其他JavaScript)可以运行)。

使用Emscripten,您可以:

  • 将C和c++代码编译成JavaScript和
  • 运行代码的语言,如Python,以及通过编译CPython从C到JavaScript和解释代码在网络上

可能不是你最好的选择,但绝对值得一提。另外,您可能还想看看naïve基准测试:https://github.com/tvararu/asm-benchie