Как запустить 10 процесс и контролировать его
У меня есть около 10-15 FFmpeg процесса для потокового сервера, как это:
ffmpeg -i "http://ip/play/a03i" -vcodec copy -acodec copy -f flv "rtmp://ip:80/APP/Name"
Я использую модуль Nginx-rtmp, чтобы запустить его, используя директиву exec_static, но я не могу контролировать каждый канал или процесс, не могу остановить запуск, перезапустить, отредактировать любой поток без остановки всех каналов.
Любая идея, пожалуйста?
Лучший,
1 ответ
Попробуйте что-то вроде (это в PHP, но вы можете использовать аналогичную процедуру из других скриптов):
$cmd = "ps aux | grep '-vcodec copy -acodec copy -f flv'";
exec($cmd, $output, $returnvalue);
$transcoders = 0;
foreach ($output as $line) if (strstr($line, "ffmpeg"))
{
$columns = preg_split('/\s+/',$line);
if ($kill) //customise this to kill a process
{
$kcmd = 'kill -KILL ' . $columns[1];
exec($kcmd, $koutput, $kreturnvalue);
}
}
Функциональность основана на плагине WP Videochat, который имеет внутреннюю секцию для мониторинга и уничтожения процессов FFMPEG (используется для перекодирования потоков в реальном времени для воспроизведения HLS и создания снимков из потоков).