我想弄清楚如何在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