2012-06-07 4 views
6

現在、私はHTML5オーディオを使用するプロジェクトに取り組んでおり、iOSデバイスの制限(主に複数のオーディオチャンネルの制限)に問題があります。Node.jsを使用してオーディオをhtml5オーディオタグにストリームし、iOSの制限をバイパスします

node.jsを使用してサーバー側のサウンドを制御することが可能であると考えていました。クライアントは単一のオーディオURLに接続し、ノードサーバーはこの単一のチャンネルを通じてライブサウンドをストリーミングし、すべてのミキシングとトランジションをサーバー上でライブで行います。

技術的に可能ですか?あなたはnode.jsのオーディオを解析し、いくつかのライブミキシングを行うことができますか? 5つ以上の同時クライアントでサーバが爆発すると思いますか?

おかげ

+0

のですか? –

+0

@SamDufelたとえば、一定のバックグラウンドサウンドと他のサウンドをクリックしてアクティブにすることができます。実際には、この特定のプロジェクトに前処理ソリューションを使用するつもりですが、リアルタイム/動的エクスペリエンスのソリューションと考えていました。 –

+0

興味深い...キャッシュの問題のために、それが可能だとは思えません。 –

答えて

4

はい、これは完全に可能ですが、サムが指摘したように、バッファリングが問題です。いくつかのポイントをかけて構築し大幅な遅延があります:

  • は、内部バッファに正しいコーデックと
  • エンコードデータを、生のPCMオーディオをミキシングクライアント
  • から制御コマンドを取得する(チャンクでこれを実行する必要がありますクライアント側
に)
  • オーディオデータを送信
  • バッファリングクライアント側
  • 再生バッファ

    これをすべて追加してください。すぐに作業しても、まだ数秒遅れています。

    このルートに進む場合は、外部アプリケーションが必要です(独自のNode拡張機能を作成する必要があります)。 Soxはおそらくまともな選択肢であり、FFMPEGには多くのコーデックが含まれています。両方をSTDIOで使用できます。

    サーバーの負荷について...これは軽量なプロセスではありませんが、実際にどの程度悪いのかをプロファイルする必要があります。私はあなたがこのようなことを試みる前に、一度にクライアント側で複数のオーディオストリームを再生する他の試みを行うことをお勧めします。

  • +0

    ラメ? @TooTallNateは素晴らしいラッパーを書きました。https://github.com/TooTallNate/node-lame – EaterOfCode

    +1

    @EaterOfCorpses、LAMEはMP3コーデックです。より広いブラウザサポートが必要な場合は、MP3以上のものをサポートする必要があります。さらに、FFMPEGビルドでは、LAMEを可能なコーデックとしてバンドルすることが多いため、FFMPEGを使用してサポートを強化することもできます。 – Brad

    +0

    音が論理的です。 – EaterOfCode

    0

    このリンクを参照してください。期待どおりに動作しますが、問題は、それが事前にオーディオファイルを処理することによって行うことができない達成するために期待しているどのようなクライアント制御 NodeJS Streaming for Audio/Video with Client Side Control

    https://stackoverflow.com/questions/32012695/nodejs-streaming-for-audio-video-with-client-side-control 
    
    関連する問題