【问题标题】:How to Check RTMP Live stream is on or off如何检查 RTMP 直播流是打开还是关闭
【发布时间】:2015-10-05 18:02:39
【问题描述】:

我想检查麦克风的 RTMP 直播是打开还是关闭。

我用过RTMP DUMP

exec("/usr/bin/rtmpdump -V -v -r rtmp://www.exapmle.com/etc./13/mic1 -o /tmp/rtmp-checker.log 2>&1", $pp);

我从 http://blog.svnlabs.com/how-to-check-rtmp-source-stream-is-live-or-not/

但我对结果并不满意,因为它并不总是有效,并因此生成一个随机字符串。

![所以有时我会遇到这种类型的错误。有什么完美的解决方案吗?][1] [1]:http://i.stack.imgur.com/ZrTco.png

我正在寻找使用 ffmpeg 或其他方式的解决方案。

【问题讨论】:

  • 谢谢,正是我需要的。 :)

标签: php ffmpeg rtmp


【解决方案1】:

你可以使用ffprobe:

ffprobe -v quiet -print_format json -show_streams rtmp://example.com/stream

如果命令失败,您将获得返回码 1 或 0,并且成功时包含检测到的流的 JSON 字符串:

{
    "index": 1,
    "codec_name": "aac",
    "codec_long_name": "AAC (Advanced Audio Coding)",
    "profile": "LC",
    "codec_type": "audio",
    ...
}

这是一个基本测试,如果你想更进一步,你可以下载几秒钟的流,用ffprobe验证它,在上面运行silencedetect等等。

【讨论】:

  • 我收到了您提到的 rtmp 的响应,其中音乐已打开,但当我的麦克风关闭时,它会持续处理并且没有得到 rtmp 的任何响应。如果我在麦克风上,我会得到像你这样的回应。你能解释一下原因和解决方案吗?..谢谢
  • 您可以尝试降低-probesize(以字节为单位,默认为 5 mb)。如果它仍然永远卡住,那么替代方法是使用 linux timeout 命令:timeout 10s ffprobe ...。如果命令超时,它将返回124,在这种情况下,您会发出警报并检查流。
  • 是否需要包含-print_format json 和-show_streams 选项?经过一些测试后,在我看来,即使您完全依赖退出代码,该方法也可以工作,同时忽略这两个选项。
  • @GergelyLukacsy 如果您不需要流信息,则没有必要。问题是关于麦克风流,因此检查音频流。
  • @aergistal 感谢您的澄清。是的,我知道 OP 的确切问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-09
  • 1970-01-01
  • 2011-10-20
  • 2013-03-11
  • 1970-01-01
  • 2021-06-17
  • 1970-01-01
相关资源
最近更新 更多