Вопрос или проблема
У меня есть пара камер Eufy Cam 2 Pro. Я хочу записывать RTSP-потоки на свой NAS.
Я пробовал встроенный сервис NAS, который работает только с Synology, а также множество программ для записи видео с открытым исходным кодом, но все они имеют разные проблемы.
Поэтому я хочу использовать что-то простое и с открытым исходным кодом и записывать потоки камеры на свое общее внутреннее хранилище.
Основная проблема, похоже, заключается в том, что камера Eufy транслирует видео только тогда, когда она внутренне активирована, чтобы сэкономить заряд батареи.
В основном методом проб и ошибок и бесчисленных часов мне удалось найти набор команд, которые могут записывать потоки, когда они происходят:
openRTSP -t -b 10000000 -B 10000000 -v -H rtsp://user:password@cam_IP/path | ffmpeg -i - -c:v copy cam_name-$(date +"%Y-%m-%d-%H-%M-%S").mp4
Проблема в том, что это выдает ошибки и перестает «слушать», если поток не активен. Я собирался попробовать создать сценарий, который будет запускаться каждые несколько секунд и сначала проверять, работает ли openRTSP, прежде чем запускать его.
Это кажется очень новичковским / неэлегантным решением, но я не могу найти переключатель openRTSP (или другое решение), который просто постоянно слушает потоки и записывает их в отдельные файлы, когда они отправляются.
Любая помощь будет высоко оценена.
Спасибо.
Почему бы вам не использовать только openRTSP с подходящими опциями?
$ openRTSP -D 1 -c -B 10000000 -b 10000000 -q -Q -F ip_cam -d 28800 -P 900 -t rtsp://192.168.xx.xx/11
Некоторые опции объяснены:
-D 1 # Прекратить, если нет пакетов в течение 1 секунды или более
-c # Непрерывная запись после завершения времени -d
-B 10000000 # Входной буфер 10 МБ
-b 10000000 # Выходной буфер 10 МБ (в файл)
-q # Создавать файлы в формате QuickTime
-Q # Показывать статистику QOS
-F ip_cam # Добавить этот текст к названиям выходных файлов
-d 28800 # Запускать openRTSP 28800 секунд
-P 900 # Начинать новый выходной файл каждые 900 секунд
-t # Запрашивать завершение потока камеры через TCP, а не UDP (медленнее, но пакеты проверяются)
rtsp://192.168.xx.xx/11 # RTSP-URL камеры
Это работает у меня, используя камеру ip iegeek g20 и старый rpi 2, она слушает потоки и записывает их в отдельные файлы. Что-то вроде дешевой системы NVR на rpi.
Есть несколько разных конфигураций и опций, которые я не использую, просто изучите их.
http://www.live555.com/openRTSP/
Или вы можете использовать ffmpeg
ffmpeg -i "rtsp://192.168.xx.xx/11" -c copy -reset_timestamps 1 ip_cam_file.avi
Помните, что вы можете изменить разрешение, изменив 11 на 12 в адресе rstp.
Это, вероятно, аппаратное ограничение, например, RTSP вообще недоступен для обычной уличной лампы и внутренних камер, сокращающих непрерывный RTSP-поток до 1080p. Вероятно, потому что ЦП не может это обработать, поэтому никогда не будет активировано обновлениями программного обеспечения. Очень жаль, так как нет настоящей альтернативной уличной лампы, которая может работать 24/7 с RTSP и локальным хранилищем или данными PoE.
Ответ или решение
Настройка записи потоков RTSP с помощью openRTSP: руководство для Eufy Cam 2 Pro
Введение
Eufy Cam 2 Pro — это популярная камера безопасности, но возможность непрерывной записи потоков через RTSP может быть ограничена ее дизайном для сохранения аккумулятора. Вы можете использовать программу openRTSP для захвата потоков видеозаписи и записи их на вашего сетевого хранилища (NAS). В этой статье мы рассмотрим, как настроить openRTSP для записи потоков с вашей камеры, а также предложим альтернативные решения для обработки периодической недоступности потока.
Установка openRTSP
Для начала вам нужно установить пакет live555, который содержит openRTSP. В зависимости от вашей операционной системы, установка может отличаться:
Для Ubuntu / Debian:
sudo apt-get update
sudo apt-get install live555
Для CentOS / Fedora:
sudo yum install live555
Использование openRTSP для записи потоков
Давайте рассмотрим ключевые параметры командной строки, которые вам понадобятся для настройки openRTSP:
openRTSP -D 1 -c -B 10000000 -b 10000000 -q -Q -F ip_cam -d 28800 -P 900 -t rtsp://user:password@cam_IP/path
Где:
-D 1
: Программа завершится, если не будет получено ни одного пакета в течение 1 секунды.-c
: Продолжить запись, после завершения временного интервала, указанного в-d
.-B 10000000
: Размер входного буфера 10 МБ.-b 10000000
: Размер выходного буфера 10 МБ (на файл).-q
: Создание файлов в формате QuickTime.-Q
: Отображение статистики качества обслуживания (QOS).-F ip_cam
: Префикс для имен выходных файлов.-d 28800
: Запуск openRTSP на 28800 секунд (или 8 часов).-P 900
: Начинать новый выходной файл каждые 900 секунд.-t
: Запрос потока TCP, а не UDP; более надежный, но медленный.rtsp://user:password@cam_IP/path
: RTSP-URL вашей камеры.
Пример команды с вашими данными может выглядеть следующим образом:
openRTSP -D 1 -c -B 10000000 -b 10000000 -q -Q -F EufyCam -d 28800 -P 900 -t rtsp://user:password@192.168.xx.xx/path
Устранение ошибок при прерываниях потоков
Одной из основных проблем, с которой вы можете столкнуться, является то, что openRTSP перестает записывать, если поток недоступен. Для решения этой проблемы, рекомендую использовать сценарий на Bash, который будет периодически проверять, работает ли openRTSP, и перезапускать его в случае необходимости. Пример скрипта может выглядеть так:
#!/bin/bash
while true; do
# Проверяем, работает ли openRTSP
if ! pgrep openRTSP > /dev/null; then
# Запускаем openRTSP, если он не работает
openRTSP -D 1 -c -B 10000000 -b 10000000 -q -Q -F EufyCam -d 28800 -P 900 -t rtsp://user:password@192.168.xx.xx/path &
fi
sleep 30 # задержка перед следующей проверкой
done
Этот скрипт будет проверять каждые 30 секунд, работает ли openRTSP, и перезапускать его, если это не так.
Альтернативное решение с использованием ffmpeg
Если вам нужно больше контролировать обработку и запись видео, вы также можете использовать ffmpeg. Простой пример команды для записи потока камеры:
ffmpeg -i "rtsp://user:password@192.168.xx.xx/path" -c copy -reset_timestamps 1 EufyCam-$(date +"%Y-%m-%d-%H-%M-%S").mp4
Этот способ позволяет захватывать видео в реальном времени и сохранять его.
Заключение
Использование openRTSP для записи потоков с Eufy Cam 2 Pro позволит вам эффективно управлять доступным видео и сохранять его на NAS. Обратите внимание на возможность использования скриптов для автоматизации процесса и снижения человеческого фактора ошибок. Благодаря описанным методам вы сможете наладить надежное решение для записи потокового видео с камеры.