Difference between revisions of "Stream Status"
From Starchive Wiki
m |
(updated script) |
||
Line 18: | Line 18: | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
<?php | <?php | ||
+ | |||
$output = exec("<the command>"); | $output = exec("<the command>"); | ||
$val = floatval($output); | $val = floatval($output); | ||
− | if ($val | + | if ($val < 0.00025) { |
http_response_code(503); | http_response_code(503); | ||
} else { | } else { | ||
− | echo "all good :)"; | + | echo "all good :) max amplitude was $val!"; |
http_response_code(200); | http_response_code(200); | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | This script simply gets the output of the command that is run and checks the value. If it | + | This script simply gets the output of the command that is run and checks the value. If it less than 0.00025, it returns a server error response code for the uptime robot to detect. This number has been chosen completely arbitrarily based on the fact that "silence" appears to fluctuate between 0.0001 and 0.0002. |
Latest revision as of 01:05, 22 February 2020
The Stream Status tool is comprised of a command that checks for stream silence and a PHP page that reports this for the uptime monitor. The script is hosted at standrewsradio.com/stream-status.php.
Command
The command is as follows:
ffmpeg -i http://garfield.standrewsradio.com:8080/stream/1.mp3 -y -nostats -loglevel 0 -f mp3 -t 00:00.5 - | sox -t mp3 - -n stat 2>&1 | grep "Maximum amplitude" | cut -d' ' -f 7
This is split into four different parts, each operating on the output of the part before:
ffmpeg -i http://garfield.standrewsradio.com:8080/stream/1.mp3 -y -nostats -loglevel 0 -f mp3 -t 00:00.5 -
: silently records half a second of the stream as an mp3.sox -t mp3 - -n stat 2>&1
: using sox, read the MP3 recording and get some statistics on it, piping stderr and stdout into stdout.grep "Maximum amplitude"
: gets the line of the output that contains information about the maximum amplitude.cut -d' ' -f 7
: cuts the input into parts around spaces and returns the 7th part (this is the maximum amplitude in seconds).
PHP
The PHP script is as follows:
<?php
$output = exec("<the command>");
$val = floatval($output);
if ($val < 0.00025) {
http_response_code(503);
} else {
echo "all good :) max amplitude was $val!";
http_response_code(200);
}
This script simply gets the output of the command that is run and checks the value. If it less than 0.00025, it returns a server error response code for the uptime robot to detect. This number has been chosen completely arbitrarily based on the fact that "silence" appears to fluctuate between 0.0001 and 0.0002.