Превращаем ноутбук в камеру наблюдения с записью по сети

Скрипты для настройки записи с веб-камеры на ноутбуке с Ubuntu в сетевую папку:

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

sudo apt update
sudo apt install ffmpeg

Подключение шары для записи:

sudo apt install cifs-utils
sudo mkdir /mnt/network_share
sudo mount -t cifs -o username=имя_пользователя,password=пароль //адрес_сервера/папка /mnt/network_share

Можно добавить автоматическое монтирование после перезагрузки. В файл /etc/fstab добавить:

//адрес_сервера/папка /mnt/network_share cifs username=имя_пользователя,password=пароль 0 0

Собственно, команда для захвата видео с веб-камеры и записи его в файл:

ffmpeg -f v4l2 -i /dev/video0 -c:v libx264 -r 30 -s 1280x720 /mnt/network_share/запись_$(date +"%Y%m%d_%H%M%S").mp4

Параметры:

  • -f v4l2 — указывает на использование интерфейса видеозахвата Linux (веб-камера).
  • /dev/video0 — путь к веб-камере (проверьте, что веб-камера подключена с помощью команды ls /dev/video*).
  • -c:v libx264 — кодек для сжатия видео в формате H.264.
  • -r 30 — частота кадров (30 кадров в секунду).
  • -s 1280x720 — разрешение видео 720p.
  • /mnt/network_share/запись_$(date +"%Y%m%d_%H%M%S").mp4 — путь для сохранения видео, с меткой времени в имени файла.

Если требуется разбивать файлы по времени или размеру файлов, можно добавить параметры к FFmpeg. Например, чтобы каждые 60 минут создавался новый файл:

ffmpeg -f v4l2 -i /dev/video0 -c:v libx264 -r 30 -s 1280x720 -f segment -segment_time 3600 -reset_timestamps 1 /mnt/network_share/запись_%03d.mp4

Ну и вишенка на скрипте - создание systemd-скрипта для запуска при загрузке системы. Здесь встречаются грабли с параметрами внутри файла конфигурации скрипта, поэтому создадим промежуточный файл для запуска:

sudo nano /usr/local/bin/start_webcam_recording.sh

Его содержимое:

#!/bin/bash
/usr/bin/ffmpeg -f v4l2 -i /dev/video0 -c:v libx264 -r 30 -s 1280x720 -f segment -segment_time 3600 -reset_timestamps 1 /mnt/camera/rec_%03d.mp4

Этот файл надо сделать исполняемым:

sudo chmod +x /usr/local/bin/start_webcam_recording.sh

Создаем файл /etc/systemd/system/webcam-record.service со следующим содержимым:

 [Unit]
 Description=Webcam Recording Service
 After=network.target

 [Service]
 ExecStart=/usr/local/bin/start_webcam_recording.sh
 Restart=always

 [Install]
 WantedBy=multi-user.target

Активируем службу:

sudo systemctl daemon-reload
sudo systemctl enable webcam-record.service
sudo systemctl start webcam-record.service