首页 > 解决方案 > 带有参差不齐的数据链接的 Gstreamer 文件接收器时间戳

问题描述

我正在使用 RTP 通过 UDP 流式传输 h265 视频。接收器管道在下面,它解码并显示视频,并使用文件接收器保存它。

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 秒到 t=30 秒丢失,那么当视频播放到 t=10 时,它只会看起来冻结(没有前进的时间戳),直到 t=30,当它一直跳到30. 我认为正在发生的事情是在这期间根本没有数据;我想要的是重复最后一帧。无论如何,filesink 会这样做吗?或者,我可以在后期处理中做些什么来修复?

标签: gstreamer

解决方案


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

对于后期制作解决方案,添加静音音轨可能会有所帮助。在这种情况下,VLC 播放器可能会根据需要推进其滑块,因为它将不断呈现(听不见)音频数据。


推荐阅读