กล้อง IP มีคุณภาพที่แตกต่างกันบ้างก็ทำงานผิดปกติในประสบการณ์ของฉัน การจัดการกับสตรีม RTSP ของพวกเขาต้องการปริมาณความทนทานต่อความผิดพลาด
โปรเจ็กต์ Live555 ให้การใช้งานไคลเอนต์ RTSP ที่ทนทานต่อข้อผิดพลาดอย่าง openRTSP สำหรับดึงกระแสข้อมูลเสียง / วิดีโอ RTSP ผ่าน CLI: http://www.live555.com/openRTSP/
ตัวอย่างเช่นหากต้องการบันทึกไฟล์เสียง / วิดีโอ RTSP ของกล้องในรูปแบบ QuickTime (มี AVI และ MP4 ให้ใช้งาน) หนึ่งไฟล์ทุก 15 นาที:
$ openRTSP -D 1 -c -B 10000000 -b 10000000 -q -Q -F cam_eight -d 28800 -P 900 -t -u admin 123456 rtsp://192.168.1.108:554/11
ตัวเลือกเหล่านี้หมายถึง:
-D 1 # Quit if no packets for 1 second or more
-c # Continuously record, after completion of -d timeframe
-B 10000000 # Input buffer of 10 MB
-b 10000000 # Output buffer 10MB (to file)
-q # Produce files in QuickTime format
-Q # Display QOS statistics
-F cam_eight # Prefix output filenames with this text
-d 28800 # Run openRTSP this many seconds
-P 900 # Start a new output file every -P seconds
-t # Request camera end stream over TCP, not UDP
-u admin 123456 # Username and password expected by camera
rtsp://192.168.1.108:554/11 # Camera's RTSP URL
การลบอ็อพชัน -t ทำให้ openRTSP เป็นค่าดีฟอลต์เป็น UDP แทนซึ่งสามารถลดทราฟฟิกเครือข่ายได้เล็กน้อย คุณจะต้องเล่นกับตัวเลือกเพื่อหาชุดค่าผสมที่เหมาะสมกับคุณ
ตรงไปตรงมา, กล้องของตัวเองบางครั้งก็ไม่น่าเชื่อถือหรือเพียงแค่การใช้งานที่แตกต่างกันเหมือนปิดซ็อกเก็ตโดยไม่คาดคิดไม่ได้ทั้งหมดที่ผิดปกติ
บางครั้งไคลเอนต์ openRTSP ไม่สามารถตรวจจับสิ่งผิดพลาดเหล่านี้ได้ ดังนั้นฉันเลือกที่จะเขียนโค้ดคอนโทรลเลอร์ใน Python โดยใช้โมดูล 'subprocesses' เพื่อเรียกใช้และตรวจสอบ stdout ของแต่ละอินสแตนซ์ไคลเอนต์ openRTSP และตรวจสอบว่าไฟล์มีการขยายขนาดอย่างต่อเนื่อง
สิ่งนี้ดูเหมือนจะเป็นผลพลอยได้จากอุตสาหกรรมกล้องวงจรปิดระดับล่างที่เล่นได้อย่างรวดเร็วและหลวมด้วยมาตรฐาน RTSP และ ONVIF ซึ่งทั้งสองถูกใช้งานในทางที่ผิดบ่อยที่สุด
โชคดีที่คุณมักจะสามารถแก้ไขปัญหาเหล่านี้ได้ ยกเว้นว่ากล้อง IP และคอนโทรลเลอร์ของคุณได้รับการออกแบบมาให้เล่นร่วมกันได้ดีให้ใช้ ONVIF สำหรับการค้นหาและจัดการการตั้งค่าเพียงครั้งเดียวเท่านั้น
ฉันใช้ openRTSP กับ Raspberry Pi B + บางตัวที่รัน Raspbian สตรีม 1280x1024 แต่ละรายการใช้เวลาประมาณ 8-10% ของซีพียูและฉันสามารถใช้งานกล้องได้ถึงแปดตัวต่อ RPi โดยเขียนไฟล์ไปยังที่เก็บข้อมูล NAS RPi อื่นประมวลผลไฟล์ที่เสร็จสมบูรณ์ด้วย ffmpeg ค้นหาการเคลื่อนไหวและสร้างดัชนี PNG ของเฟรมเหล่านั้นเพื่อช่วยในการตรวจหาจุดบกพร่อง
มีความพยายามโอเพนซอร์ซที่เรียกว่า ZoneMinder ซึ่งทำหน้าที่ส่วนหลังนี้ แต่ฉันไม่สามารถใช้งานได้กับกล้องของฉัน การสนับสนุน ONVIF เป็นเรื่องใหม่และใกล้จะเกิดขึ้นใน ZM และดูเหมือนว่าจะไม่ได้รับการตอบรับที่ดีนักกับกระแสข้อมูล RTSP จำนวนมากที่ผลิตโดยโรงพยาบาลสัตว์ของฉันที่มีกล้อง IP ต่ำกว่า $ 100