8

問題

私は、ユーザーがオーディオサンプルをシーケンスし、オプションでWebAudioAPIを使用して作成した音楽パターンにエフェクトを適用できるWebアプリケーションに取り組んでいます。パターンはJSONデータとして保存されているので、サーバー側の各パターンのレンダリングされたオーディオを分析したいと思います。私が見る限り、これには2つの選択肢があります。

  1. サーバー側で独自のレンダリングコードを実行し、ブラウザ内のレンダリングにできるだけ忠実にしようとします。ChromiumプロジェクトからWebAudioコードを取り出して変更することもできるかもしれませんが、これは潜在的に多くの作業のようです。

  2. クライアント側でレンダリングを実行し、できればリアルタイムよりも高速にしてから、レンダリングされたオーディオをサーバーに送信します。パターンレンダリングに使用されるエンジンは1つしかないため、これは理想的(およびDRY)です。

考えられる解決策

この質問から、Chromiumリポジトリのこのコードサンプルにたどり着きました。これは、オフライン処理が可能であることを示しているようです。トリックはwebkitAudioContext、いくつかの引数を使用してaを作成することのようです(通常、引数なしのコンストラクターが使用されます)。以下は、パラメータの意味についての私の推測です。

new webkitAudioContext(2,          // channels
                       10 * 44100, // length in samples
                       44100);     // sample rate

サンプルを少し調整し、Windows、Mac、LinuxのChrome23.0.1271.91でテストしました。 ライブの例と結果は次のとおりです(Dev Tools Javascript Consoleを開いて、何が起こっているかを確認してください)。

  • Mac-動作します!!
  • Windows- FAIL -SYNTAX_ERR:DOM例外12
  • Linux- FAIL -SYNTAX_ERR:DOM例外12

上で説明したwebkitAudioContextコンストラクターは、WindowsとLinuxで例外を引き起こします。

私の質問

オフラインレンダリングは私がやろうとしていることに最適ですが、どこにもドキュメントが見つからず、サポートは理想的とは言えません。誰かがこれについてもっと情報を持っていますか?WindowsやLinuxでこれがすぐにサポートされることを期待する必要がありますか、それともMacでサポートがすぐになくなることを期待する必要がありますか?

4

1 に答える 1

3

数か月前にこれについて調査しました。audioContextにstartRendering関数がありますが、Googleの人々から、実装は変更によるものであると言われました。これはまだ起こっていないと思いますし、まだ公式ドキュメントの一部ではないので、それに依存するアプリを慎重に作成します。

現在の実装では、リアルタイムよりも高速にレンダリングされることはなく(非常に軽いアプリケーションではわずかにレンダリングされる可能性があります)、リアルタイムよりも遅くなることもあります。

非リアルタイムレンダリングが必要な場合は、最善の策は、溝を掘り、Webオーディオサーバー側を実装することです。リアルタイムレンダリングを使用できる場合は、https://github.com/mattdiamond/Recorderjsに興味深いプロジェクトがあります。

私自身はグーグルではないことに注意してください、そして私が言われたことは決して約束ではありませんでした。

于 2012-11-28T08:40:41.533 に答える