Python用のgstを使用してファイルからh264をストリーミングし、gst.parse_launch(...)を使用してビデオ送信をトリガーしています。ペイロード タイプをデフォルトの 96 から35に変更する必要があります。注: BOSCH は、h264 データを送信するときに 35 を使用していました。
値を 0 ~ 95 に設定すると、Wireshark で rtp パケットを調べると、まだ 96 に設定されていることがわかります。95 を超える値を設定しても受け入れられ、送信される rtp パケットに入ります。
ここでの別の質問は、ほぼ同じことを達成しようとしていますが、受信側でPythonではなくCで実装しています。 Gstreamer、rtspsrc、およびペイロード タイプ
ドキュメントの例: https://gstreamer.freedesktop.org/documentation/tools/gst-launch.htmlネットワーク ストリーミングを参照
基本 rtp ペイロード クラスには次のプロパティがあります 。 .html#GstBaseRTPPayload--pt
派生した h264 ペイロード クラスには pt 範囲の制限があるようです: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good/html/gst-plugins-good-plugins-rtph264pay.html
gst-launch へのコマンド ライン引数は次のようになります。
video/x-h264,width=352,height=288,framerate=(fraction)25/1 ! identity sleep-time=15000 sync=true ! h264パース!rtph264pay config-interval=1 pt=35 ! 列 !udpsink 同期 = true
これを回避する方法についてのアイデアはありますか? pt プロパティ設定関数にパッチを適用する必要がありますか、それとも侵略的でない方法はありますか?
更新: コードのどこで 95 を超える実際の強制が行われているのかを見つけることができないようです。 0) および max(127) であり、他のすべての操作は単なる割り当てであり、最終的に rtp パッケージのヘッダーになります。
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_PT,
g_param_spec_uint ("pt", "payload type",
"The payload type of the packets", 0, 0x7f, DEFAULT_PT,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
デバッグ出力を有効にすると( pay :6) 、ピア pt 96 の使用について話していることに気付きますが、残念ながら、出力は pt=35 (デフォルトの 96 に設定されます) を設定した場合とまったく同じです (実際の # を除く) 対 pt= pt=97 を保持する 97 であるため、要求された値がデフォルト値に置き換えられたことを示すものではありません。
pt=35 を使用:
rtpbasepayload gstrtpbasepayload.c:843:gst_rtp_base_payload_negotiate:<rtph264pay0> using peer pt 96
...
rtpbasepayload gstrtpbasepayload.c:901:gst_rtp_base_payload_negotiate:<rtph264pay0> with peer caps: application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)"Z2QAFKzZQXCH5v/AXEBcBAAUXYwExLQCPFCmWA\=\=\,aOvssiw\=", payload=(int)96, ssrc=(uint)23420509, timestamp-offset=(uint)66866867, seqnum-offset=(uint)11269
vs pt=97 を使用:
rtpbasepayload gstrtpbasepayload.c:843:gst_rtp_base_payload_negotiate:<rtph264pay0> using peer pt 97
...
rtpbasepayload gstrtpbasepayload.c:901:gst_rtp_base_payload_negotiate:<rtph264pay0> with peer caps: application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)"Z2QAFKzZQXCH5v/AXEBcBAAUXYwExLQCPFCmWA\=\=\,aOvssiw\=", payload=(int)97, ssrc=(uint)23420509, timestamp-offset=(uint)66866867, seqnum-offset=(uint)11269