8

RTP パケットから H264 をデコードできるようにするために、SDP で必要なパラメーターを理解しようとしています。

これはこの質問に関連しています。その答えは少数のケースでしか機能しないためです。

次のコマンドで VLC からストリーミングしています。

vlc -vvv sample_video/big_buck_bunny_480p_h264.mov --sout '#transcode{vcodec=h264,vb=700,fps=20,scale=0.25,acodec=none}:rtp{dst=10.5.110.117,port=5004,ttl=1}'

これにより、ビデオが次のようにトランスコードされます。

  • ビットレート: 700kbps
  • フレームレート: 20/秒
  • 解像度: オリジナルの 25%

レシーバーは、次の SDP ファイルを使用してストリームを正しく受け入れ、解釈します (最初の行を削除します。名前だけです)。

//test.sdp
c=IN IP4 10.5.110.117
m=video 5004 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=640014;sprop-parameter-sets=Z2QAFKzZQ0R+f/zBfMMAQAAAAwBAAAAKI8UKZYA=,aOvssiw=;

実行するコマンド:vlc test.sdp

profile-level-id の状態については、7.2 章のSIP ビデオ プロファイルのベスト プラクティスという名前のドキュメントをここで入手できます。

プロファイル レベル ID

RFC 6184 では (すべてのパラメーターと同様に) オプションとして指定されていますが、「profile-level-id」パラメーターはコーデックのセットアップの基本であり、さらにパラメーターを指定するためにも必要です。したがって、すべての実装では、このパラメータを SDP に含める必要があり、受信時に解釈する必要があります。含まれていない場合、RFC 6184 で指定されているように、デフォルト値は 420010 です。

同じドキュメントには、sprop-parameter-setsについて次のように記載されています。

sprop-parameter-sets

H.264 では、シーケンスおよび画像情報を帯域内および帯域外の両方で送信できます。SIP ビデオ実装は、H.323 および既存の SIP ビデオ実装の圧倒的多数で普及しているモデルに準拠して、この情報を帯域内で通知する必要があるため、このパラメータを含めないでください。

問題1

が削除された場合でも、ビデオはレシーバーで正しく解釈さprofile-level-idれます。

//test.sdp
c=IN IP4 10.5.110.117
m=video 5004 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 sprop-parameter-sets=Z2QAFKzZQ0R+f/zBfMMAQAAAAwBAAAAKI8UKZYA=,aOvssiw=;

がないと機能しませsprop-parameter-sets

問題 2

私はさまざまなRTCP、SIP、およびSAPを有線接続してきましたが、多くの場合、SDPに は..sprop-parameter-sets

質問

  • 2 つのパラメータの意味と違いを説明してください
  • 上記の質問への回答に基づいて、問題で発生するコントラストを説明してください
4

1 に答える 1

13

意味と主な違い:

の定義でわかるprofile-level-idように、デフォルトがあるため、シグナリング ネゴシエーションでは省略できます。このパラメーターに含まれる文字列は16 進形式で、データの送信に使用されるプロファイル、制約、およびレベルについてデコーダーに通知する3 バイトがあります。この設定では、ビットレート、解像度、パケットの種類などのいくつかのパラメーターを定義します...

パラメータsprop-parameter-setsは、送信するデータをデコードするためのキーと見なすことができます。これには、データのエンコードに使用されるバイトが含まれているため、レシーバーと共有して、ビデオ パケットをデコードできるようにします。シグナリングから省略することもできますが、デコーダーにとって必須であるため、インバンドで送信することもできます。したがって、sdp でそれらを省略した場合は、パケットで送信する必要があります。受信機は、この情報を受信した後にのみデータをデコードできます。

問題 1:

前に述べたようにprofile-level-id、デフォルトが使用されるため、省略できます420010。唯一の違いは、設定が異なることであり、おそらくビデオの品質が影響を受けます。たとえば、デフォルトの 42 は Constrained Baseline Profile (CBP) を参照しており、SDP の初期値の 64 は High Profile (HiP) を参照しています。

が欠落している場合、sprop-parameter-setsおそらく vlc がそのデータのインバンド送信をサポートしていないため、ビデオが機能しません。上で説明したように、これは必須です。

問題 2:

多くの SIP 実装ではsprop-parameter-sets、インバンドでの送信がサポートされており、それがキャプチャされます。Wireshark で h264 パケットを確認すると、一部のパケットでこの値の説明が表示されます。

于 2013-12-18T11:27:24.860 に答える