EZ-WifiBroadcast DIY HD видео своими руками

svpcom

Overhead не дает - gstreamer у меня отлично работает на Pi Zero. Использование UDP для коммуникации наоборот плюс - то есть можно использовать Pi Zero только как контроллер камеры, а в качестве основной системы - NEO2 (куда подключить телеметрию, WFB и тд). Еще можно немного уменьшить latency если вместо raspivid’а использовать github.com/thaytan/gst-rpicamsrc

РД00:

Ясно, gstreamer использован как готовое и простое решение для парсинга потока и нарезания на кадры. Вопрос : а дополнительного overhead’а такая конструкция не создает ? Здесь gstreamer крутится еще одним параллельным процессом, плюс задействуется TCP/IP стек.

Судя по исходнику raspivid’а, он достает поток h264 из видеоподсистемы как раз по фреймам. Не даст ли выигрыша, если сразу в том же потоке отдавать их передатчику WFB, не задействуя ни pipes, ни TCP/IP ?

А зачем писать свой bitstream парсер и изобретать велосипед (попутно собирая все грабли, так как например один фрейм состоит из нескольких NAL’ов и пока декодер не получит их все, он не начнет процесс отрисовки), если есть протокол, специально сделанный для передачи видео по сети с учетом потери пакетов? Плюс RTP поток на земле можно еще и завернуть в qgroundcontrol - он там будет отлчно показываться.

lelik:

А нам-то RTP зачем ? Заголовки наверху добавлять, их передавать, внизу отрезать? Достаточно пакетизировать по границе NALU. И тут вариантов масса - и gstreamer, и raspivid с выводом в UDP, и еще масса способов.

И вообще, летали сегодня с USB-камерой, нанкой и 5 ГГц адаптером на 8812AU со встроенными антеннами и мощностью аж 18 dBm (ок. 60 мВт). Параллельно летал спарк от dji, дальность - 200-300м. Мы летим на 500 (дальность берется по 0 дропов), качество картинки ничуть не хуже (много разного народу смотрело и сравнивало). Ноут с писалкой был занят, посему кино нет.

lelik
svpcom:

Еще можно немного уменьшить latency если вместо raspivid’а использовать github.com/thaytan/gst-rpicamsrc

У меня была идея написать wfbc sink для gstreamer 😃

khomyakk

Полетал сегодня немного, проверял в том числе и “починенный” бустер. Он так до конца не починился. При нормальном охлаждении в полёте картинка начала рушиться. Посадил, обмотал скотчем, немного спасло, но только скорость выше 50км\ч-и скотч не спасал. Так что на полку.
Перед этим ещё покрутил параметры камеры. Вроде получше стало.

svpcom

Никак. RPI поддерживает только 2 камеры, так как вся обрабока идет внутри проприетарной прошивки VideoCore IV. Единственное решение для WDR - использовать внешнюю USB/Ethernet камеру с аппаратным h264 и WDR. Но, например, камеры для видеонаблюдения имеют latency около секунды…

fpv_mutant:

Мужики, WDR ни как не прикрутить к обычной камере (CSI)?

РД00
svpcom:

если есть протокол, специально сделанный для передачи видео

Согласен, решение изящное. Все gstreamer’овские цепочки без изменений переходят на новый транспорт, с WBC вместо Ethernet/WiFi.

questioner
svpcom:

например, камеры для видеонаблюдения имеют latency около секунды…

Все что ли? Это нельзя исправить изменением встроенного в камеру ПО? Насколько я понял, исходники на некоторые контроллеры камер открыты?

Htcohio

@All,

Has anyone taking a look at this small NanoPi Neo Module?

It has dual CSI camera input and specifications compatible to the RPI zero. The processor is somewhat weaker but the potential of this could be really big for low latency stereo vision.

Do you have any thoughts? As you may have noticed, the original wfb project is being reorganized with the image Builder by Respawndespair. If somebody thinks they could integrate this dual CSI bored I would consider donating it for someone to develop stereo Vision on?

www.arducam.com/…/nano-rpi-cmio-bot-uc366/

svpcom

In Users Guide you can found:
----
7.5
Run the Stereo Camera
Now you can run the stereo camera with the following command.
raspivid -w 1280 -h 480 -3d sbs -o stereo.264
The captured stereo.264 video file will look like this, side by side view.

------

So it outputs side-by-side video and you don’t need any modifications for WFB

Htcohio:

@All,

Has anyone taking a look at this small NanoPi Neo Module?

It has dual CSI camera input and specifications compatible to the RPI zero. The processor is somewhat weaker but the potential of this could be really big for low latency stereo vision.

Do you have any thoughts? As you may have noticed, the original wfb project is being reorganized with the image Builder by Respawndespair. If somebody thinks they could integrate this dual CSI bored I would consider donating it for someone to develop stereo Vision on?

www.arducam.com/…/nano-rpi-cmio-bot-uc366/

lelik
user1321:

Всё ли работает у Вас?

На одной зерохе из трех - проблема. Фикс выложу чуть позже.

svpcom:

Но, например, камеры для видеонаблюдения имеют latency около секунды…

RaspiCam v1

USB-камера видеонаблюдения

Параметры потока: H.264, 1080p30, bitstream -> rtp/udp

РД00
lelik:

Параметры потока: H.264, 1080p30, bitstream -> rtp/udp

Т.е. картинка идет по RTP через Ethernet или WiFi, без WBC ?

kuspower

Привет, Лелик,

Прошли месяцы, когда я надеялся, что кому-то удастся заставить эти карты работать, здесь во Франции 2.4g полностью непригодна для использования, а старые карты RT3572 не продаются уже более года!

Я проверил последнее изображение, которое вы сделали 20181007 с pi3 и 8812au.

Видео отличное, с другой стороны, я не могу управлять двунаправленной телеметрией mavlink.

Разве вы не говорите мне, как вы устанавливаете параметры так, чтобы они работали, и на каких контактах raspi вы подключили pixhawk?

Извините за ошибки, я французский, и я использовал перевод Google.

lelik
РД00:

Т.е. картинка идет по RTP через Ethernet или WiFi, без WBC ?

Точно так. Целью было сравнение задержек камер, транспорт и рендер не менялся.

kuspower:

я не могу управлять двунаправленной телеметрией mavlink.

Я не правил двунаправленный передатчик по аналогии с однонаправленным и, скорее всего, там используется неверный тип пакета. Постараюсь проверить это в ближайшее время.

schs
svpcom:

Но, например, камеры для видеонаблюдения имеют latency около секунды…

Не все. Чаще буферизирует софт который отображает картинку. На gstreamer задержка с некоторыми, которые пробовал, приемлимая. Точно её не замерял, но по движению руки отставание чуть более WBC.
Если ЛА на высоте - задержка, в разумных пределах, не важна, а вот качества картинки хочется, Фантик развращает 😃.

svpcom

А какая камера и какая цепочка gstreamer’а для записи и воспроизведения?
Как-то многовато получилось latency для RPI camera. Я пробовал HIkvision DS-2CD2042WD-I - там все плохо.
Если используете VLC для воспроизведения - то там тоже все плохо с latency.

lelik:

На одной зерохе из трех - проблема. Фикс выложу чуть позже.

RaspiCam v1

USB-камера видеонаблюдения

Параметры потока: H.264, 1080p30, bitstream -> rtp/udp

lelik
svpcom:

А какая камера и какая цепочка gstreamer’а для записи и воспроизведения?

Камерка эта

raspivid \
    -n \
    -t 0 \
    -ih \
    -pf high \
    -fl \
    -if both \
    -w 1920 \
    -h 1080 \
    -fps 30 \
    -b 7000000 \
    -awb shade \
    -mm matrix \
    -vs \
    -ex sports \
    -o - \
| gst-launch-1.0 \
    fdsrc \
    ! video/x-h264,width=1920,height=1080,framerate=30/1 \
    ! h264parse \
    ! rtph264pay pt=96 config-interval=5 \
    ! udpsink port=5600 host=...


gst-launch-1.0 \
    v4l2src device=/dev/video1 \
    ! video/x-h264,width=1920,height=1080,framerate=30/1 \
    ! h264parse \
    ! rtph264pay pt=96 config-interval=5 \
    ! udpsink port=5600 host=...



gst-launch-1.0 udpsrc \
    port=5600 caps='application/x-rtp' \
    ! rtph264depay \
    ! avdec_h264 \
    ! fpsdisplaysink name=fpssink text-overlay=true \
      video-sink="vaapisink fullscreen=true" signal-fps-measurements=true
 

Если используете VLC для воспроизведения - то там тоже все плохо с latency.

В обоих случаях рендер был один и тот же, интересует же разница в 2.5 раза, а не абсолютные цифры

svpcom:

Я пробовал HIkvision DS-2CD2042WD-I - там все плохо.

Вы б еще “Красногорск” 8мм попробовали бы, там все еще хуже с latency. Это же IP-камера с RTSP, у нее обязана быть задержка на старте.

РД00
lelik:

Вы б еще “Красногорск” 8мм попробовали бы

Во, а у меня есть Mobius 2013-го, я обязательно попробую его.

lelik
user1321:

Всё ли работает у Вас?

На некоторых Pi Zero наблюдался ресет USB до определения карт. Багфикс-версия в обычном месте

svpcom

PI Camera сейчас под рукой нет, но например Kurokesu C1 у меня дает 61ms

gst-launch-1.0 v4l2src device=$device ! ‘video/x-h264,width=1920,height=1080,framerate=30/1,stream-format=byte-stream’ ! rtph264pay ! udpsink host=127.0.0.1 port=5600
gst-launch-1.0 udpsrc port=5600 caps=‘application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264’ ! rtph264depay ! avdec_h264 ! xvimagesink

lelik:

В обоих случаях рендер был один и тот же, интересует же разница в 2.5 раза, а не абсолютные цифры

Ну RTSP камера не обязано быть тормозной - видеопоток там всеравно идет по RTP.

lelik
svpcom:

Ну RTSP камера не обязано быть тормозной - видеопоток там всеравно идет по RTP.

RTP там начинается только после хендшейка. А это - задержка, которую уже не убрать.

svpcom:

PI Camera сейчас под рукой нет, но например Kurokesu C1 у меня дает 61ms

У Вас 60 мс на локалхосте, у меня 100 мс между двумя хостами, все похоже.

Можно попросить содержимое /sys/bus/usb/devices/…/manufacturer для курокесы ?

svpcom

Передача wifi пакета это 1-2ms. 40ms больше похоже на забитый внутреннюю очередь карты. Попробуйте уменьшить bitrate видео и увеличить размер RTP пакетов до максимального, чтобы карта успевала их передавать.

lelik:

У Вас 60 мс на локалхосте, у меня 100 мс между двумя хостами, все похоже.

khomyakk

Раз уже подтянулись, давайте спасать летающих собратьев.
При подсоединении в полёте второго монитора или сброса приёмной части происходит сброс точки ДОМ, со всеми вытекающими неприятностями.