Превращаем роутер на OpenWRT в видеорегистратор (NVR) для IP-камер: подробная инструкция


Превратить роутер с прошивкой OpenWRT в полноценный сетевой видеорегистратор (NVR) — технически выполнимая, но ресурсоемкая задача. Основная проблема заключается в том, что большинство домашних роутеров имеют слабый процессор и очень ограниченный объем встроенной флеш-памяти.

Главное правило такого проекта: использовать внешний USB-накопитель (флешку или жесткий диск) для расширения памяти и устанавливать только минимально необходимый набор пакетов.

Ниже приведена пошаговая инструкция по настройке.

1. Подготовка оборудования и системы
[list][*]Накопитель: Подключите к роутеру USB-диск или флешку. Рекомендуется использовать файловую систему ext4.
[*]Подготовка диска: В веб-интерфейсе OpenWRT (LuCI) перейдите в System → Mount Points. Отформатируйте накопитель при необходимости и добавьте точку монтирования (например, /mnt/sda1). Убедитесь, что галочка «Enable this mount» активна.
[*]Перенос оверлея: Чтобы освободить внутреннюю память роутера, необходимо перенести корневой оверлей на USB-диск. Это делается через командную строку (SSH) пакетами block-mount, kmod-fs-ext4 и утилитой extroot. Без этого шага установка тяжелых баз данных почти наверняка завершится ошибкой из-за нехватки места.
[*]Обновление списков пакетов:[/font]

Код:
opkg update

[/list]

2. Выбор программного обеспечения
Существует несколько вариантов реализации NVR на базе Linux:

Вариант A: Motion (самый простой и легковесный)
Классический демон, который захватывает видео с IP-камер (по протоколу RTSP или HTTP MJPEG), отслеживает движение и сохраняет записи.
[list][*]Установка:

Код:
opkg install motion

[*]Настройка: Файл конфигурации находится по адресу /etc/motion.conf. Вам нужно будет прописать адреса ваших камер (URL потока RTSP), настроить чувствительность детектора движения, пути сохранения видео (тот самый /mnt/sda1/video) и лимиты хранения.[/list]
Плюсы: Крайне низкие требования к ресурсам.
Минусы: Устаревший интерфейс, нет удобного поиска по архиву, высокая нагрузка на CPU при обработке Full HD потоков.

Вариант Б: ZoneMinder (профессиональный стандарт)
Мощная система видеонаблюдения с веб-интерфейсом, поддержкой множества камер, событийным режимом записи и аналитикой.
[list][*]Установка: Потребует поднятия полноценного веб-стека. Сначала устанавливается сервер базы данных MariaDB и веб-сервер Nginx/Apache, затем сам ZoneMinder. На слабых роутерах (с памятью менее 128-256 МБ ОЗУ) запустить его практически невозможно без активного файла подкачки (swap) на внешнем диске.

Код:
# Примерный порядок (пакеты могут отличаться в зависимости от версии)
opkg install mariadb-server php8-fpm nginx zonezoneminder

[/list]
Плюсы: Профессиональный мониторинг в реальном времени, удобный просмотр архива.
Минусы: Очень высокие требования к оперативной памяти и процессору.

Вариант В: Frigate (современный ИИ-NVR)
Система, которая использует нейросети для распознавания объектов (люди, машины, животные, посылки).
[list][*]Особенности: Для работы требует аппаратное ускорение (USB-корралетки Coral TPU или поддержку Intel Quick Sync / ffmpeg с VAAPI). Чисто программно на дешевом ARM-процессоре роутера работать не сможет — один поток сожрет 100% CPU.[/list]

3. Сборка видеопотоков (FFmpeg)
Независимо от выбранного софта, роутеру придется декодировать потоки с камер. За это отвечает ffmpeg.

Код:
opkg install ffmpeg

Проверьте нагрузку перед установкой NVR. Зайдите на камеру, узнайте URL её RTSP-потока (обычно выглядит как rtsp://admin:pass@192.168.1.10:554/stream1) и попробуйте воспроизвести его через консоль:

Код:
ffmpeg -i rtsp://адрес_камеры -t 10 -f null -

Если загрузка процессора во время теста достигает 90-100%, писать видео в высоком качестве этот роутер не сможет. Решение — либо снизить битрейт/разрешение в настройках самой камеры, либо выбрать более производительное железо.

4. Настройка ротации записей
Чтобы диск не переполнился, необходимо настроить удаление старых файлов. Самый надежный способ на OpenWRT — стандартный планировщик cron.
Пример задачи для удаления файлов старше 7 дней (добавляется через crontab -e):

Код:
0 4 * * * find /mnt/sda1/video -type f -mtime +7 -delete

Эта команда каждый день в 4 часа ночи будет искать в папке с видео файлы, которые не изменялись более 7 дней, и удалять их.


Практические ограничения и рекомендации

Параметр

Реальность на типичном домашнем роутере

Количество камер

Не более 1–2 камер в разрешении 720p или 1 камера 1080p при использовании Motion.

Битрейт

Камеры должны транслировать поток с низким битрейтом (до 1024 Кбит/с), иначе роутер захлебнется.

Формат записи

Избегайте постоянной записи (24/7). Используйте запись только по движению.

Сеть

Роутер станет узким местом. Если камера подключена по Wi-Fi, а пишет роутер по кабелю, возможны потери кадров.

Альтернативное решение:
Если ваша цель — просто надежное хранение видео, часто гораздо проще установить специализированное ПО (например, бесплатный Shinobi, iSpy или платные российские решения вроде Trassir/Axxon Next) на старый ноутбук, микрокомпьютер Orange Pi/Raspberry Pi или недорогой NAS. Они справятся с задачей обработки нескольких Full HD потоков несравнимо лучше любого бытового роутера. Использование роутера оправдано только если у вас есть одна нетребовательная камера и неиспользуемое устройство, которое не жалко занять под эту задачу.