.vscode | ||
archive/0.1 | ||
info | ||
.gitignore | ||
cctv-scheduler.conf | ||
cctv-scheduler.py | ||
converter.conf | ||
converter.sh | ||
LICENSE | ||
publisher-template-page-1007.xml | ||
publisher.conf | ||
publisher.sh | ||
README.md | ||
streaming.py |
cctv-scheduler
PTZ IP-Camera management
Installation
Requirements
Cameras settings:
- Configuration -> System -> Security -> Authentication -> RTSP Authentication: digest/basic
- Configuration -> System -> Security -> Authentication -> WEB Authentication: digest/basic
- Configuration -> Network -> Advanced Settings -> Integration Protocol -> Enable Hikvision-CGI: Enabled
- Configuration -> Network -> Advanced Settings -> Integration Protocol -> Hikvision-CGI Authentication: digest/basic
Look at the description of dependencies and install the necessary.
Downloading
Download scripts and configs.
wget https://git.hmp.today/pavel.muhortov/cctv-scheduler/raw/branch/master/cctv-scheduler.py -O /home/user/cctv-scheduler/cctv-scheduler.py
wget https://git.hmp.today/pavel.muhortov/cctv-scheduler/raw/branch/master/cctv-scheduler.conf -O /home/user/cctv-scheduler/cctv-scheduler.conf
wget https://git.hmp.today/pavel.muhortov/cctv-scheduler/raw/branch/master/converter.sh -O /home/user/cctv-scheduler/converter.sh
wget https://git.hmp.today/pavel.muhortov/cctv-scheduler/raw/branch/master/converter.conf -O /home/user/cctv-scheduler/converter.conf
wget https://git.hmp.today/pavel.muhortov/cctv-scheduler/raw/branch/master/publisher.sh -O /home/user/cctv-scheduler/publisher.sh
wget https://git.hmp.today/pavel.muhortov/cctv-scheduler/raw/branch/master/publisher.conf -O /home/user/cctv-scheduler/publisher.conf
wget https://git.hmp.today/pavel.muhortov/cctv-scheduler/raw/branch/master/publisher-template-page-1007.xml -O /home/user/cctv-scheduler/publisher-template-page-1007.xml
wget https://git.hmp.today/pavel.muhortov/cctv-scheduler/raw/branch/master/streaming.py -O /home/user/cctv-scheduler/streaming.py
Configuration
Edit configs.
nano /home/user/cctv-scheduler/cctv-scheduler.conf
nano /home/user/cctv-scheduler/converter.conf
nano /home/user/cctv-scheduler/publisher.conf
Scheduler
Look at examples and edit scheduler tasks:
crontab -e
cctv-scheduler
.py
Description:
Hikvision PTZ IP-Camera management.
Additionally:
- getting temperature from DS18B20 over SSH,
- saving pictures to FTP.
This is only a local "proof of conept" for testing and debugging.
Dependencies:
- Python 3 (tested version 3.9.5 on Debian GNU/Linux 11)
- paramiko Python 3 module (tested version 3.1.0)
PARAMETERS | DESCRIPTION | DEFAULT |
---|---|---|
[-h] | print help and exit | |
[-s, --sequences] | run sequences from config file | None |
[--config] | custom configuration file path | ./cctv-scheduler.conf |
Example usage in terminal with make the script executable:
chmod u+x ./cctv-scheduler.py
./cctv-scheduler.py -s --config /home/user/cctv-scheduler/cctv-scheduler.conf
Example usage with cron:
# crontab -e
0 * * * * /usr/bin/python3 /home/user/cctv-scheduler/cctv-scheduler.py -s
converter
.sh
Description:
JPEG to MP4 converter.
This is only a local "proof of conept" for testing and debugging.
Dependencies:
- bash (tested version 5.1.4 on Debian GNU/Linux 11)
- ffmpeg (tested version 4.3.4 on Debian GNU/Linux 11)
- filesystem organization:
# 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:
- bash (tested version 5.1.4 on Debian GNU/Linux 11)
- curl (tested version 7.74 on Debian GNU/Linux 11)
- ffmpeg (tested version 4.3.4 on Debian GNU/Linux 11)
- libxml2-utils (tested version 2.9.10 on Debian GNU/Linux 11)
- jq (tested version 1.6 on Debian GNU/Linux 11)
POSITION | PARAMETERS | DESCRIPTION | DEFAULT |
---|---|---|---|
1 | [qn] | execution without pauses | |
2 | [/path/to/conf] | path to config | ./publisher.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 to Telegram today's MP4:
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:
- Python 3 (tested version 3.9.5 on Debian GNU/Linux 11)
- ffmpeg (tested version 4.3.4 on Debian GNU/Linux 11)
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