มี gazillions ของฟอรัมและกระทู้เกี่ยวกับการกำจัด latency 5 วินาทีเมื่อใช้ Pi ร่วมกับ PI-Cam เป็นกล้องวงจรปิด บทเรียนจำนวนมากแสดงวิธีใช้ vlc เพื่อเข้ารหัสและสตรีมรูปภาพโดยใช้โปรโตคอล RTP ซึ่งทำให้เกิดความล่าช้าประมาณ 5 วินาที
ตามที่ฉันบอกเหตุผลก็คือว่า raspivid กำลังเข้ารหัสสตรีมไปที่ H264 ในขณะที่ VLC ต้องถอดรหัสอีกครั้งและเข้ารหัสอีกครั้งกับ RTP ใดก็ตาม commandline มีลักษณะดังนี้:
raspivid -w 640 -h 480 -o - -t 0 |cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/}' :demux=h264
ส่วนแรกบอกให้ raspivid ส่งกระแสข้อมูลวิดีโอไปยังเอาต์พุตมาตรฐาน:
raspivid -w 640 -h 480 -o - -t 0
ส่วนหลังท่อบอกให้ VLC ยกมาแล้วถอดรหัสโดยใช้ h264:
cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/}' :demux=h264
mux-ing และ demux-ing นี้ค่อนข้างเป็นแหล่งทรัพยากร!
ฉันพบแหล่งที่มาของ raspicamที่ github และฉันคิดว่าบางสิ่งสามารถทำได้ใน encoder_buffer_callback วิธี (ปัจจุบันที่บรรทัด 848) เพื่อข้ามการเข้ารหัส อย่างไรก็ตามฉันไม่เก่งที่ c และไม่คุ้นเคยกับการเข้ารหัสวิดีโอเลยดังนั้นฉันจึงไม่มีเงื่อนงำที่จะเริ่มต้น
บน Github ฉันเห็น 330 forks แต่พวกมันดูเหมือนจะไม่เฉพาะสำหรับ raspicam (สำหรับโครงการ userland ทั้งหมด) ฉันหลงทางเพื่อหาทางแยกที่ลบการเข้ารหัสหรือนำสิ่งที่ง่ายกว่าเช่น mjpeg มาใช้
ใครบ้างที่มีความรู้เกี่ยวกับตัวแปลงสัญญาณ c และวิดีโอสามารถช่วยฉันและผู้ใช้ gazillion คนอื่น ๆ เพื่อกำจัดความล่าช้าได้หรือไม่? อาจเป็นทางออกที่มีอยู่แล้วในหนึ่งในส้อมเหล่านั้น แต่ฉันใช้เวลาหลายชั่วโมงในการค้นหาโดยไม่ต้องโชคใด ๆ
ป.ล. ฉันไม่ได้กำลังมองหาโซลูชันเบราว์เซอร์แต่ในที่สุดฉันต้องการที่จะสตรีมไปที่ Synology โดยเฉพาะอย่างยิ่งการใช้การสตรีม mjpeg (แต่ไม่ใช่ผ่านหน้าเว็บแทนที่จะเป็นสตรีม mjpeg มาตรฐานที่สร้างขึ้นใน ip-cams เชิงพาณิชย์) ขั้นตอนแรกคือการกำจัด h264