我想通过 UDP 传输 ts 流(.ts 文件)。
我使用了以下管道,
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 文件进行解复用和解码时,该文件可以正常工作。
但是当我通过 UDP 传输该 ts 文件时,就会出现这个问题。
我如何通过 UDP 传输 ts 流?
答案1
MPEG2-TS 带有时间戳,用于解码和呈现 DTS/PTS。您显然需要在管道中插入重新加盖时间戳。
当您对其进行解码时,您的本地解码器可能仅使用来自时间戳的相对时间信息,或者完全丢弃它们并根据比特率重新计算时间,这在大多数(几乎所有)流中都能正常工作(VLC 多年来不遵循时间戳,只是在最近的版本中才了解到这一点)。
也许有人可以编辑这个答案,并给出正确的关键字插入管道。