オンラインで udp を介してライブ オーディオをストリーミングするアプリケーションを構築しており、レイテンシを最小限に抑えたいと考えています。オーディオは生成されたまま送信されます。つまり、1 秒間のオーディオを生成するのに 1 秒かかります。オーディオ レートよりも速く送信することはできません。
私の最初のアイデアは、圧縮されたオーディオの小さなパケットを送信して、クライアントができるだけ早く再生を開始できるようにすることでした。Opus コーデックを使用すると、5 ミリ秒 (最小値は 2.5 ミリ秒) のオーディオのパケットを送信できるはずです。これは、ユーザーがすぐに再生を開始できることを意味します。たとえば、2 つのパケットが配信された後です。
ただし、このような小さなパケット サイズを使用すると、帯域幅のオーバーヘッドが大きくなります。オーディオの各 5ms パケットが 35 バイトで、ip ヘッダーと udp ヘッダーが合計 28 バイトを構成するとします。これは大量の余分なデータです。
私の質問は、より大きなパケットサイズでライブオーディオを送信する方法はありますか? たとえば、アプリケーションがデータの生成中にデータ (部分的な udp パケット) の送信を開始することは可能ですか? それとも、パケットのペイロード全体が生成されるまで待機する必要がありますか? (バイト単位の長さは事前にわかっています)。
その場合、より大きなパケットを使用できますが、データのストリーミングをさらに早く開始できます。
それとも、ネットワークのジッタが大きすぎて、とにかく 5 ミリ秒をはるかに超えてバッファリングする必要があるのでしょうか?