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

тигромух
=VinT=:
  1. Маленький угол (<60 град.)

У меня на FullHD угол маленький, но если переключить в 720p получается вполне адекватный. Можно летать.
Но у меня китайская камера с M12.

=VinT=:
  1. Плохо работает в условиях слабой освещённости. Качество динамической картинки также сильно зависит от освещённости. Если света меньше среднего - на картинке будут артефакты при резких движениях.

Это скорее проблемы h264 и низкого битрейта.

=VinT=:
  1. Минимальная задержка при передаче в h264 через gstreamer достигается при опции tune=zerolatency. К сожалению реализация модуля камеры omxh264dec(для rasbery pi cam) не поддерживает этот флаг (могла бы быть задержка на уровне 0,15 сек вместо 0,25). Возможно у ребят с виртурилкой эта проблема решена.(будут лишние деньги - куплю их девайс).

Подождите, вы тащите с камеры поток в H.264 и декодируете его? Или для чего вам omxh264dec?
Я пытался брать сырой поток с камеры и кодировать через omxh264enc, но получил адские тормоза. Скорее всего из-за сырого драйвера v4l. Или руки у меня не оттуда 😃
Пока что я остановился на общепринятом варианте скармливания потока с raspivid в gstreamer через fdsrc. Задержка ~0.2 (через wifi). Но с идеей наложить ОСД пришлось расстаться 😦

yurik999

расскажите какие девайсы надо прикупить чтоб через вашу плату и 3g например транслировать видео HD (или более высокого разрешения чем обычные аналоговые) . Ну и по деньгам тож.

=VinT=
тигромух:

У меня на FullHD угол маленький, но если переключить в 720p получается вполне адекватный. Можно летать.
Но у меня китайская камера с M12.

То что указано выше справедливо для raspberry pi cam и usb камер : Creative Live! Cam Sync HD и Logitech Webcam C170. Наиболее критична проблема с углом у raspberry pi cam без оптики.

тигромух:

Это скорее проблемы h264 и низкого битрейта.

Согласен. h264 не очень подходит для динамики.

тигромух:

Подождите, вы тащите с камеры поток в H.264 и декодируете его? Или для чего вам omxh264dec?
Я пытался брать сырой поток с камеры и кодировать через omxh264enc, но получил адские тормоза. Скорее всего из-за сырого драйвера v4l. Или руки у меня не оттуда 😃
Пока что я остановился на общепринятом варианте скармливания потока с raspivid в gstreamer через fdsrc. Задержка ~0.2 (через wifi). Но с идеей наложить ОСД пришлось расстаться 😦

У меня первая версия передачи работала с цепочкой omxh264enc. Нагрузка на процессор малины была в среднем 10%.(для raspberry pi cam). Задержки о которых Вы пишите выше возможны:

Для raspberry pi cam

  1. Из-за старой прошивки raspberry (нуженrpi-update)
  2. Старой версии gstreamer (у меня стоит 1.0.7)

Для USB камеры

  1. Из-за несоотвествия формата изображений - большинство usb камер нативно даёт картинку в jpeg. При перекодировании как раз и подвивает процессов (т.е. jpeg --> raw --> h264).

Сейчас я тоже делаю цепочку на raspivid. Но тут надо понимать что в него зашит кусок кода от кодека omxh264enc. Также я писал о опции tune=zerolatecy. Это команда применяется по всей цепочке gstreamer. В случае использования утилиты raspivid с перенаправлением потока она не оказывает на него никакого воздействия.

yurik999:

расскажите какие девайсы надо прикупить чтоб через вашу плату и 3g например транслировать видео HD (или более высокого разрешения чем обычные аналоговые) . Ну и по деньгам тож.

Евгений - посмотрите в моём блоге, я все шаги описываю.
Сейчас у меня сам проект в промежуточном состоянии(не получается облетать квадрик, по программной части всё работает).
По 3g ещё не делал этап.

Грубо расходы на блок видеопередачи в HD 3400 р:
rasbery pi A = 1 000
rasbery pi cam = 1 000
usb hub =200 р
ubec 5A =200 р
3g модем мегафон = 1000

Если нужно ещё управлять через сеть то:
APM 2.5 = 2500
Андроид планшет = мин 7000

РД00
=VinT=:

посмотрите в моём блоге, я все шаги описываю

Не совсем понял, как сделано соединение APM - USB Hub - WiFi/модем. MAVLINK идет через Raspberry ?

=VinT=
РД00:

Не совсем понял, как сделано соединение APM - USB Hub - WiFi/модем. MAVLINK идет через Raspberry ?

Да.
На raspberry крутиться демон, который открывает USB порт и читает/пишет все mavlink сообщения. С другой стороны он эти данные читает/принимает через UDP порт.

тигромух
=VinT=:

У меня первая версия передачи работала с цепочкой omxh264enc. Нагрузка на процессор малины была в среднем 10%.(для raspberry pi cam). Задержки о которых Вы пишите выше возможны:
Для raspberry pi cam

  1. Из-за старой прошивки raspberry (нуженrpi-update)
  2. Старой версии gstreamer (у меня стоит 1.0.7)

Вы, наверное, использовали uv4l? Мне идея с драйвером в юзерлэнде не понравилась и я экспериментировал с ядерным модулем.
Прошивка у меня самая новая, т.к. без последнего фикса драйвера, gstreamer вообще не отрывал v4l2src. У него там вялотекущая бага с перечислением доступных разрешений. В последней версии драйвера добавили костыль для обхода.
Gstreamer тоже ставил всяких версий. Даже из сорцов собирал. Малина ужасно тормозная, собирался он часов 12 😃
Самое смешное, что в первых сборках модуля все работало правильно и кто-то на форуме даже рапортовал о достигнутой латентности в 150мс. А сейчас все сломали и где искать концы непонятно…
С пайпом от raspivid вполне можно было бы жить, но все-же хочется что-нибудь порисовать на экране 😦

=VinT=:

Также я писал о опции tune=zerolatecy.

Это фишка кодека x264. Для малины не актуально. Вообще, на это тему хорошо написано тут.
И это сходится с моими экспериментами: задержка от камеры до оверлея, т.е. до энкодера составляет около 100мс.
Если хотите, могу фотку поискать 😃

1 month later
Chester_kz

Позволю себе немного оживить тему.
Сделал передачe HD(720) видео через LTE.
На малине в принципе все как у всех gsteamer отдает черeз UDP.
> gst-launch-1.0 rpicamsrc bitrate=4500000 vflip=true hflip=true preview=false ! video/x-h264, width=1280, height=720, framerate=25/1, profile=high ! h264parse ! rtph264pay config-interval=1 pt=96 mtu=1300 ! udpsink host=<серый ip телефона> port=5000 sync=false
Далее usb свисток в моем случае это ZTE MF823.
На приеме работал андроид телефон в той же сети оператора (4G). Софтину на телефон делал по примерам использовал последний SDK. если кому надо будет вышлю исходники или apk.
наш горе оператор выдает серые IP потому приходиться мучатся с конфигами. Но работает. Задержка где то такая-же как и по вайфай. Может немного больше. Не знаю почему но по вайфай я нередко видел аретефакты что говорит о том что пакеты дропаются. Здесь такого не видел.

тигромух
Chester_kz:

На малине в принципе все как у всех gsteamer отдает черeз UDP.

Через ядерный v4l не пробовали? Задержка, по идее, должна быть поменьше.
Сам пробовал, но погряз в багах gstreamer’а и забросил это дело…
А через raspivid меньше ~200 никак не получается 😦

Chester_kz
тигромух:

Через ядерный v4l не пробовали? Задержка, по идее, должна быть поменьше.

Я использовал плагин к стримеру отсюда github.com/thaytan/gst-rpicamsrc с ним вроде как задержка чуть меньше. Хотя возможно показалось. Но объективно могу сказать что с этим плагином нагрузка на основной проц гораздо меньше чем при использовании raspivid.
Не подскажите где почитать про “ядерный v4l”?

schs
Chester_kz:

если кому надо будет вышлю исходники или apk.

Можно .apk?

Chester_kz
schs:

Можно .apk?

Положил в дропбокс
В меню программы есть только Play и Pause. Видео идет в полный экран. Экран не гаснет. В принципе это стандартный туториал от г-стримера тока чуть чуть подпиленный.

schs
Chester_kz:

Положил в дропбокс

Добрался попробовать. У меня на устанавливается. Android 4.1.1kernel 3.0.8+

Chester_kz
schs:

Добрался попробовать. У меня на устанавливается. Android 4.1.1kernel 3.0.8+

Похоже я собирал под кит-кат (=>4.4) как разгребусь с работой пересоберу для версий ниже.
Кстати нашел любопытный пост на дронсах.
diydrones.com/profiles/blog/show?id=705844%3ABlogP…
В двух словах человек утверждает что можно добиться уменьшения задержки за счет увеличения fps.
Попробовал у себя разницу в latency визуально что-то не заметил. Хотя увеличение fps заметно стало - смотреть приятно.

тигромух
Chester_kz:

В двух словах человек утверждает что можно добиться уменьшения задержки за счет увеличения fps.
Попробовал у себя разницу в latency визуально что-то не заметил.

Интересно, надо потестировать…
А вы пробовали через raspivid/fdsrc или rpicamsrc?

Chester_kz
schs:

Добрался попробовать. У меня на устанавливается. Android 4.1.1kernel 3.0.8+

пересобрал под 4.0 ссылка

SGordon

Подскажите подходящую камеру для малины для фпв…

Chester_kz
SGordon:

Подскажите подходящую камеру для малины для фпв…

Так она вроде как одна Pi Cam. Искал альтернативу но что-от ничего не нашел. Камера конечно не ахти…
Хотя есть энтузиасты которые с easycap используют.

schs
Chester_kz:

Кстати нашел любопытный пост на дронсах

Там описывается проброс raw потока, не самый лучший вариант по требуемой полосе пропускания.

тигромух
Chester_kz:

Так она вроде как одна Pi Cam.

На ebay полно альтернатив. С разными линзами.

schs:

Там описывается проброс raw потока, не самый лучший вариант по требуемой полосе пропускания.

В самом посте - да, фигня с потоком по TCP. Смотрите коммент от Christian Winkler.