ブラウザで (Chrome を使用して) ストリーミング オーディオを再生する際に問題が発生しています。
一部のポートのudpでオーディオ(インターネットラジオなど)をストリーミングするプロセスがあります。avconv( avconv -y -i SOMEURL -f alaw udp://localhost:PORT
)です。このオーディオ ストリームを受信し、WebSocket 経由で接続された複数のクライアントに転送する NodeJs サーバーがあります。NodeJs が受信するオーディオ ストリームは、0 から 255 までの数値の配列であるバッファーにラップされます。データは問題なくブラウザーに送信され、AudioContext を使用してブラウザーでオーディオ ストリームを再生します (コードAudioStreamer に基づいています - https://github.com/agektmr/AudioStreamer )。
最初は、この時点で得られたのは静的なものだけでした。AudioStreamer コードを調べたところ、オーディオ ストリーム データは -1 から 1 の範囲である必要があることがわかりました。この知識をもとに、バッファ内の各値を次の式で変更してみましたx = (x/128) - 1
。何が起こるかを確認するためだけに行ったところ、驚くべきことに、雑音が少し軽減されました。音声が音声の場合は、歌や言葉のメロディーを聞き分けることさえできました。しかし、それでも非常に悪く、多くの静的であるため、これは明らかに解決策ではありませんが、ランダムなデータだけでなく、Websocket を介して実際にオーディオ ストリームを受信していることを示しています。
問題は、私たちが何を間違っているのかということです。使用すべきコーデック/フォーマットはありますか? もちろん、すべてのコード (avconv、NodeJ、およびクライアント側) は自由に変更できます。必要に応じて別のブラウザーを使用することもできますが、ここでは問題ではないと思います。私たちが知っている唯一のことは、WebSocket を介して機能するためにこれが本当に必要だということです。
avconv と NodeJs を実行している OS は Ubuntu (さまざまなバージョン 10-13) です。
何か案は?すべての助けをいただければ幸いです。
ありがとう!トーマス