Какое потоковое решение для Picam имеет наименьшее отставание?

9

Этот пост показывает, как транслировать с помощью VLC. Это работает хорошо и просто, но дает мне второе отставание. Этот пост использует GStreamer, и его задержка составляет 0,3 секунды; Я хотел бы меньше.

Можно ли использовать графический чип Raspberry Pi для ускорения кодирования?

Antonvh
источник
Это пока невозможно. Задержка в 0,3 мс - это очень хорошо, и вы не поправитесь (на данный момент) из-за отсутствия V2L. Может быть, это поможет
Петр Кула
@ppumkin Я думаю, ОП сказал, что задержка составляла 0,3 секунды, а не миллисекунды. Кроме того, вы имеете в виду V4L?
syb0rg
Да 3мс я думал. Драйвер Video4Linux? Или это называется что-то еще. Знаешь. Родной драйвер.
Петр Кула
@ppumkin Ааа, тогда ты ошибаешься. Драйверы V4L2 были включены в NOOBS v1.3.3 .
syb0rg

Ответы:

9

С Ubuntu 14.10 и Gstreamer я достигаю задержки от 100 до 116 мс при 1280 x 720 при 60 Гц.

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

Для потоковой передачи из Pi:

raspivid -t 0 -b 2000000  -fps 60 -w 1280 -h 720 -o - \
  | gst-launch-1.0 -e -vvv fdsrc ! h264parse ! rtph264pay pt=96 config-interval=5 \ 
  ! udpsink host=10.42.0.1 port=5001

Чтобы получить его на свой компьютер с gst-0.10 и отправить его на виртуальное устройство v4l2 (вам действительно нужен v4l2loopback ):

gst-launch -v udpsrc port=5001 ! application/x-rtp, payload=96 ! rtph264depay \ 
! ffdec_h264 ! ffmpegcolorspace ! v4l2sink device=/dev/video1

Затем вы можете открыть устройство /dev/video1в любом программном обеспечении, поддерживающем захват v4l2.

Для решения gst-1.0 (v4l2loopback не работает с gst-1.0) я позволю вам увидеть сообщение в блоге Antonvh .

Антуан
источник
4

Я достиг 200 мс! Хитрость: отправьте меньше кадров с Pi, чем вы читали на удаленной стороне, это гарантирует, что буфер останется пустым.

Вот фотография, которую я сделал на RPi, снимающем секундомер. Это показывает разницу во времени.

Это рецепт, который я использую. Сначала на ноутбуке (Mac) сделайте это:

nc -l 5001 | mplayer -fps 24 -cache 1024 -

затем на RPI начинаем потоковую передачу:

raspivid -t 999999 -w 1280 -h 720 -fps 20 -o - | nc 192.168.178.22 5001

Убедитесь, что:

  • Сначала установите mplayer. Только метод Homebrew работал для меня. Обычная загрузка была нарушена.
  • Измените номер ip выше на номер вашего ноутбука.
Antonvh
источник
Это умный трюк! Интересно, работает ли он и для нового драйвера UV4L
Петр Кула
Проблема с этим решением заключается в том, что оно сильно заикается со стороны воспроизведения. Мне было интересно, если вы нашли решение этого.
9a3eedi
1

Я использую этот рецепт видео: http://archpi.dabase.com/#sending-and-receiving-pi-camera-video-over-the-network

Вы пробовали https://github.com/thaytan/gst-rpicamsrc ? Это должно быть немного более упорядоченным. Тбх, я не могу попробовать это.

Лаг 0,3 с чертовски хорош.

Хендри
источник
1
Спасибо за ссылки! Я думаю, что теперь у меня лаг меньше 0,3 с, мне все еще нужно документировать решение и точно его измерить. Скоро опубликую. Если мои измерения окажутся больше 0,3, я попробую другой рецепт.
Antonvh
@Antonvh Как идут исследования / измерения? Этот ответ дает вам лучшие результаты?
RPiAwesomeness