Инструменты пользователя

Инструменты сайта


cam

Это старая версия документа!


Содержание

DVR

NT98562

hi3516cv100-imx322

hi3516cv300-jxf22

XM530_85X20_8M-jxf37_i2c

XM530_50X30-WG_8M

cron

cat << EOF > /etc/cron.d/dvr
# record start
*/10 * * * * root /opt/DVR/dvr.sh
EOF

cat dvr.sh

#!/bin/bash
 
# Задаем путь к конфиг файлу go2rtc
config_file="/opt/go2rtc/go2rtc.yaml"
streams=$(yaml2json "$config_file" | jq -r '.streams | keys[]')
 
# Директория для сохранения файлов
base_dir="/media/disk1/video"
 
# Создаем директории по году, месяцу и дню, если они не существуют
year=$(date +"%Y")
month=$(date +"%m")
day=$(date +"%d")
 
# Получаем текущее время в формате "час_минуты"
current_time=$(date +"%H-%M")
M=$(date +"%M")
# Длительность записи в секундах (10 минут)
duration=600
 
# Записываем каждый поток в отдельный файл MP4
for stream_name in $streams; do
    # создаем структуру папок
    [ ! -d "$base_dir/$stream_name/$year/$month/$day" ] && mkdir -p "$base_dir/$stream_name/$year/$month/$day"
    # Создаем выходной файл MP4 с текущим временем в имени
    output_file="$base_dir/$stream_name/$year/$month/$day/${current_time}.mp4"
    # Команда для захвата видеопотока и записи в файл
    ffmpeg -hide_banner -loglevel warning -threads 2 -avoid_negative_ts make_zero -fflags +nobuffer+genpts+discardcorrupt -flags low_delay -rtsp_transport tcp -use_wallclock_as_timestamps 1 -i "rtsp://127.0.0.1:8554/$stream_name" -reset_timestamps 1 -strftime 1 -c:v copy -c:a aac -strict experimental -t "$duration" "$output_file" &> $base_dir/$stream_name'_'$M'.txt' &
done

cat cleanup.sh

#!/bin/bash
 
# Set the target size for camera folders in GB
target_size_gb=90
 
# Directory containing camera folders
base_dir="/media/disk1/video"
 
# Iterate over camera folders
for camera_dir in "$base_dir"/*/; do
    # Get the current size of the camera folder in GB without decimal part
    size_gb=$(du -s "$camera_dir" | awk '{printf "%.0f\n", $1 / 1024 / 1024}')
 
    # Calculate how much to delete to reach the target size
    space_to_free_gb=$((size_gb - target_size_gb))
 
    # Check if the current size exceeds the target size
    if (( size_gb > target_size_gb )); then
        echo "Cleaning $camera_dir"
        # Delete oldest files until the folder size is reduced to the target size
        while (( space_to_free_gb > 0 )); do
            # Delete the oldest file in the folder
            find "$camera_dir" -type f -printf '%T@ %p\n' | sort -n | head -n 1 | cut -d' ' -f2- | xargs rm
            # Update the current size
            size_gb=$(du -s "$camera_dir" | awk '{printf "%.0f\n", $1 / 1024 / 1024}')
            # Calculate the remaining space to free
            space_to_free_gb=$((size_gb - target_size_gb))
        done
    fi
done
cam.1714924801.txt.gz · Последнее изменение: (внешнее изменение)