
ts ストリーム (.ts ファイル) を UDP 経由で転送したいと思います。
私は以下のパイプラインを使用しました。
gst-launch-1.0 filesrc =location=a.ts ! tsparse ! rtpmp2tpay ! udpsink host="IP" port="port"
しかし、ほんの数秒以内にストリームが終了してしまいます。
受信側では、一部のデータのみを受信します。
filesrc に do-timestamp=true を設定すると警告が表示されます。
0:00:00.051245178 4751 0xe494a0 WARN mpegtspacketizer mpegtspacketizer.c:1388:calculate_skew: delta - skew: 5124091:34:25.044918089 too big, reset skew
TS ファイルは、yuv ファイルのデコードと mpegtsmux によって作成されます。
その TS ファイルは、直接デマルチプレックスしてデコードすると正常に動作します。
しかし、その ts ファイルを UDP 経由でストリーミングすると、この問題が発生します。
TS ストリームを UDP 経由で転送するにはどうすればよいですか?
答え1
MPEG2-TS は、DTS/PTS のデコードとプレゼンテーションのためにタイムスタンプを保持します。当然、パイプラインにタイムスタンプの再スタンプを挿入する必要があります。
デコードすると、ローカル デコーダーはタイムスタンプからの相対時間情報のみを使用するか、それらを完全に破棄してビットレートからタイミングを再計算します。これは、ほとんどすべてのストリームで正常に機能します (VLC は長年タイムスタンプに従わず、最近のリリースでのみそれを学習しました)。
おそらく誰かがこの回答を編集し、パイプラインに挿入する適切なキーワードを与えることができるでしょう。