当通过UDP接收MPEG TS有效载荷时,Gstreamer tsdemux报告 "CONTINUITY: Mismatch packet"。

问题描述 投票:0回答:1

我的流水线如下(我通过RTP接收MPEG TS H264视频)。

gst-launch-1.0 -v udpsrc address=127.0.0.1 port=1200 ! decodebin ! rtpvrawpay ! rtpbin ! udpsink host=127.0.0.1 port=2250

启动后,视频传输确定了几秒钟,但随后出现了一个错误。

tsdemux.c:2413:gst_ts_demux_queue_data: CONTINUITY: Mismatch packet 2, stream 6

随后出现错误:

libav gstavauddec.c:628:gst_ffmpegauddec_drain:<avdec_mp2float0> send packet failed, could not drain decoder

之后,没有更多的正常播放是可能的,我需要重新启动管道。是什么原因导致的错误,如何解决?

gstreamer gstreamer-1.0
1个回答
0
投票

原来问题出在发送器上,因为某些原因没有发送关键帧。这可能也是由UDP连接问题引起的 - 它有时可能会错过数据包。

然而,VLC播放原始流的罚款,所以这应该是可以实现与gtsreamer以及(通过播放流与udp:/@:1200地址)。

我设法解决这个问题,通过增加缓冲区大小到100兆字节,如下所示(我还提供了测试播放视频从流检查它的工作正常)。

gst-launch-1.0 udpsrc address=127.0.0.1 port=1200 buffer-size=100000000 ! tsdemux parse-private-sections=TRUE ! h264parse ! avdec_h264 ! autovideosink sync=false
© www.soinside.com 2019 - 2024. All rights reserved.