my crontab:
# start recording on boot @reboot sleep 10; /usr/local/bin/startrecord.sh &> /dev/null # restart every 10 minutes to create a new file */10 * * * * killall ffmpeg ; sleep 5 ; /usr/local/bin/startrecord.sh &> /dev/null # purge old recordings 0 */6 * * * find /data/office-kamera -type f -mtime +12 -delete
/usr/local/bin/startrecord.sh
#!/bin/bash #cam1 /usr/bin/ffmpeg \ -rtsp_transport tcp -i rtsp://user:password@10.0.100.21:554/11 \ -c:v mpeg2video -b:v 16M -bufsize 16M -maxrate 16M /data/office-kamera/$(date +\%Y-\%m-\%d.\%H-\%M).cam1.mpg \ -c:a mp2 -ac 1 -ab 64k -ar 44100 \ -y -update 1 -r 3 -f image2 -q:v 10 -vf "scale=iw/2:ih/2,transpose=2" /var/www/html/cam/cam1.jpg \ &>/tmp/cam1.log &
Important: We use mpeg2 for a purpose! Forget matroska/h264/hs65. If your recording stops the hard way (power outage, crashing ffmpeg process, rising of the dead), no file trailer is written and you can NOT play or reconstruct your video when using mp4. For that reason we choose mpeg2, because you can still view fragments from a 20 year old CD-R that has been through a blender, or if you drop a thermonuclear weapon on your hard drive.
This will also put image frames to /var/www/html/cam/, where you can host a HTML document that displays your image and refreshes it via javascript if you like.
Finding you cameras RTSP URL is key. Just google „camera model rtsp url“. If you have any questions feel free to ask. Consider donating via paypal if it works for you;)
For those of us who are newbies how do you set this up. Can you make a step by step? For example I have 4 pc cameras recording to a pc hard drive, would like to implement this as a backup in case of failure as mentioned.