
Ich möchte den TS-Stream (.ts-Dateien) über UDP transportieren.
Ich habe die folgende Pipeline verwendet,
gst-launch-1.0 filesrc =location=a.ts ! tsparse ! rtpmp2tpay ! udpsink host="IP" port="port"
Aber ich erreiche das Ende des Streams innerhalb von Sekundenbruchteilen.
Am Empfängerende empfange ich nur einige Daten.
Eine Warnung wird angezeigt, wenn ich do-timestamp=true für filesrc setze.
0:00:00.051245178 4751 0xe494a0 WARN mpegtspacketizer mpegtspacketizer.c:1388:calculate_skew: delta - skew: 5124091:34:25.044918089 too big, reset skew
Die TS-Datei wird durch Dekodierung und MPEGTSMUX einer YUV-Datei erstellt.
Diese TS-Datei funktioniert ordnungsgemäß, wenn ich sie direkt demuxe und dekodiere.
Aber wenn ich die TS-Datei über UDP streame, tritt dieses Problem auf.
Wie kann ich den TS-Stream über UDP transportieren?
Antwort1
MPEG2-TS enthält Zeitstempel, zur Dekodierung und Präsentation DTS/PTS. Sie müssen die Zeitstempel natürlich neu in Ihre Pipeline einfügen.
Beim Dekodieren verwendet Ihr lokaler Decoder möglicherweise nur die relativen Zeitinformationen aus Ihren Zeitstempeln oder verwirft sie vollständig und berechnet das Timing anhand der Bitrate neu, was bei den meisten, fast allen Streams einwandfrei funktioniert (VLC hat sich jahrelang nicht an Zeitstempel gehalten und hat dies erst in den letzten Versionen gelernt).
möglicherweise kann jemand diese Antwort bearbeiten und das richtige Schlüsselwort zum Einfügen in die Pipeline angeben.