Solusi streaming apa untuk Picam yang memiliki jeda terkecil?

9

Posting ini menunjukkan cara streaming menggunakan VLC. Ini bekerja dengan baik dan sederhana, tetapi memberi saya tentang jeda kedua. Posting ini menggunakan GStreamer, dan memiliki lag 0,3 detik; Saya ingin kurang.

Apakah mungkin menggunakan chip grafis Raspberry Pi untuk mempercepat penyandian?

Antonvh
sumber
Itu belum mungkin. 0,3ms lag sangat baik dan Anda tidak akan menjadi lebih baik (seperti sekarang) karena kurangnya V2L. Mungkin ini akan membantu
Piotr Kula
@pumkin Saya pikir OP mengatakan lag itu 0,3 detik, bukan milidetik. Juga, maksud Anda V4L?
syb0rg
Ya 3ms saya sedang berpikir. Driver Video4Linux? Atau itu disebut sesuatu yang lain. Kamu tahu. Pengemudi asli.
Piotr Kula
@pumkin Ahh, maka Anda akan salah. Driver V4L2 dimasukkan dalam NOOBS v1.3.3 .
syb0rg

Jawaban:

9

Dengan Ubuntu 14.10 dan Gstreamer saya mencapai 100 hingga 116 ms latensi dengan 1280 x 720 @ 60Hz.

Tanks ke @Antonvh yang menempatkan saya di jalan yang benar. Saya mereproduksi di sini solusi untuk referensi yang terakhir.

Untuk streaming dari 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

Untuk menerimanya di komputer Anda dengan gst-0.10 dan mengirimkannya ke perangkat virtual v4l2 (memang Anda membutuhkan v4l2loopback ):

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

Kemudian Anda dapat membuka perangkat /dev/video1dalam perangkat lunak apa pun yang mendukung penangkapan v4l2.

Untuk solusi gst-1.0 (v4l2loopback tidak berfungsi dengan gst-1.0), saya membiarkan Anda melihat posting blog Antonvh .

antoine
sumber
4

Saya mencapai lag 200 ms! Caranya: kirim lebih sedikit frame dari Pi daripada yang Anda baca di sisi yang jauh, ini memastikan buffer tetap kosong.

Ini adalah gambar yang saya ambil dari RPi yang sedang merekam stopwatch. Ini menunjukkan perbedaan waktu.

Ini adalah resep yang saya gunakan. Pertama di laptop (Mac) lakukan ini:

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

kemudian pada RPI mulai streaming:

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

Pastikan untuk:

  • Instal mplayer terlebih dahulu. Hanya metode Homebrew yang bekerja untuk saya. Unduhan reguler rusak.
  • Ubah nomor ip di atas ke nomor laptop Anda.
Antonvh
sumber
Ini trik yang cerdas! Saya ingin tahu apakah itu bekerja untuk driver UV4L baru juga
Piotr Kula
Masalah dengan solusi ini adalah ia memperkenalkan banyak gangguan dari sisi pemutaran. Saya bertanya-tanya apakah Anda menemukan solusi untuk itu.
9a3eedi
1

Saya menggunakan resep video ini: http://archpi.dabase.com/#sending-and-receiving-pi-camera-video-over-the-network

Sudahkah Anda mencoba https://github.com/thaytan/gst-rpicamsrc ? Itu harus sedikit lebih ramping. Tbh, saya tidak bisa repot untuk mencobanya.

0,3 detik lag cukup bagus.

hendry
sumber
1
Terima kasih atas tautannya! Saya pikir saya memiliki lag kurang dari 0,3 sekarang, saya masih harus mendokumentasikan solusi dan mengukurnya dengan tepat. Akan segera dikirim. Jika pengukuran saya membuktikan lebih dari 0,3 saya akan coba resep lain.
Antonvh
@Antonvh Bagaimana penelitian / pengukurannya? Apakah jawaban ini memberi Anda hasil yang lebih baik?
RPiAwesomeness