【问题标题】:How to stop FFMPEG from running if connection to input stream is lost?如果与输入流的连接丢失,如何阻止 FFMPEG 运行?
【发布时间】:2022-01-01 07:35:43
【问题描述】:

我每 1 秒将网络摄像头 RTMP 流中的缩略图捕获为 JPG 文件。这是我的命令行:

ffmpeg -i rtsp://192.168.1.89:554/11 -f image2 -r 1 thumb%03d.jpg

如果输入 RTMP 流在给定的超时期限内丢失,如何使 FFMPEG 因错误而死?目前,如果我失去与网络摄像头的连接,FFMPEG 开始抛出“未知错误”消息,但当网络重新连接时,ffmpeg 似乎重新连接到流,但不再输出任何捕获的帧。我必须手动终止该进程并重新启动它才能再次开始捕获帧。

如果 ffmpeg 在特定的超时时间内失去连接,那么它会很简单。然后我可以监控进程并在它结束时重新启动。

有什么想法吗?

【问题讨论】:

    标签: ffmpeg


    【解决方案1】:

    你可以设置ffmpeg timeout for RTSP

    timeout 设置等待传入的最大超时时间(以秒为单位) 连接。

    值 -1 表示无限(默认)。此选项意味着 rtsp_flags 设置为“收听”。

    stimeout 设置套接字 TCP I/O 超时 微秒。

    【讨论】:

    • HTTP 怎么样?
    • 这不是答案。当 ffmpeg 充当服务器时,'timeout' 参数有效。正如您的报价中所说,“等待传入连接”。当 ffmpeg 充当 rtmp 客户端时,问题是关于相同的功能。
    【解决方案2】:

    解决办法其实就是给socket连接设置一个超时时间:

    [...] -rtsp_transport tcp -stimeout 30000000 -i rtsp://192.168.1.89:554/11 [...]
    

    (在这种情况下为 30 秒)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2019-03-13
      • 2020-10-21
      • 1970-01-01
      • 2020-08-28
      相关资源
      最近更新 更多