ffmpeg ลบส่วนโดยไม่มีการเคลื่อนไหว


15

ฉันมีกล้องรักษาความปลอดภัย IP (192.168.0.8) ซึ่งสามารถออกอากาศเนื้อหา rtsp ผ่านเครือข่าย

ฉันสามารถบันทึกเนื้อหา (RAW) โดยไม่มีการเปลี่ยนแปลงโดยใช้คำสั่ง ffmpeg ถัดไปจากคอมพิวเตอร์ของฉัน:

ffmpeg -i "rtsp://192.168.0.8/stream=0.sdp" -acodec copy -vcodec copy test-raw.mp4

ฉันยังสามารถปรับขนาดได้ทันที:

ffmpeg -i "rtsp://192.168.0.8/stream=0.sdp" -vf  "scale=640:-1" test640.mp4

แต่จะบันทึกเฉพาะวิดีโอที่มีชิ้นส่วนตรวจจับการเคลื่อนไหวเท่านั้นได้อย่างไร

ฉันพยายามแก้ไขมันโดยใช้ฟิลเตอร์เปลี่ยนฉากของ ffmpeg แต่ก็ไม่มีโชค

เป้าหมายของฉัน - มีโซลูชันตรวจสอบวิดีโอทั่วไปซึ่งจะตรวจจับเมื่อมีคนเคลื่อนที่ใกล้กล้องและบันทึกลงในไฟล์วิดีโอ ฉันเข้าใจว่าอาจเป็นไปไม่ได้ที่จะทำทันทีจากสตรีมดังนั้นจึงเป็นเรื่องปกติสำหรับฉันที่จะบันทึกไฟล์ขนาดใหญ่ในตอนแรกจากนั้นประมวลผลด้วยคำสั่ง ffmpeg อื่นและสร้างไฟล์วิดีโอใหม่ที่มีเฉพาะส่วนที่ตรวจพบการเคลื่อนไหวเท่านั้น หากคุณสามารถให้คำแนะนำแก่ฉันได้ว่าฉันควรศึกษาเพิ่มเติมอะไรฉันจะต้องขอบคุณจริงๆ

สตรีมกล้องของฉันถูกส่งโดยไม่มีเสียง ดังนั้นฉันสามารถสร้างชุดของภาพจากวิดีโอต้นฉบับจากนั้นเลือกภาพที่เหมาะสมแล้วบันทึกวิดีโอใหม่จากภาพ


คุณต้องการนำระบบนี้ไปใช้หรือค้นหาผลิตภัณฑ์ที่พร้อมใช้งานหรือไม่?
Woeitg

@WOEITG ฉันแค่ต้องการวิธีแก้ปัญหาการทำงานฟรีสำหรับ Ubuntu 15.04+
rfedorov

สำหรับ Windows มีซอฟต์แวร์บางส่วนที่เรียกว่า ispy ซึ่งคุณสามารถตั้งค่าให้บันทึกในการตรวจจับการเคลื่อนไหว เนื่องจากคุณกำลังร้องขอโซลูชัน Linux zoneminder.comควรเป็นผลิตภัณฑ์ที่คล้ายกัน น่าเสียดายที่ฉันไม่มีคำตอบสำหรับคำถามของคุณโดยตรง แต่ +1 เพราะฉันต้องการคำตอบด้วย
MyNameWouldGo ได้ที่นี่

คำตอบ:


7

สิ่งที่ฉันทำคือทำอย่างที่คุณพูดและบันทึกไฟล์ขนาดใหญ่ของสตรีมจากนั้นใช้select ฟิลเตอร์ FFMPEGกับsceneนิพจน์ซึ่งเปรียบเทียบความคล้ายคลึงกันของเฟรมต่อเนื่อง: select=gt(scene\,0.003)ตัวอย่างเช่น ยิ่งจำนวนสูงขึ้นการเปลี่ยนแปลงระหว่างเฟรมก็จะยิ่งถูกละเว้นมากขึ้นในการทดสอบอย่างรวดเร็วคุณอาจต้องลดลงเหลือ 0.00001-0.00005 ทั้งนี้ขึ้นอยู่กับประเภทของวิดีโอที่คุณกำลังเผชิญอยู่

รวมเข้ากับsetpts ตัวกรองซึ่งจะแก้ไข "เวลาเริ่มต้น" ของเฟรมวิดีโอและคุณจะพบกับสิ่งที่ต้องการ (สำหรับวิดีโอ 25fps):

ffmpeg -i input.mp4 -vf "select=gt(scene\,0.003),setpts=N/(25*TB)" output.mp4

โปรดทราบว่าคุณจะไม่สามารถใช้งานได้-vcodec copyเมื่อคุณใช้ตัวกรองวิดีโอ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.