2012-03-16 16 views
8

ストリームのアクティビティを監視する方法を探しています。ストリームに何かがあるかどうかを判断できます。存在する場合は、rtmpdumpを使用して記録を開始します。RTMPストリームを監視し、利用可能であれば記録します。

これは、60秒ごとにストリームをチェックするcronタスクを実行することによって実現すると思います。ストリームが通過していると判断した場合は、rtmpdumpを呼び出して記録を開始します。そうでない場合は、何もせずに60秒後にもう一度確認してください。

ストリームデータがないときにrtmpdumpがエラーになるので、ストリームを監視するために使用するのは良い考えではないようですが、おそらく私は間違っています。

ケースバイケースで手動で行うのは簡単ですが、利用可能な場合は自動的にストリームを記録する作業を自動化しようとしています。

誰かがこれを行う手段を見つけましたか?おそらく私はコマンドライン(Linux)で使用できるいくつかの他のツールですか?役に立ったら、Ruby/Railsを使ってコードを書いています

+0

は、Red5メディアサーバーによる信号検出の方法です。また、VLCプロセスでリスナーを設定することもできます。私は決してそれをやったことがないように詳細を与えることはできませんが、私は両方のドキュメントセットでこれに関連するものを見てきました。助けてくれる希望 – Alex

答えて

1

私はあなたに誤解されたかもしれませんが、周りにループを置くのはなぜですか? ストリームがある場合、ストリームがある限り、rtmpdumpは終了せずに記録すると仮定します。ストリームがない場合は終了し、しばらくの間スリープしてからもう一度お試しください。

rtmpdumpには--timeoutフラグがあるようですが、リトライ回数を減らすために何かを高く設定してみてください。 record.shでこれを入れ

、CMODのA + xとそれに

while true; do 
    rtmpdump ... 
    sleep 60 
done 
2

を実行します。このコマンドを使用して標準出力にストリームの情報を送信することができます

rtmpdump -v -m6 -B6 -r "rtmp://#{URL}" -o /tmp/test.flv &> /tmp/rtmpdump.info; cat /tmp/rtmpdump.info 

これは、しようとしますちょうど6秒のビデオを録画し、その結果が何かを表示します。ストリームのような出力に何かをされます実行している場合:

RTMPDump v2.4 
(c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL 
Connecting ... 
INFO: Connected... 
ERROR: Closing connection: NetStream.Play.Failed 

ここから取られた公共のRTMPストリームでの作業例です:ストリームが実行されていない場合

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 

を/それはのような出力に何かがします失敗VLCStreamTester:ルビーとここから

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 

あなたは簡単に(キーワードの出力を読んで)一つのストリームがアクティブであるかどうかをチェックし、その後で録音するかどうかを決めることができます通常のrtmpdumpコマンド。この後、必要な自動化を実現するために、より多くのロジックを構築し、単一のURLの代わりにURLの配列をループすることができます。

関連する問題