通过 UDP 传输 .TS 文件的 TS 流

通过 UDP 传输 .TS 文件的 TS 流

我想通过 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 多年来不遵循时间戳,只是在最近的版本中才了解到这一点)。

也许有人可以编辑这个答案,并给出正确的关键字插入管道。

相关内容