Яке потокове рішення для Picam має найменше відставання?


9

У цій публікації показано, як передавати потоки за допомогою VLC. Це працює добре і просто, але це дає мені приблизно друге відставання. У цій публікації використовується GStreamer, і вона має 0,3 секунди відставання; Мені б хотілося менше.

Чи можна використовувати графічний чіп Raspberry Pi для прискорення кодування?


Це ще неможливо. Затримка 0,3 мс - це дуже добре, і ви не будете покращуватися (станом на даний час) через відсутність V2L. Можливо, це допоможе
Пьотр Кула

@ppumkin Я думаю, що ОП заявила, що відставання склало .3 секунди, а не мілісекунди. Також ви маєте на увазі V4L?
syb0rg

Так, 3ms я думав. Драйвер 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 вище на номер вашого ноутбука.

Це розумна хитрість! Цікаво, чи працює він і для нового драйвера UV4L
Piotr Kula

Проблема цього рішення полягає в тому, що він вносить багато заїкань з боку відтворення. Мені було цікаво, чи знайшли ви це рішення.
9a3eedi

1

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

Ви пробували https://github.com/thaytan/gst-rpicamsrc ? Це повинно бути трохи більш впорядкованим. Tbh, я не можу перешкодити це спробувати.

Затримка 0,3 секунд - це гарно добре.


1
Дякуємо за посилання! Я думаю, що зараз у мене відставання менше 0,3, мені все одно доведеться документувати рішення та точно його вимірювати. Опублікуємо незабаром. Якщо мої вимірювання докажуть, що це більше 0,3, я спробую інший рецепт.
Антонх

@Antonvh Як проходять дослідження / вимірювання? Чи дає ця відповідь кращі результати?
RPiAwesomeness
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.