Joh*_*ard 8 javascript google-chrome web-audio-api
我正在开发一个Web应用程序,用户可以对音频样本进行排序,并可选择将效果应用于他们使用Web Audio API创建的音乐模式.模式存储为JSON数据,我想对每个模式服务器端的渲染音频进行一些分析.据我所知,这给我留下了两个选择:
在服务器端运行我自己的渲染代码,尝试尽可能忠实于浏览器内渲染.也许我甚至可以从Chromium项目中取出Web Audio代码并对其进行修改,但这似乎可能需要做很多工作.
渲染客户端,希望比实时更快,然后将渲染的音频发送到服务器.这是理想的(和DRY),因为只有一个引擎用于模式渲染.
这个问题引导我到Chromium存储库中的这个代码示例,这似乎表明离线处理是可能的.诀窍似乎是webkitAudioContext用一些参数构造一个(通常使用零参数构造函数).以下是我对参数含义的猜测:
new webkitAudioContext(2, // channels
10 * 44100, // length in samples
44100); // sample rate
Run Code Online (Sandbox Code Playgroud)
我稍微调整了样本,并在Windows,Mac和Linux上的Chrome 23.0.1271.91中进行了测试. 这是实例和结果(打开Dev Tools Javascript控制台以查看发生的情况):
webkitAudioContext我上面描述的构造函数导致Windows和Linux上的异常.
离线渲染对于我正在尝试做的事情来说是完美的,但我无法在任何地方找到文档,并且支持不太理想.有没有人有关于此的更多信息?我是否应该尽快在Windows和/或Linux中期待对此的支持,或者我应该期待支持在Mac上很快消失?
几个月前我对此做了一些研究,audioContext 上有一个 startRendering 函数,但 Google 人员告诉我,当时的实现是由于更改而导致的。我认为这还没有发生,而且它仍然不是官方文档的一部分,所以我会小心构建一个依赖它的应用程序。
当前的实现也不会比实时渲染速度更快(在非常轻的应用程序中可能会稍微快一些),有时甚至比实时渲染速度慢。
如果您需要非实时渲染,最好的选择是深入实践并实现网络音频服务器端。如果您可以接受实时渲染,https://github.com/mattdiamond/Recorderjs上有一个项目可能会让您感兴趣。
请注意,我自己不是谷歌用户,我被告知的并不是任何形式的承诺。