Видеотрансляция с БПЛА "Пеликан"
БПЛА "Пеликан" поддерживает захват видео с любого 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 протокола:
- Нет возможности остановить передачу данных при отсутсвии клиентов.
- Необходимо указывать 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, при условии, что последний собран с поддержкой видеотрансляции.