2014-02-10 37 views
4

Web Audio API看起来很酷,但我真的很想用它来处理音频文件,然后再将它们保存为wav文件,而我并不需要它在他们正在处理时倾听他们。这可能吗?有没有像encodeAudioData()那样把音频缓冲区变回ArrayBuffer,所以我可以把它放回到一个文件中?非实时使用Web Audio API

编辑: recorderJS似乎几乎完美,但它只输出16位wavs。有什么机会可以做专业音频格式(24位或32位浮点)?

+0

你的用例究竟是什么?尽管大量的非JS工具和你的描述听起来像是没有必要使用Web Audio API,但声音操作是可能的。如果你真的想使用它,你可能想运行JS serverside,这意味着'Node.js'。 – Dan

+0

我想根据rms进行一些调整,并对wav文件进行一些卷积。我只需要进行一次这个处理,但是这些文件将被播放很多次。我正在进入内存限制与PHP服务器端做这个东西,所以我想做它的客户端。网络音频api已经可以完成大部分工作,如果我能够相对容易地处理这些处理,它将很好地完成这项工作。 –

+0

把这个委托给客户听起来并不明智。对于初学者来说,如果你这样做,那么客户端需要将修改后的声音文件发送回服务器(因为你只需要一次)。如果你允许客户发回文件,你必须担心安全问题。 [请查看PHP帮助处理声音。](http://stackoverflow.com/a/9140566/866618) – Dan

回答

0

在Web Audio API规范中,有Offline Context,它完全符合您的需求。

OfflineAudioContext是一种特定类型的AudioContext,用于渲染/混合(可能)比实时更快。它不呈现给音频硬件,而是尽可能快地呈现,调用完成事件处理程序,并将结果作为AudioBuffer提供。

+0

我看着这个,它在我的一半。我也很想将我做的处理保存到一个新的wav文件中。看来我将不得不修改recorderJS来输出其他位深度,或者只是编写我自己的代码。 –