Беспроводная передача видео в full HD

Борис_Х
oleg70:

Могу я задать вопрос по настройке Gstreamer ?

Да, конечно. Если интересует именно настройка Gstreamer, а не установка (на последних дистрибутивах Raspbian именно с ней возникает большинство проблем), то вот ссылка, которой я руководствовался bluerobotics.com/…/how-to-see-video-in-qgroundcont…

oleg70
Борис_Х:

настройка Gstreamer

Не понятно назначение и смысл параметра "caps= " (на приемной стороне), в сети много примеров, в некоторых из них сей параметр вообще рекомендуют копировать из сообщения потока на передающей стороне… и превращается он в длиннющую непонятную абракадабру, причем у кого то он в кавычках, у кого нет… и общий принцип его создания - не пойму…
Короче, если можно, внесите ясность… - что это…

Борис_Х
oleg70:

Не понятно назначение и смысл параметра "caps= " (на приемной стороне)

Олег, если честно, первый раз сталкиваюсь c оператором caps. Судя по всему, он содержит в себе спецификацию передаваемого потока. Я пошёл по пути наименьшего сопротивления. Вот команда, которую я использую на Raspberry с модулем камеры:

raspivid -n -fl -w 1280 -h 720 -b 10000000 -fps 30 -t 0 -o - | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=10 pt=96 ! udpsink host=<remote ip> port=5600

На принимающей стороне (на планшете) просто установлена последняя версия QGroundcontrol с вшитой поддержкой Gstreamer. Никакой код не требуется.

oleg70
Борис_Х:

первый раз сталкиваюсь c оператором caps

Я тут пол интернета перечитал на эту тему)))… в основном все примеры от авторов статей выглядят по разному, тут еще разные версии самого стриммера, разные платформы,…
Вещь похоже мощная и гибкая но разобраться в этой каше очень сложно…
По факту, у меня щас передача пакетов идет, а на приеме потока что то не клеится (mplayer отказывается понимать входящий формат)…

28 days later
macrokernel

oleg70, Борис Х,

Какой транспортный протокол вы используете для передачи видео - UDP? В системах видеоконференцсвязи используется протокол RTP. Может, стоит его попробовать? Вроде бы что-то есть под Linux для RTP. Навскидку гугл кое-что нашел.

Ещё кто-то тут говорил про броадкаст. Может быть стоит попробовать? Я так понимаю, что при широковещательной рассылке уменьшаются накладные расходы на канальном уровне - экономия на ARP-запросах?

Борис_Х
macrokernel:

oleg70, Борис Х,

Какой транспортный протокол вы используете для передачи видео - UDP? В системах видеоконференцсвязи используется протокол RTP. Может, стоит его попробовать? Вроде бы что-то есть под Linux для RTP. Навскидку гугл кое-что нашел.

Сергей, я так глубоко не копал… Для видео использую стандартный gstreamer, не углубляясь в его работу. Подозреваю, что он использует именно RTP протокол

Борис_Х
macrokernel:

Ещё кто-то тут говорил про броадкаст. Может быть стоит попробовать? Я так понимаю, что при широковещательной рассылке уменьшаются накладные расходы на канальном уровне - экономия на ARP-запросах?

Если для вас не принципиально наличие двусторонней связи, то wi-fi broadcast даст определённые преимущества. Как минимум, уменьшится лаг и увеличится дальность.

macrokernel:

Может быть gstreamer-у надо указать какие-нибудь RTP-параметры в явном виде?
…freedesktop.org/…/gst-plugins-good-plugins-plugin…

Какое железо вы планируете использовать? Вы уже запускали gstreamer на своей малине?

schs
macrokernel:

Какой транспортный протокол вы используете для передачи видео - UDP? В системах видеоконференцсвязи используется протокол RTP. Может, стоит его попробовать?

Это два разных уровня. RTP можно как по UDP так и по TCP пустить. RTP не лучший вариант в силу необходимости двустороннего обмена. Т.е. при обрыве связи будет процедура согласования, и так при каждом обрыве.

macrokernel
Борис_Х:

Какое железо вы планируете использовать? Вы уже запускали gstreamer на своей малине?

Я пока не приступил к реализации, только обдумываю варианты.

schs:

RTP не лучший вариант в силу необходимости двустороннего обмена.

Тогда да, RTP не нужен.

Борис_Х:

Если для вас не принципиально наличие двусторонней связи, то wi-fi broadcast даст определённые преимущества.

А, то есть wi-fi broadcast - это отдельный термин. Я думал имеется в виду обычный IP broadcast. Надо почитать.

Борис_Х
macrokernel:

Я пока не приступил к реализации, только обдумываю варианты.

А какой полётный контроллер стоит на дроне?

Борис_Х
macrokernel:

PixHawk Lite

Тогда есть смысл использовать gstreamer и обычный wi-fi. В последние версии qgroundcontrol вшит плагин gstreamer, видео с дрона будет отображаться непосредственно в окне qgroundcontrol на компьютере или планшете. Настраивается просто, работает стабильно 😃

macrokernel

Видел эту картинку, действительно удобно, но я больше склоняюсь к шлему.

Какая у Вас получается дальность?

msv
schs:

RTP можно как по UDP так и по TCP пустить.

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

Борис_Х
macrokernel:

Какая у Вас получается дальность?

Порядка 600м, дальше не пробовал. Думаю, по прямой около 700-800м вполне получится

oleg70
macrokernel:

А, то есть wi-fi broadcast - это отдельный термин.

Автор этой работы двигается в правильном направлении, а именно - “копает” сам линукс в сторону оптимизации задачи под цели FPV…
Но пока что (ИМХО) результат выглядит как “полумеры”, что в принципе не отрицает и сам автор…

9 days later
OTR1UM

Народ, а кто может объяснить нубу в 2 словах, в чем сложность портировать WifiBroadcast на нормальное железо на allwinner’е, например на Orange Pi ?
Аппаратный h264, MIPI / CSI и возможность накатить дебиан есть, например, на allwinner H3, который стоит 3-4$ за камешек.

raspivid -ih -t 0 -w 1280 -h 720 -fps 30 -b 4000000 -n -g 60 -pf high -o – | sudo ./tx -b 8 -r 4 -f 1024 wlan0

Я так понял, весь бродкаст это тупо программка tx, работающая через либу pcap, которая жрёт поток, который ей организует raspivid.
Получается, проблема только в raspivid, всё остальное встанет на любую линух-машину, в т.ч. на оранж.
Но для оранжа есть аналогичные распивиду тулзы, которые умеют в захват видео с камеры и формирование потока.
Может я чего-то не учитываю?

schs
OTR1UM:

Народ, а кто может объяснить нубу в 2 словах, в чем сложность портировать WifiBroadcast на нормальное железо на allwinner’е, например на Orange Pi ?

Вы портировали софт на иное железо? Сложность в отсутствии заинтересованных программистов.

OTR1UM:

Может я чего-то не учитываю?

Многого. Orange Pi хоть и имеет возможность аппаратного декодирования, но драйвера под Debian(Raspbian) нет, есть работающий только под Андроидную прошивку. Собранного gstreamer c аппаратным кодированием\декодированием тоже нет.

Bah

При выходной мощности 500 мВт и в 500 МГц , частота является незаконной в большинстве стран мира!
Кроме того, в комплекте с антеннами для 5.8GHz … не 500MHz, так что придется делать свои антенны.