cctv-scheduler/README.md
2023-02-12 15:10:33 +03:00

7.4 KiB

cctv-scheduler

PTZ IP-Camera management

cctv-scheduler


sequences.sh

Description:

Hikvision PTZ-camera sequences.
Additionally:

  • getting temperature from DS18B20 over SSH,
  • saving pictures to FTP.

This is only a local "proof of conept" for testing and debugging.

Dependencies:

POSITION PARAMETERS DESCRIPTION DEFAULT
1 [qn] execution without pauses
2 [/path/to/conf] path to config ./sequences.conf

Example usage in terminal with bash:

bash ./sequences.sh - ./sequences.conf

Example usage with cron:

# crontab -e
0  *  *  *  * bash /home/user/cctv-scheduler/sequences.sh qn

converter.sh

Description:

JPEG to MP4 converter.

This is only a local "proof of conept" for testing and debugging.

Dependencies:

# filesystem organisation example
/root/
     /2022/
          /12/
             /52/
                /31/
                   /image-01_2022.12.31_time.jpeg
                   /image-02_2022.12.31_time.jpeg
     /2023/
          /01/
             /01/
                /02/
                   /image-01_2023.01.02_time.jpeg
                   /image-02_2023.01.02_time.jpeg
                /03/
                   /image-01_2023.01.03_time.jpeg
                   /image-02_2023.01.03_time.jpeg
POSITION PARAMETERS DESCRIPTION DEFAULT
1 [qn] execution without pauses
2 [/path/to/conf] path to config ./converter.conf
3 [-d|-w|-m|-y] periods: '' - today | '-d' - yesterday | '-w' - last week | '-m' - last month | '-y' - last year

Example usage in terminal with bash for today's MP4 making:

bash ./converter.sh - ./converter.conf

Example usage with cron:

# crontab -e
1  0  *  *  * bash /home/user/cctv-scheduler/converter.sh qn - -d
7  0  *  *  1 bash /home/user/cctv-scheduler/converter.sh qn - -w
30 0  1  *  * bash /home/user/cctv-scheduler/converter.sh qn - -m
36 0  1  1  * bash /home/user/cctv-scheduler/converter.sh qn - -y

publisher.sh

Description:

Uploading MP4 to Wordpress and Telegram.
Additionally:

This is only a local "proof of conept" for testing and debugging.

Dependencies:

POSITION PARAMETERS DESCRIPTION DEFAULT
1 [qn] execution without pauses
2 [/path/to/conf] path to config ./converter.conf
3 [-d|-w|-m|-y] periods: '' - 0 day | '-d' - -X day | '-w' - -X week | '-m' - -X month | '-y' - -X year
4 [1|2|3..XXX] multiplier for period: '' - 1 day|week|month|year 1
5 [--onlytg|--onlywp] '--onlytg' - only publish to Telegram |'--onlywp' - only publish to Wordpress

Example usage in terminal with bash for publish today's MP4 maked:

bash ./publisher.sh - ./publisher.conf - --onlytg

Example usage with cron:

# crontab -e
1  1  *  *  * bash /home/user/cctv-scheduler/publisher.sh qn - -d
7  1  *  *  1 bash /home/user/cctv-scheduler/publisher.sh qn - -w
30 1  1  *  * bash /home/user/cctv-scheduler/publisher.sh qn - -m
36 1  1  1  * bash /home/user/cctv-scheduler/publisher.sh qn - -y

streaming.py

Description:

FFmpeg management from Python

Dependencies:

PARAMETERS DESCRIPTION DEFAULT
-s, --src sources urls REQUIRED
[-h] print help and exit
[--preset] 240p, 360p, 480p, 720p, 1080p, 1440p, 2160p None
[--fps] frame per second encoding output None
[--dst] destination url None
[--ffpath] alternative path to bin None
[--watchdog] detect ffmpeg freeze and terminate
[--sec] seconds to wait before the watchdog terminates 15
[--mono] detect ffmpeg running copy and terminate

Example usage in terminal with make the script executable:

chmod u+x ./streaming.py
./streaming.py -s rtsp://user:pass@host:554/Streaming/Channels/101 --dst rtp://239.0.0.1:5554

Example usage with cron:

# crontab -e
* * * * * /usr/bin/python3 /home/user/cctv-scheduler/streaming.py -s rtsp://user:pass@host:554/Streaming/Channels/video,http://Streaming/Channels/audio --dst rtmp://a.rtmp.youtube.com/live2/YOUKEY --mono --watchdog --sec 30 >> /dev/null 2>&1
* * * * * /usr/bin/python3 /home/user/cctv-scheduler/streaming.py -s ~/media.mp4 --dst rtmp://b.rtmp.youtube.com/live2?backup=1/YOUKEY --mono >> /dev/null 2>&1

Example usage in Python:

from streaming import FFmpeg

FFmpeg.run(src='null, anull', preset='240p', fps=10)