FFMPEG:RTSP流冻结,但FFMPEG保持录制

FFMPEG:RTSP流冻结,但FFMPEG保持录制,ffmpeg,rtsp,Ffmpeg,Rtsp,编辑:在撰写本文时,FFMPEG中没有能够检测/处理RTP/RTSP流仍处于活动状态但不再提供有效帧的功能。我能找到的唯一解决方案是定期重置流,方法是停止录制,然后重新连接并开始一个新的录制,-f段不这样做 我正在用FFMPEG从网络摄像机录制RTSP流,过了一段时间(通常大约一个半小时到两个小时)。我确信这是我使用的摄像机的问题,而不是FFMPEG或我的系统资源 具体的情况是视频冻结,但摄像头的网络流量仍在继续——它似乎没有发送新的帧。由于这种行为,FFMPEG不会断开/保持录制,因为网络连

编辑:在撰写本文时,FFMPEG中没有能够检测/处理RTP/RTSP流仍处于活动状态但不再提供有效帧的功能。我能找到的唯一解决方案是定期重置流,方法是停止录制,然后重新连接并开始一个新的录制,
-f段
不这样做


我正在用FFMPEG从网络摄像机录制RTSP流,过了一段时间(通常大约一个半小时到两个小时)。我确信这是我使用的摄像机的问题,而不是FFMPEG或我的系统资源

具体的情况是视频冻结,但摄像头的网络流量仍在继续——它似乎没有发送新的帧。由于这种行为,FFMPEG不会断开/保持录制,因为网络连接仍然处于活动状态。几分钟后,FFMPEG输出中将始终显示一条警告:
复制了1000多帧
但它一直在记录——它只是一遍又一遍的同一帧

我使用的命令是:

ffmpeg -stimeout 1000000 -rtsp_transport udp -fflags discardcorrupt -i rtsp://192.168.1.163/live/0/MAIN -vc libx265 -f segment -segment_time 300 -segment_atclocktime 1 -reset_timestamps 1 -strftime 1  "163-%Y-%m-%d_%H-%M-%S-h265.mp4"
一些注意事项:

  • stimeout似乎没有做任何事情,因为网络连接被保持,相机似乎只是停止发送(有效)帧
  • 将编解码器更改为复制并不能改善问题
  • 更改RTSP传输不会改善问题
  • 我知道有一个过滤器可以检测冻结帧,但我的FFMPEG似乎没有——我现在要自己尝试构建FFMPEG;但是,我更愿意使用捆绑FFMPEG~>4.1.3的解决方案

让FFMPEG在复制超过1000帧后失败并退出实际上是很理想的,因为这样我就可以从脚本生成FFMPEG,监视进程,并在进程结束时重新启动它。不过,任何解决方案都很好。

这家伙会帮你:

11.134英里/小时

删除与前一帧差别不大的帧以降低帧速率

此过滤器的主要用途是用于极低比特率编码(例如,通过拨号调制解调器进行流式传输),但从理论上讲,它可用于修复不正确的反向电视电影

这样使用:
“-vf”、“mpdecimate,setpts=N/FRAME\u RATE/TB”

我应该更新我的问题,但我确实尝试过。因为帧中没有实际数据,所以mpdecimate实际上无法执行比较,并且过滤器从未运行过——数据仍然被填满。问题不在于ffmpeg本身,我能找到的唯一解决方案是定期重置连接(停止并重新开始录制)。在ffmpeg中,我目前所知/所能找到的功能都无法检测流何时未被丢弃但不再传送帧。