ZaLinux.ru

Как записать видео с IP камеры (RTSP поток)

В этой статье мы узнаем, как подключиться к видеокамере для просмотра изображения без веб-браузера и программ от производителя. То есть мы напрямую подключимся к IP камере для просмотра и записи видео на компьютер.

Чтобы подключиться к IP камере и записать видео RTSP поток нужно знать маршрут (route), то есть URL адрес, который начинается с «rtsp://».

  • rtsp://85.105.131.242:554/stream1
  • rtsp://192.168.0.167:554/user=admin_password=JUkhMFgP_channel=1_stream=0.sdp/
  • rtsp://:@79.127.101.32:554/user=admin&password=&channel=1&stream=0.sdp?

Как открыть RTSP в VLC и MPlayer

Оба этих проигрывателя поддерживают работу с потоковым видео.

В меню VLC перейдите в Медиа → Открыть URL, либо откройте окно ввода адреса с помощью сочетания клавиш Ctrl+n. Перейдите на вкладку «Сеть» и введите адрес вместе с указанием протокола.

Когда всё будет готово, нажмите кнопку «Воспроизвести».

openRTSP — клиент RTSP

IP-камеры разного качества, некоторые из них, по моему опыту, ведут себя нестабильно. Работа с их потоками RTSP требует определённого терпения.

Проект Live555 предоставляет относительно отказоустойчивую реализацию клиента RTSP, openRTSP, для получения аудио/видеопотоков RTSP через интерфейс командной строки.

Связанная статья: Инструкция по openRTSP — клиент RTSP для приёма и записи потокового медиа

Например, чтобы сохранять аудио/видео RTSP камеры в файлы в формате MP4 (также доступны AVI и QuickTime), один файл каждые 15 минут:

openRTSP -D 1 -c -B 10000000 -b 10000000 -4 -Q -F cam_eight -d 28800 -P 900 -t -u admin 123456 rtsp://192.168.1.108:554/11

Эти опции означают:

-D	Выйти, если нет пакетов в течение 1 секунды или более
-c	Непрерывная запись после завершения -d таймфрейма
-B 10000000	Входной буфер 10 МБ
-b 10000000	Буфер вывода 10 МБ (в файл)
-4	Создавать файлы в формате MP4
-Q	Показать статистику QOS
-F cam_eight	Префикс имени файла вывода с этим текстом
-d 28800	Время работы openRTSP столько секунд
-P 900	Записывать новый выходной файл каждые -P секунд
-t	Запросить конечный поток камеры по TCP, а не UDP
-u admin 123456	Имя пользователя и пароль, ожидаемые камерой
rtsp://192.168.1.108:554/11	RTSP URL камеры

Удаление опции -t заставляет openRTSP по умолчанию использовать UDP, что может немного уменьшить сетевой трафик. Вам нужно будет поиграть с вариантами, чтобы найти комбинацию, которая вам подходит.

Честно говоря, сами камеры иногда ненадёжны или просто реализованы по-другому — вроде неожиданного закрытия соединение — это не так уж и необычно для них.

Запись RTSP потока в ffmpeg

Следующий пример должен сохранить видео фрагментами по 300 секунд. (Обратите внимание, что длина клипа будет зависеть от частоты кадров на входе и выходе):

ffmpeg -i rtsp://192.168.0.21:554/mpeg4 -vcodec copy -acodec copy -map 0 -f segment -segment_time 300 -segment_format mp4 "ffmpeg_capture-%03d.mp4"

VLC с интерфейсом командной строки

У VLC есть ещё и консольный интерфейс.

VLC выглядит как идеальный кандидат для обработки вашего потока. Команда для записи выходного сигнала камеры в файл:

cvlc rtsp://85.105.131.242:554/stream1 --sout=file/ts:mystream.mpg

Для непрерывной записи с разбивкой на файлы можно запустить скрипт, который завершает этот процесс vlc и запускает новый экземпляр каждые 30 минут.

Вместо того, чтобы запускать задание cron для периодического уничтожения процесса VLC, можно было бы указать VLC, чтобы он работал в течение определённого времени и затем закрылся.

Это команда запускает VLC в течение указанного времени, а затем завершает работу. Параметр vlc://quit является обязательным, поскольку VLC остановит запись и останется открытым. Эту команду нужно поместить в цикл.

cvlc -vvv rtsp://192.168.1.128:1554/11 --sout=file/ts:/ПУТЬ/ДО/ХРАНИЛИЩА/ЗАПИСЕЙ-$(date +"%Y%m%d%H%M%S").ts -I dummy --stop-time=480 vlc://quit

Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *