ruby-on-rails – 监视RTMP流,记录是否可用
发布时间:2020-12-17 01:18:56 所属栏目:百科 来源:网络整理
导读:我正在寻找一种方法来监视流上的活动,以便我可以确定流中是否有任何内容.如果有,我将开始使用rtmpdump录制它. 我想这是通过运行一个每60秒检查一次流的cron任务来完成的.如果它确定流正在通过,则调用rtmpdump开始记录它.如果没有,那么什么都不做,并在60秒内
我正在寻找一种方法来监视流上的活动,以便我可以确定流中是否有任何内容.如果有,我将开始使用rtmpdump录制它.
我想这是通过运行一个每60秒检查一次流的cron任务来完成的.如果它确定流正在通过,则调用rtmpdump开始记录它.如果没有,那么什么都不做,并在60秒内再次检查. 由于rtmpdump只是在没有流数据时出错,所以尝试使用它监视流似乎不是一个好主意,但也许我错了. 如果我手动逐个进行此操作会很容易,但我正在尝试自动记录流的任务,如果它们可用的话. 有没有人遇到过这样做的方法?也许我可以在命令行(linux)中使用其他一些工具?如果它有帮助,我正在使用Ruby / Rails编写代码 解决方法
您可以使用以下命令将流的信息发送到stdout:
rtmpdump -v -m6 -B6 -r "rtmp://#{URL}" -o /tmp/test.flv &> /tmp/rtmpdump.info; cat /tmp/rtmpdump.info 这将尝试记录仅6秒的视频并显示结果.如果流正在运行,它将输出如下内容: INFO: Connected... Starting Live Stream For duration: 6.000 sec INFO: Metadata: INFO: trackinfo: INFO: timescale 50000.00 INFO: length 19686000.00 INFO: language eng INFO: sampledescription: INFO: sampletype avc1 INFO: timescale 48000.00 INFO: length 18900992.00 INFO: language eng INFO: sampledescription: INFO: sampletype mp4a INFO: audiochannels 2.00 INFO: audiosamplerate 48000.00 INFO: videoframerate 25.00 INFO: aacaot 2.00 INFO: avclevel 31.00 INFO: avcprofile 77.00 INFO: audiocodecid mp4a INFO: videocodecid avc1 INFO: width 1047.00 INFO: height 576.00 INFO: frameWidth 720.00 INFO: frameHeight 576.00 INFO: displayWidth 1047.00 INFO: displayHeight 576.00 INFO: framerate 25.00 INFO: moovposition 32.00 INFO: duration 393.77 2033.613 kB / 6.02 sec (1.5%) Download may be incomplete (downloaded about 1.50%),try resuming 如果流未运行/失败,它将输出如下内容: RTMPDump v2.4 (c) 2010 Andrej Stepanchuk,Howard Chu,The Flvstreamer Team; license: GPL Connecting ... INFO: Connected... ERROR: Closing connection: NetStream.Play.Failed 这是一个从VLCStreamTester获取的公共rtmp流的工作示例: require 'open3' rtmp_url = "stream.streetclip.tv:1935/live/high-stream" command = "rtmpdump -v -m6 -B6 -r "rtmp://#{rtmp_url}" -o /tmp/test.flv &> /tmp/rtmpdump.info; cat /tmp/rtmpdump.info" Open3.popen3(command) do |i,o,e,t| puts o.read end 从这里使用ruby,您可以轻松检查一个流是否处于活动状态(读取关键字的输出),然后决定是否使用通常的rtmpdump命令进行记录.在此之后,您可以构建更多逻辑并循环遍历URL数组而不是单个URL,从而获得所需的自动化. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |