Запись видео с камер: различия между версиями

Материал из IT в школе
Перейти к навигацииПерейти к поиску
нет описания правки
 
(не показаны 2 промежуточные версии 2 участников)
Строка 1: Строка 1:


=== IP камеры ===
=== IP камеры ===
Строка 32: Строка 34:


Если процесс запускается на сервере через ssh, то следует знать об особенности запуска процессов от пользователя, который собирается после запуска разлогиниться. В Альтлинукс и МОС процессы, запущенные пользователем останавливаются при выходе этого пользователя. В случае, если Вы собираетесь запустить и разлогиниться, для корректного функционирования записи эту особенность поведения (она зависит от дистрибутива Linux) надо заблокировать. для этого нужно установить пакет systemd-settings-disable-kill-user-processes.
Если процесс запускается на сервере через ssh, то следует знать об особенности запуска процессов от пользователя, который собирается после запуска разлогиниться. В Альтлинукс и МОС процессы, запущенные пользователем останавливаются при выходе этого пользователя. В случае, если Вы собираетесь запустить и разлогиниться, для корректного функционирования записи эту особенность поведения (она зависит от дистрибутива Linux) надо заблокировать. для этого нужно установить пакет systemd-settings-disable-kill-user-processes.
ffmpeg в данном скрипте пишет поток в формате, в котором его выдает камера. От настроек камеры зависит кодек, разрешение и как следствие объем записанных данных. В моем случае, при использовани камер, настроенных по рекомендациям ЕЦХД , объем файла за 90мин составляет 60-250 мбайт (зависит от активности движения перед камерой). Обычно камеры могут выдавать потоки в 2-3 разрешениях, устанавливаемых параметром subtype в URL. Например ?subtype=2 может означать пониженное разрешение. Насколько я знаю стандарта в этом плане нет, так что нужно искать описание на конкретную модель камеры.
=== WEB камеры ===
=== WEB камеры ===
Скрипт ниже можно запускать на доске, чтобы превратить ее c подключенной web-камерой в rtsp камеру наблюдения. Скрипт пока в разработке<syntaxhighlight lang="bash">
Скрипт ниже можно запускать на доске, чтобы превратить ее c подключенной web-камерой в rtsp камеру наблюдения.  
 
Работает почему-то не очень надежно.<syntaxhighlight lang="bash">
#!/bin/bash
#!/bin/bash
#крипт запускается НЕ от root
#скрипт запускается НЕ от root
#ПОИСК ИСТОЧНИКА ЗВУК ПО НАЗВАНИЮ webcam
#ПОИСК ИСТОЧНИКА ЗВУК ПО НАЗВАНИЮ webcam
PULSE=`pactl list short sources | grep --ignore-case webcam | awk '{ print $1 }'`
PULSE=`pactl list short sources | grep --ignore-case webcam | awk '{ print $1 }'`
Строка 42: Строка 49:
PULSE=default
PULSE=default
fi
fi
#ПОМСК ИСТОЧНИКА ВИДЕО
#ПОИСК ИСТОЧНИКА ВИДЕО
V4L=`v4l2-ctl --list-devices | grep -A 1 --ignore-case webcam | grep /dev/ | awk '{ print $1 }'`
V4L=`v4l2-ctl --list-devices | grep -A 1 --ignore-case webcam | grep /dev/ | awk '{ print $1 }'`
#НЕ НАЙДЯ БЕРЕМ ПЕРВЫЙ
#НЕ НАЙДЯ БЕРЕМ ПЕРВЫЙ
Строка 49: Строка 56:
fi
fi


#запуск сервера rtdp на порту 8554
#запуск сервера rtsp на порту 8554


nohup ffmpeg -thread_queue_size 1024 -f v4l2 -input_format mjpeg  -i ${V4L}  -f pulse -ac 1 -thread_queue_size 1024 -i ${PULSE}  -acodec aac -vcodec libx264 -preset ultrafast -crf 22 -s hd720 -vf format=yuv420p -profile:v main -threads 0 -f mpegts - | vlc -vv -I dummy -  --sout='#rtp{sdp=rtsp://:8554/} --sout-all --sout-keep' >/dev/null 2>/dev/null &
nohup ffmpeg -thread_queue_size 1024 -f v4l2 -framerate 15 -input_format mjpeg  -i ${V4L}  -f pulse -ac 1 -thread_queue_size 1024 -i ${PULSE}  -acodec aac -vcodec libx264 -preset ultrafast -crf 22 -s hd720 -vf format=yuv420p -profile:v main -threads 0 -f mpegts - 2>/dev/null | vlc -I dummy -  --sout='#rtp{sdp=rtsp://:8554/} --sout-all --sout-keep' >/dev/null 2>/dev/null &
#
#vlc -I dummy - --sout='#std{access=http,mux=ts,dst=:8080}'


#ссылка для просмотра или записи rtsp://<you ip>:8554/ (последний символ важен!)
# Для того чтобы подключаться по http, часть команды после vlc следует заменить на следующую (у меня работает плохо)
# vlc -I dummy - --sout='#std{access=http{mime=video/mp4},mux=ts,dst=:8080}'
# большая часть взята отсюда https://stackoverflow.com/questions/26999595/what-steps-are-needed-to-stream-rtsp-from-ffmpeg




Навигация