问题描述
我正在尝试创建以下管道:
在Jetson上:
1.1)相机->…-> udpsink 1.2)udpsrc-> rtspserver
在主机PC上
2.1)rtspsrc->抖动缓冲区->检测->跟踪器->分析
主要问题是 我的 Jetson 通过本地WiFi网络连接到主机PC 。我选择了网状WiFi Tenda Nova MW3。当 Jetson 从一个WiFi接入点重新连接到另一个WiFi接入点时,我丢失了一些帧(从0.5秒到10秒的流)。我了解我们无法获得理想的无缝WiFi网络,并且系统在重新连接期间会“丢失一些帧”。
我尝试在udpsrc和udpsink上设置缓冲区,我尝试在rtspsrc上设置do-retransmission,但是它不起作用,或者可能是我做错了。
- 如何在RTSP服务器中设置缓冲区以在 Jetson 客户端上重新连接到另一个WiFi点并继续从最后一个点向 Host PC 发送帧? li>
- 我应该在udpsink还是udpsrc或rtspserver上设置缓冲区?
- 如何配置rtpsrc以从“丢失的时间”发送帧?
解决方法
我丢了一些帧(流的0.5到10秒)
可能是因为Host流水线中的解码器错过了I帧,而应该等待下一个I帧,所以0.5〜10s取决于GOP中的第一帧位置(可以通过编码器属性更改GOP)。
-
您可以使用rtmp服务器而不是rtsp,srs是不错的选择,然后打开gop缓存。 Pipeine想成为相机->编码器-> flvmux-> rtmpsink
vhost __defaultVhost__ { gop_cache on; }
-
启用gop缓存时,延迟会增加,因此编码器的GOP不应太大,可能是2s。
-
主机PC上的管道可能会接收重新连接wifi之前已处理的视频数据,并且与禁用gop相比,延迟更大。如果任何一个都算在内,则应在解码后丢弃过时的帧。