複数のオーディオ ファイルのストリーミングと同期を必要とする Web アプリケーションに取り組んでいます。このために、オーディオのタイミングが重要であるため、HTML5 オーディオ タグよりもWeb Audio APIを使用しています。
現在、FFMPEG のセグメンテーション機能を使用して、オーディオ ファイルを小さなチャンクにエンコードおよびセグメント化しています。それらをセグメント化する理由は、最初からではなく、ファイルの途中からストリーミングを開始できるようにするためです (そうでなければ、ここに示すように、UNIX 分割を使用してファイルを分割しただけです。問題は、オーディオ セグメントが元に戻ると、セグメント間にオーディオ ポップが発生します。
.wav ファイルで PCM エンコーディング (pcm_s24le) を使用してセグメントをエンコードすると、再生がシームレスになり、エンコーダーがファイルの先頭または末尾にパディングしていると思われます。さまざまなオーディオ ファイルを扱うので、.wav を使用すると帯域幅が非常に多く必要になります。
この問題に対する次の解決策のいずれかを探しています。
- エンコードされたオーディオ ファイルをシームレスにセグメント化するにはどうすればよいですか?
- ffmpeg (または別のユーティリティ) を使用してエンコーダーにオーディオ フレームをパディングさせないようにするにはどうすればよいですか?
- オーディオ タグを使用せずに (任意のトラック時間で開始して) オーディオをストリーミングするより良い方法は何ですか?
システムインフォメーション
- カスタム node.js サーバー
- オーディオ ファイルのアップロード時に、node.js はデータを ffmpeg のエンコーダーにパイプします。
- HTML5 Web Audio API でサポートされているエンコーディングを使用する必要があります
- サーバーは、WebSockets ソケットを介して一度に 1 つのオーディオ チャンクを送信します
前もって感謝します。できるだけ明確にしようとしましたが、明確化が必要な場合は喜んで提供します。