Skip to content

Видеотрансляция с БПЛА "Пеликан"

БПЛА "Пеликан" поддерживает захват видео с любого HDMI-источника, совместимого со втроеным видеоконвертором CSI.

Трансляция видео возможна с использованием различных программных решений.

RTP

Для задач, где объём передаваемого трафика не имеет значения, предпочтительно использование видеотрансляции RTP/UDP. Данный вид видеотрансляции обладает малыми задержками в видеопотоке. Рекомендуется использоватья gstreamer для организациии передачи видео.

raspivid -n -b 800000 -fps 15 -t 0 -o - | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=10 pt=96 ! udpsink host=<client_host> port=9000

Внимание! Обнаружено, что клиенты на базе liblive555, включая VLC, часто некорректно работают с RTP-потоками gstreamer (зависают на первом кадре). Для тестирование потоков рекомендуется использовать gstreamer, либо QGroundControl.

RTSP

Существенные недостатки RTP протокола:

  1. Нет возможности остановить передачу данных при отсутсвии клиентов.
  2. Необходимо указывать IP-адрес клиента, либо широковещательный адрес.

Протокол RTSP решает данные недостатки, работая в качестве сеансового протокола для протокла RTP. Неблюдаются увеличения задержки при передачи видео с использованием RTSP, зависящие от реализации сервера.

gst-gateworks-apps (рекомендуется)

Приложение gst-variable-rtsp-server из проекта gst-gateworks-apps (собирается отдельно) предоставляет функции RTSP-сервера.

Перед сборкой необходимо установить gstreamer-rtsp-server-1.0.

raspivid -n -b 800000 -fps 15 -t 0 -o - | ./bin/gst-variable-rtsp-server -u "fdsrc ! h264parse ! rtph264pay name=pay0 pt=96 config-interval=5"

Внимание! Проблема с liblive555, связанная с RTP-потоками, актуальна и для RTSP-серверов.

gst-rtsp-server

Приложение test-launch из директории examples проекта gst-rtsp-server (собирается отдельно) предоставляет функции RTSP-сервера.

./examples/test-launch "( v4l2src device=/dev/video0 ! video/x-h264,framerate=59/1,width=640,height=480 ! h264parse ! rtph264pay name=pay0 config-interval=10 pt=96 )"

Для работы данной конфигурации RTSP-сервера необходимо включить поддержку V4L2 для CSI интерфейса Raspberry Pi (добавить bcm2835-v4l2 в /etc/modules и выполнить sudo modprobe bcm2835-v4l2).

Вместо V4L2 возможно использование модуля gst-rpicam (собирается отдельно):

./examples/test-launch "( rpicamsrc bitrate=1000000 sensor-mode=6 ! h264parse ! rtph264pay name=pay0 config-interval=10 pt=96 )"

Внимание! В зависимости от версии gstreamer может потребоваться старая версия gst-rtsp-server. Например, для версии 1.10.4 рекомендуется версия 1.2 gst-rtsp-server.

v4l2rtspserver

Альтернативный вариант RTSP-сервера (собирается отдельно).

v4l2rtspserver -F 15 -H 720 -W 1280 /dev/video0

Автоматический запуск

Для автоматического запуска видеотрансляции рекомендуется использовать следующий systemd-сервис:

[Unit]
Description=Video streaming service
After=network.target

[Service]
ExecStart=/bin/sh -c "<команда_для_запуска>"

[Install]
WantedBy=default.target

QGroundControl

Все описанные в документе виды видеотрансляций поддерживаются программным обеспечением для наземного управления QGroundControl, при условии, что последний собран с поддержкой видеотрансляции.