【问题标题】:FFprobe Check Stream LinkFFprobe 检查流链接
【发布时间】:2015-08-10 05:46:58
【问题描述】:

我正在尝试使用 FFprobe 来测试流媒体链接是否处于活动状态。

例如,这是一个有效的流媒体链接:

ffprobe -loglevel quiet -show_streams rtmp://Lrmh0w.cloud.influxis.com/yoy/_definst_/185

我确实得到了表示链接处于活动状态的输出。

但是,一旦我将链接更改为不起作用的内容:

ffprobe -loglevel quiet -show_streams rtmp://Lrmh0w.cloud.influxis.com/yoy/_definst_/18555555555

命令一直在后台运行,没有结果。

有没有办法绕过这个,或者是否有任何 ffprobe 超时参数? 官网文档里没找到。

【问题讨论】:

  • 你解决了这个问题了吗? @Krasic

标签: linux ffmpeg streaming ffprobe


【解决方案1】:

尝试在 url 前添加-timeout n,其中 n 是秒数。如果它没有帮助,那么您应该在没有-loglevel quiet 的情况下提出问题,包括所有版本信息和错误消息。

【讨论】:

  • 你好 avnr,没有为我工作,尝试正常,没有 -loglevel quiet,在 url 之前/之后超时,在 show_stream 之前/之后什么都没有...
  • 删除 -loglevel quiet 的想法是,您可以发布完整转储并显示所有信息,例如 ffprobe 版本、平台、包含的库、流元数据等。您应该重新在 superuser.com 或 SE 的视频制作论坛等相关论坛上发布问题,并附上完整的转储。
  • 当我在没有 -loglevel 安静的情况下运行时:它显示 ffprobe 版本、平台、包含的库,但是它卡在流媒体数据上并继续在后台运行而没有结果,在 php 或 ffprobe 上还有其他方法吗检查流媒体链接是打开还是关闭?
  • 如果转储中包含元数据,则可能意味着 ffprobe 能够建立连接。在 RTMP 中,URI 的路径部分并不是真正的路径,而是在媒体服务器上注册的应用程序的名称。所以 - 假设 ffprobe 真的显示元数据 - 这意味着媒体服务器接受了连接,但由于应用程序不存在而挂起;换句话说,这表明存在媒体服务器问题。如果您要发布转储,那么为您提供帮助会更有效率,例如有关元数据的信息非常相关。
【解决方案2】:

我只是在使用 *nix 超时:

/usr/bin/timeout 5s /usr/bin/ffprobe $SOURCE

就我而言,这就足够了。

【讨论】:

    【解决方案3】:

    我会 +1 上面的答案: 在 ffprobe 工作之前添加超时。

    ffprobe -show_format -timeout 1000000 -loglevel quiet  "${ChannelList[$i+1]}"
    

    会时不时卡在错误的 http 请求上,导致 503 错误(在删除 loglevel quiet 后查看日志时)。频道列表是加载所有流链接的位置。

    timeout 5s ffprobe -show_format -timeout 1000000 -loglevel quiet  "${ChannelList[$i+1]}"
    

    这就像一个魅力 - 防止 ffprobe 无限期地卡在错误的 url 上并冻结整个过程。

    【讨论】:

      猜你喜欢
      • 2020-08-10
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 2011-03-12
      • 2012-03-11
      相关资源
      最近更新 更多