โพสต์นี้แสดงวิธีการสตรีมโดยใช้ VLC มันใช้งานได้ดีและเรียบง่าย แต่ให้ฉันเกี่ยวกับความล่าช้าที่สอง โพสต์นี้ใช้ GStreamer และมีความล่าช้า 0.3 วินาที ฉันต้องการน้อย
เป็นไปได้ไหมที่จะใช้ชิปกราฟิก Raspberry Pi เพื่อเพิ่มความเร็วในการเข้ารหัส?
โพสต์นี้แสดงวิธีการสตรีมโดยใช้ VLC มันใช้งานได้ดีและเรียบง่าย แต่ให้ฉันเกี่ยวกับความล่าช้าที่สอง โพสต์นี้ใช้ GStreamer และมีความล่าช้า 0.3 วินาที ฉันต้องการน้อย
เป็นไปได้ไหมที่จะใช้ชิปกราฟิก Raspberry Pi เพื่อเพิ่มความเร็วในการเข้ารหัส?
คำตอบ:
ด้วย Ubuntu 14.10 และ Gstreamer ฉันถึง 100 ถึง 116 ms latency ด้วย 1280 x 720 @ 60Hz
รถถังไปที่ @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
ฉันประสบความล่าช้า 200ms! เคล็ดลับ: ส่งเฟรมน้อยลงจาก 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
ตรวจสอบให้แน่ใจว่า:
ฉันใช้สูตรวิดีโอนี้: http://archpi.dabase.com/#sending-and-receiving-pi-camera-video-over-the-network
คุณลองhttps://github.com/thaytan/gst-rpicamsrc แล้วหรือยัง ที่ควรจะคล่องตัวมากขึ้นเล็กน้อย ฉันไม่อยากลองเลย
ความล่าช้า 0.3s ค่อนข้างดี