Скрипт record, запускает запись с ip камер по протоколу RTSP(-t 43200 кол-во секунд),
date_now="`date +%Y-%m-%d`"
out_patch='/mnt/ipvideo/'$date_now
/bin/mkdir $out_patch
/usr/local/bin/ffmpeg -async 1 -i rtsp://192.168.1.201:554/snl/live/1/1/Ux/sido=-Ux/sido= -timeout 300 -vcodec copy -r 25 -y -t 43200 $out_patch/cam01.avi /dev/null 2>/mnt/ipvideo/cam01.log &
/usr/local/bin/ffmpeg -async 1 -i rtsp://192.168.1.202:554/snl/live/1/1/Ux/sido=-Ux/sido= -timeout 300 -vcodec copy -r 25 -y -t 43200 $out_patch/cam02.avi /dev/null 2>/mnt/ipvideo/cam02.log &
/usr/local/bin/ffmpeg -async 1 -i rtsp://192.168.1.203:554/snl/live/1/1/Ux/sido=-Ux/sido= -timeout 300 -vcodec copy -r 25 -y -t 43200 $out_patch/cam03.avi /dev/null 2>/mnt/ipvideo/cam03.log &
/usr/local/bin/ffmpeg -async 1 -i rtsp://192.168.1.204:554/snl/live/1/1/Ux/sido=-Ux/sido= -timeout 300 -vcodec copy -r 25 -y -t 43200 $out_patch/cam04.avi /dev/null 2>/mnt/ipvideo/cam04.log &
/usr/local/bin/ffmpeg -async 1 -i rtsp://192.168.1.205:554/snl/live/1/1/Ux/sido=-Ux/sido= -timeout 300 -vcodec copy -r 25 -y -t 43200 $out_patch/cam05.avi /dev/null 2>/mnt/ipvideo/cam05.log &
/usr/local/bin/ffmpeg -async 1 -i rtsp://192.168.1.206:554/snl/live/1/1/Ux/sido=-Ux/sido= -timeout 300 -vcodec copy -r 25 -y -t 43200 $out_patch/cam06.avi /dev/null 2>/mnt/ipvideo/cam06.log &
/usr/local/bin/ffmpeg -async 1 -i rtsp://192.168.1.207:554/snl/live/1/1/Ux/sido=-Ux/sido= -timeout 300 -vcodec copy -r 25 -y -t 43200 $out_patch/cam07.avi /dev/null 2>/mnt/ipvideo/cam07.log &
/usr/local/bin/ffmpeg -async 1 -i rtsp://192.168.1.208:554/snl/live/1/1/Ux/sido=-Ux/sido= -timeout 300 -vcodec copy -r 25 -y -t 43200 $out_patch/cam08.avi /dev/null 2>/mnt/ipvideo/cam08.log &
/usr/local/bin/ffmpeg -async 1 -i rtsp://192.168.1.209:554/snl/live/1/1/Ux/sido=-Ux/sido= -timeout 300 -vcodec copy -r 25 -y -t 43200 $out_patch/cam09.avi /dev/null 2>/mnt/ipvideo/cam09.log &
/usr/local/bin/ffmpeg -async 1 -i rtsp://192.168.1.210:554/snl/live/1/1/Ux/sido=-Ux/sido= -timeout 300 -vcodec copy -r 25 -y -t 43200 $out_patch/cam10.avi /dev/null 2>/mnt/ipvideo/cam10.log &
скрипт(/opt/check) для вывода процессов по нашим камерам
/bin/ps -ef | grep ffmpeg | awk ' { if($22~/cam/){ print $22}}'
Теперь делаем скрипт(/opt/check.php), который проверят, отвалилась ли камера, если да, то запускать ее с другим значением времени, я делал на php
<?php
exec("/opt/check",$ffmpeg);
if(empty($ffmpeg)==false)
{
$cam=array("cam01","cam02","cam03","cam04","cam05","cam06","cam07","cam08","cam09","cam10");
$date=date('d')."_".date('m')."_20".date('y')."_".date('h')."_".date('i')."_".date('s');
$date_catalog="20".date('y')."-".date('m')."-".date('d');
$ffmpeg_command="";
$time=(19.5*3600) - (date('H')*3600 + date('i')*60 );
if(date('w')=="0" || date('w')=="6" ) {$cam=array("cam01");}
for($i=0;$i<count($cam);$i++)
{
for($j=0; $j<count($ffmpeg);$j++)
{
$pos=strrpos($ffmpeg[$j],$cam[$i]);
if($pos==true)
{
break;
}
if($j==count($ffmpeg)-1)
{
if($i==9)
{
$ip=(string)($i+1);
}
else
{
$ip="0".(string)($i+1);
}
$ffmpeg_command="/usr/local/bin/ffmpeg -async 1 -i rtsp://192.168.1.2".$ip.":554/snl/live/1/1/Ux/sido=-Ux/sido= -timeout 300 -vcodec copy -r 25 -y -t ".$time." /mnt/ipvideo/".$date_catalog."/".$cam[$i]."_".$date.".avi </dev/null >/dev/null 2>/mnt/ipvideo/".$cam[$i]."_".$date.".log &";
printf("ffmpeg_command=%s\n",$ffmpeg_command);
exec($ffmpeg_command);
}
}
}
}
else
{printf("Prosecc ffmpeg is not run\n");}
?>
Добавим в крон (/etc/cron.d/record)
*/5 8-19 * * * root /opt/check_bash #запускаем в рабочие дни с 8 утра до 7 вечера(скрипт проверки),каждые 5 мин
30 07 * * 1-5 root /opt/record #запускаем в 7 утра в 30 мин в рабочие дни