Gstreamer filesink时间戳与不正确的数据链接

时间:2019-06-07 17:14:51

标签: gstreamer

我正在通过RTP通过UDP流传输h265视频。接收器管道位于下面,它解码并显示视频,并将其保存为filesink。

udpsrc port=6014 ! application/x-rtp,encoding-name=H265,payload=96 ! rtph265depay ! h265parse ! tee name=t1 ! queue ! avdec_h265 ! xvimagesink sync=false async=false t1. ! queue ! mpegtsmux ! filesink location=%s.ts sync=true 

此视频正在流式传输的无线数据链路有时会非常间歇。当链接质量较差时,显示的视频将被像素化或质量很差。当链接完全消失时,显示的视频仅停留在最后收到的帧上。链接返回后,显示的视频将恢复正常。一切都很好,意料之中。

在保存的视频中我只有一个小问题。在播放时,例如。 VLC,在没有链接的时间段内计时器不会前进。例如,如果链接从t = 10 s丢失到t = 30 s,则当视频播放达到t = 10时,它将一直处于冻结状态(无提前时间戳),直到t = 30为止,然后一直跳过30.我认为正在发生的事情是在这段时间之间没有数据。我想要的是重复最后一帧。无论如何,filesink可以做到这一点?或者,在后期处理中我可以做些什么来解决?

1 个答案:

答案 0 :(得分:0)

取决于您的要求。您不能只是在压缩视频比特流中“重复”图片。如果您将使用GStreamer本身进行回放,则建议您查看videorate元素。那将重复解码的图片以创建一致的流。

对于后期制作解决方案,可能有助于添加无声音频轨道。在这种情况下,VLC播放器可能会根据需要前进其滑块,因为它将不断渲染(听不清)音频数据。