gstreamer - 带有参差不齐的数据链接的 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 本身进行播放,我建议您查看该videorate
元素。那会重复解码的图片以创建一致的流。
对于后期制作解决方案,添加静音音轨可能会有所帮助。在这种情况下,VLC 播放器可能会根据需要推进其滑块,因为它将不断呈现(听不见)音频数据。
推荐阅读
- c# - SmtpClient Send(Mail) 函数超时错误
- python-3.x - 如何将我从列表中抓取的数据导出到我的 csv 文件?
- apache-spark - 带有 Hive 的 pyspark,追加将添加到现有分区并重复数据
- java - 使用 Eclipse Debugger 调试 Eclipse CDT 时出现奇怪的行为
- python - 我应该怎么做才能读取 dbf 文件并将数据插入 Oracle db?
- apache-kafka - 创建和使用自定义 kafka 连接配置提供程序
- java-8 - 使用 OAuth 2.0 URL 生成令牌时,如何配置 SwaggerUI 以正确设置标头上的承载令牌?
- java - 在 Spring Boot 中从 id 令牌获取主题
- android - 如何根据设置的主题更改颤动中的状态栏图标和文本颜色?
- web-scraping - 寻求 Alpha 抓取电话会议记录的问题