我正在使用实时传输协议在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能做到这一点吗?或者,我可以在后处理中做些什么来修复吗?
发布于 2019-06-08 14:35:28
这取决于您的要求。你不能只是在一个压缩的视频码流中“重复”图片。如果您想使用GStreamer本身进行回放,我建议您查看videorate元素。其中一个将重复解码的图像以创建一致的流。
对于后期制作解决方案,添加静音音轨可能会有所帮助。在这种情况下,VLC播放器可能会根据需要推进其滑块,因为它将不断呈现(听不见)音频数据。
https://stackoverflow.com/questions/56498705
复制相似问题