音声およびビデオライブブロードキャストシステムのWebRTCにおけるプロトコルUDP、TCP、RTP、RTCP

1.UDP/TCP

  • リアルタイム インタラクティブ ライブ ブロードキャスト システムを自分で開発するように頼まれた場合、ネットワーク伝送プロトコルを選択するとき、UDP プロトコルと TCP プロトコルのどちらを使用しますか?

  • TCP を使用するとどうなりますか? 極端なネットワーク条件では、TCP は伝送の信頼性を確保するために情報を繰り返し再送信します。

  • TCP プロトコルでは、再送信が多すぎることを避けるために、タイマーのタイムアウト時間は 2 ずつ指数関数的に増加します。つまり、最初に設定されたタイムアウト時間が 1 秒であると仮定すると、次に設定されるタイムアウト時間は 2 秒になります。 2 回目は 2 秒、3 回目は 4 秒、7 回目は 64 秒です。7 回目でもタイムアウトになる場合は、TCP 接続が切断されますが、このような長時間の遅延では、リアルタイム インタラクティブ ライブ ブロードキャスト システムでは到底受け入れられません。

  • したがって、オンライン ライブ ブロードキャスト システムを構築する場合は、UDP プロトコルを選択する必要があります。

2.RTPプロトコル

  • リアルタイム インタラクティブ ライブ ブロードキャスト システムがオーディオとビデオのデータ ストリームを送信するとき、オーディオとビデオのデータ ストリームを UDP に直接渡して送信するのではなく、まずオーディオとビデオのデータに RTP ヘッダーを追加します。送信のために UDP に渡します。

  • 送信される映像データの量が多すぎるため、1フレームを送信するのに数十のパケットが必要になる場合があり、受信側にデータを送信する際には、その数十のパケットを組み立てて完全な画像に戻す必要があります。

  • RTPプロトコルは、ドッキングエンドがデータを組み立てた後に順序が崩れないように存在しますが、考えてみましょう、組み立て中に順序がめちゃくちゃになった場合、組み立てられた画像は送信された画像のままでしょうか?

  • RTP プロトコルは非常にシンプルなので、ここで RTP について簡単に説明します。

  • シーケンス番号:パケットのシーケンスを記録するために使用されるシーケンス番号

  • タイムスタンプ:タイムスタンプ。同じフレームの異なるフラグメントのタイムスタンプは同じです。フレームごとにタイムスタンプが異なる

  • PT: Payload Type、データのペイロード タイプ。オーディオストリームの PT 値はビデオの PT 値とは異なるため、このパケットにどのようなデータが格納されているかを知ることができます。

  • SSRC:共有メディア ストリームのソース。グローバルに一意です。異なる SSRC は異なる共有ソースを識別します。

  • CC: CSRC の数

  • CSRC:共有ソース。通常、ミキシングまたはスクリーン ミキシングに使用されます。

  • X: RTP 拡張ヘッダー マークこの位置が 1 の場合、この RTP パケットには拡張ヘッダーもあることを意味します。

  • M: MARK ビットを表し、ビデオ フレーム境界を定義するために使用されます。

  • P:パディングビット

    3.RTPの場合

  • ネットワーク上で以下のような音声・映像データを受信した場合

  • PT=80 がビデオデータ、PT=100 がオーディオデータであると仮定します。

  • 上記のルールに従って、データを組み立てることは簡単ですか?

  • {V=2,P=0,X=0,CC=0,M=0,PT:100,seq:14,ts:123456789,ssrc=888},
    {V=2,P=0,X=0,CC=0,M=0,PT:80,seq:14,ts:123456789,ssrc=2345},
    {V=2,P=0,X=0,CC=0,M=0,PT:100,seq:15,ts:123456789,ssrc=888},
    {V=2,P=0,X=0,CC=0,M=0,PT:80,seq:15,ts:123456789,ssrc=2345},
    {V=2,P=0,X=0,CC=0,M=0,PT:100,seq:16,ts:123456789,ssrc=888},
    {V=2,P=0,X=0,CC=0,M=0,PT:80,seq:16,ts:123456789,ssrc=2345}

    4. RTCPプロトコル

  • RTP パケットを使用してデータを送信すると、パケットの損失、順序の乱れ、ジッターなどの問題が必然的に発生します。

  • 例:ネットワーク回線品質の問題による高いパケットロス率、帯域幅を超える送信データの負荷によるパケットロスなど。

  • これらの問題に対処する前に、WebRTC はまず各エンドに自身のネットワーク品質を知らせる必要があり、これが RTCP の役割です。

  • RTCP には 2 つの最も重要なメッセージがあります:RR(Reciever Report)SR(Sender Report)

  • これら 2 つのメッセージの交換を通じて、各エンドは自身のネットワークの品質を認識します。

  • メッセージ プロトコルとフィールドの意味は次のとおりです。

  • V=2:メッセージのバージョンを指します。

  • P:パディング ビットを示します。このビットが 1 の場合、RTCP メッセージの最後にパディング バイトが存在します。

  • RC:正式名は Report Count で、RTCP メッセージで受信したメッセージ ブロックの数を指します。

  • PT=200:ペイロード タイプ、つまり SR の値は 200

  • ヘッダー:その一部は、SR または RR など、メッセージのタイプを識別するために使用されます。

  • 送信者情報:その一部は、送信者が送信したパケットの数を示すために使用されます。

  • レポート ブロック:送信者が受信者として機能するときに、各 SSRC からパケットを受信することを部分的に示します。

おすすめ

転載: blog.csdn.net/xiehuanbin/article/details/133273094