Skip to content

Script for recording video from a capture card or web camera

License

Notifications You must be signed in to change notification settings

minbbb/cvbs-record

Repository files navigation

cvbs-record

Скрипт для записи видео с платы захвата или веб камеры. Удобно использовать для записи с аналоговой камеры с платой оцифровки через мини ПК (в данном случае для примера используется banana pi, но можно использовать что вам нравится).

Инструкция по установке

  1. Скачиваем образ armbian https://www.armbian.com/bananapi-m2-zero. По идее не важно какой дистрибутив, но я использовал Armbian Bionic server.
  2. Пишем образ на флешку через rufus
  3. Подключаемся к терминалу
  4. Для настройки на плате нужен будет интернет, поэтому подключаемся к wifi через команду nmtui -> Activate a connection
  5. Выключаем GUI (если он включен), чтобы он не расходовал ресурсы systemctl set-default multi-user.target
  6. Скачиваем скрипты git clone https://github.com/minbbb/cvbs-record.git
  7. Скачиваем ffmpeg
    wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-armhf-static.tar.xz
    tar -xf ffmpeg-release-armhf-static.tar.xz
    cp ffmpeg-X.X-armhf-static/ffmpeg cvbs-record/
    cp ffmpeg-X.X-armhf-static/ffprobe cvbs-record/
    
  8. Ставим nodejs
    apt update
    apt install nodejs
    apt install npm
    
  9. Переходим в директорию со скриптами cd cvbs-record
  10. Устанавливаем зависимости npm install
  11. На данном этапе уже можно вручную запустить скрипт и посмотреть как оно работает node record.js
  12. Исправляем в файле сервиса record.service путь до скрипта в параметре ExecStart и путь до директории в параметре WorkingDirectory. Можно это сделать к примеру через nano record.service
  13. Копируем файл сервиса record.service в директорию /etc/systemd/system cp record.service /etc/systemd/system/
  14. Включаем сервис systemctl enable record.service
  15. Если хотите сразу запустить скрипт, то выполняем systemctl start record.service Или можно перезапустить плату и скрипт уже сам запустится
  16. При необходимости можно немного настроить скрипт через файл config.json. Там можно найти путь куда сохранять видео, вкл/выкл логирование, вкл/выкл автозапись при включении, выбор видеоисточника(умеет автоматически определять) и выбор аудиоисточника.
  17. Настраиваем wifi точку для доступа к веб-интерфейсу платы вне доступа домашней wifi сети. Для этого нужен непрерывный доступ к терминалу, поэтому если подключены к плате через встроенный wifi, подключайтесь как-то по другому чтобы настроить. armbian-config -> network -> hotspot
  18. Должна появиться wifi точка с названием ARMBIAN. Перезагружаемся если точка не появилась reboot
  19. После запуска точки настраиваем под себя имя точки и пароль armbian-config -> network -> hotspot -> edit -> basic
  20. После подключения к wifi точке можно присоединиться к плате по адресу 172.24.1.1 (по умолчанию такой, можно поменять если хочется)
  21. Может так случиться что после запуска точки не будет работать dhcp при подключении к ней. Это можно попробовать решить 2-мя способами:
    • Задать на устройстве с которого подключаетесь статику в подсети 172.24.1.*
    • Просто переподнять точку
  22. Открываем в браузере адрес http://172.24.1.1 и видим интерфейс управления.
  23. Если запись будет подлагивать, то меняем governor ядра на performance через armbian-config -> System -> CPU -> выбираем максимальную и минимальную частоту -> Выбираем performance

Управление с помощью кнопки (GPIO)

При нажатии на кнопку будет происходить запуск или остановка записи, в зависимости от того какое сейчас состояние.

Индикатор мерцает с частотой в 1000 мс - камера в режиме ожидания
Индикатор мерцает с частотой в 50 мс - происходит запуск записи
Индикатор мерцает с частотой в 200 мс - происходит запись видео

Схема

image

Прототипы

С применением Orange Pi Zero image image

С применением Banana Pi BPI-M2 ZERO image image

About

Script for recording video from a capture card or web camera

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published