
สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-23 15:12


ในคำแนะนำนี้ ฉันจะอธิบายรายละเอียดขั้นตอนที่ฉันใช้เพื่อสร้างวิดีโอไทม์แลปส์ ระบบและฮาร์ดแวร์ที่ฉันใช้เพื่อให้ได้ภาพคือคอมพิวเตอร์ Linux และกล้อง IP ที่ใช้เครือข่าย สคริปต์ทำงานบนคอมพิวเตอร์ Linux และทุก ๆ x วินาทีจะสำรวจกล้อง IP คว้ารูปภาพ ปรับขนาดใหม่ เวลาและวันที่ประทับและบันทึกลงในฮาร์ดไดรฟ์ของคอมพิวเตอร์ ในการสร้างวิดีโอจากรูปภาพ ฉันจะครอบคลุมสองแอปพลิเคชันฟรีแวร์ที่แตกต่างกันบนพีซี Windows และดูการใช้ Linux เป็นตัวเลือก
เมื่อได้ภาพมา คุณจะต้องหาเวลาระหว่างแต่ละภาพ หรือจำนวนภาพต่อชั่วโมงหรือวัน คุณจะต้องสร้างวิดีโอที่ดูดีและไม่ยาวหรือสั้นเกินไป
ในกรณีของน้ำแข็งปิดวิดีโอ ฉันจับภาพทุกๆ 20 วินาทีตั้งแต่ก่อนพระอาทิตย์ขึ้นในวันแรก และข้ามไปจนพระอาทิตย์ตกในวันรุ่งขึ้น ฉันลบภาพกลางคืนส่วนใหญ่ออกก่อนที่จะประมวลผลเป็นวิดีโอ แต่ตัดสินใจที่จะ "พระจันทร์ขึ้น" ต่อไป
ซึ่งทำให้ฉันมีภาพประมาณ 4, 430 ภาพ ถ้าฉันสร้างวิดีโอโดยใช้ 25 เฟรมต่อวินาที ความยาวจะเป็น:
4, 430/25 = 177.2 วินาที 177.2 วินาที เท่ากับ 3 นาที
หากคุณต้องการจับภาพบางอย่างที่เหมือนกับการสร้างบ้าน ทุกๆ 3 ถึง 5 นาทีจะเป็นจุดเริ่มต้นที่ดี
ฉันใช้วิธีใดวิธีหนึ่งสำหรับสองวิธีที่แตกต่างกัน ทั้งนี้ขึ้นอยู่กับความถี่และระยะเวลาที่ฉันต้องถ่ายภาพ
ขั้นตอนที่ 1: ภาพจากกล้อง IP

กล้อง IP ส่วนใหญ่ที่ใช้ในการเฝ้าระวังวิดีโอหรือสำหรับเว็บแคมแบบเคลื่อนไหวเต็มรูปแบบช่วยให้คุณสามารถดูภาพ-j.webp
"https:///snap.jpg"
สำหรับกล้อง Planet:
"https:///image.cgi? resolution=1920x1080"
คุณจะต้อง google URL เพื่อใช้สำหรับแบรนด์กล้องของคุณ
ทั้งรูปภาพ Ubiquiti และ Planet ที่ฉันคว้ามานั้นมีขนาด 1920x1080 (ค่าเริ่มต้นสำหรับกล้องแต่ละตัวเนื่องจากเป็นกล้อง 1080) ด้วยขนาดนี้ คุณจะมีข้อมูลจำนวนมากและไฟล์วิดีโอขนาดใหญ่ ฉันชอบที่จะปรับขนาดรูปภาพใหม่เมื่อฉันคว้ามันมาและเขียนลงดิสก์ และฉันจะแสดงขั้นตอนนี้ในสคริปต์ของฉัน ฉันใช้ convert ซึ่งเป็นส่วนหนึ่งของเครื่องมือ ImageMagick
ขั้นตอนที่ 2: จับภาพ - วิธีที่ 1


ฉันใช้วิธีนี้เพื่อจับภาพเหตุการณ์ที่สั้นกว่า เช่น หยุดนิ่ง คุณสามารถใช้วิธีนี้เพื่อจับภาพบางอย่าง เช่น การย้ายเข้ามาและตั้งค่ากิจกรรม ซึ่งใช้เวลาสองสามชั่วโมงหรือ 1 หรือ 2 วัน และคุณสามารถลบภาพที่ไม่ต้องการ เช่น เวลากลางคืน ด้วยตนเองก่อนประมวลผลเป็นวิดีโอ
ภายใต้ Linux สคริปต์สำหรับกล้อง Ubiquiti ของฉันมีลักษณะดังนี้:
#!/bin/bash
#ไปที่โฟลเดอร์ที่ถูกต้อง
cd /home/steve/iceoff
# Ubiquiti - กล้อง ubnt
URL="https://192.168.2.114/snap.jpg"
#จะเขียนภาพที่ไหน
ubnt_dir=/home/steve/iceoff/ubnt
# ล่าช้าระหว่างภาพ
ล่าช้า=20
#เดอะลูป
ในขณะที่ทำจริง
# ใช้เวลา/วันที่เพื่อประทับตราชื่อไฟล์ - ต้องอยู่ในส่วนลูป
ตอนนี้=$(/bin/date '+%Y%m%d%H%M%S')
# รับภาพแล้วเขียนเป็น ubnt.jpg
/usr/bin/wget -q -O "$ubnt_dir/ubnt.jpg" -t 1 $URL
# ปรับขนาดภาพ ubnt-j.webp
convert -geometry 1024x "$ubnt_dir/ubnt.jpg" "$ubnt_dir/${now}.jpg"
#นอนดึกก็ได้อีกภาพ
/bin/sleep "$ ล่าช้า"
เสร็จแล้ว
สคริปต์ทำอะไร:
ตั้งค่า URL ตัวแปรไปยังตำแหน่งที่รูปภาพอยู่บนเครือข่าย/กล้อง
ตั้งค่าตัวแปร ubnt_dir เป็นตำแหน่งที่เราต้องการบันทึกภาพ (คุณจะต้องสร้างไดเร็กทอรีก่อนที่จะรันสคริปต์)
ตั้งค่าการหน่วงเวลาของตัวแปรเป็นจำนวนวินาทีระหว่างรูปภาพ - ทำให้ง่ายต่อการเปลี่ยนเวลาระหว่างรูปภาพ เพียงแค่เปลี่ยนตัวแปรนี้แล้วเรียกใช้สคริปต์อีกครั้ง
เริ่มลูปด้วย while true do - ลูปนี้ควรไปจนกว่าคุณจะหยุดสคริปต์ด้วย ctrl-c
ตั้งค่าตัวแปรตอนนี้เป็นปี เดือน วัน ชั่วโมง วินาที
16 ก.พ. 2019 เวลา 8 นาที 29 วินาที หลัง 13.00 น. จะดูเหมือน 20190216130829
ใช้ wget เพื่อดึงรูปภาพจาก URL และเขียนเป็น ubnt-j.webp
แปลงรูปภาพ ubnt-j.webp
สลีปเป็นจำนวนวินาทีในตัวแปรหน่วงเวลา
ย้อนกลับและเริ่มต้นในขณะที่จริงทำ step
ในการเรียกใช้สคริปต์นี้ ฉันลงชื่อเข้าใช้บัญชีของฉันและเรียกใช้จากเทอร์มินัล - ดังนั้นนี่จึงเป็นสิ่งที่ดีสำหรับการจับภาพบางอย่างเช่นน้ำแข็งในทะเลสาบ - เสร็จสิ้นในหนึ่งหรือสองวันและฉันต้องการรูปภาพทุกๆ 20 วินาที
ขั้นตอนที่ 3: จับภาพ - วิธีที่ 2

สำหรับเวลาที่ล่วงเลยไปนานขึ้น เช่น การก่อสร้างอาคารหรือโครงการเหลื่อมเวลานานเป็นปี ฉันใช้วิธีการถ่ายภาพที่แตกต่างออกไป สำหรับสิ่งนี้ฉันใช้ cron
Cron เป็นยูทิลิตี้ที่รันคำสั่งทุกๆ x นาที ชั่วโมง วัน หรือเดือน ดังนั้นคุณจึงปรับแต่งได้ว่าเมื่อใดที่คำสั่งทำงานเป็นนาที ชั่วโมง วัน วันของเดือน ฯลฯ ผู้ใช้ในระบบ Linux สามารถมีงาน cron ของตนเองได้และจะถูกเก็บไว้ในไฟล์ crontab
สำหรับไทม์แลปส์ที่ผ่านไปหลายเดือนโดยที่ฉันได้รับภาพทุก ๆ X นาที ฉันใช้งาน cron และสคริปต์ที่แตกต่างกันเล็กน้อยซึ่งไม่ต้องการการวนซ้ำ (ในขณะที่ทำจริงและทำเสร็จแล้ว) เนื่องจาก cron จะเรียกสคริปต์ทุก ๆ X จำนวนนาที
ไม่เพียงแต่คุณสามารถใช้เพื่อเรียกใช้สคริปต์ทุก ๆ X นาที แต่คุณสามารถจำกัดให้ทำงานระหว่างบางชั่วโมงได้ ดังนั้นคุณจึงไม่ต้องลบภาพกลางคืนจำนวนมาก เมื่อฤดูกาลและเวลากลางวันเปลี่ยนไป ฉันจึงเปลี่ยนงาน cron เพื่อสะท้อนมัน
ในการสร้างงาน cron เข้าสู่ระบบเซิร์ฟเวอร์ Linux ของคุณและเรียกใช้: crontab -e สิ่งนี้จะเริ่มต้นการแก้ไข crontab ของคุณ ไฟล์ crontab ของฉันมีบรรทัดดังนี้:
*/5 4-23 * * * /home/steve/timelapse/get.ubnt >/dev/null 2>&1
*/5 หมายถึงเรียกใช้ทุกๆ 5 นาที
4-23 หมายถึงเรียกใช้ตั้งแต่ 04.00 น. ถึง 23.00 น. (การเปลี่ยนแปลงนี้ตามฤดูกาลสำหรับฉัน)
* ตัวแรก หมายถึง เรียกใช้ทุกวันของเดือน
ตัวที่สอง * หมายถึงเรียกใช้ทุกเดือนของปี
ตัวที่สาม * หมายถึงเรียกใช้ทุกวันในสัปดาห์
/home/steve/timelapse/get.ubnt เป็นชื่อสคริปต์ที่ทำงานอยู่
/dev/null 2>&1 หมายถึงใส่เอาต์พุตมาตรฐานเป็น null และข้อผิดพลาดใด ๆ เป็น null - หากคุณไม่มีสิ่งนี้ คุณจะได้รับอีเมลทุกครั้งที่งาน cron ทำงาน
สคริปต์ของฉัน /usr/steve/timelapse/get.ubnt มีลักษณะดังนี้:
#!/bin/bash
cd /home/steve/timelapse
URL="https://192.168.2.114/snap.jpg"
ตอนนี้=$(/bin/date '+%Y%m%d%H%M%S')
/usr/bin/wget -q -O ubnt-j.webp
แปลง -geometry 1024x ubnt-j.webp" />
สคริปต์นี้ทำอะไร:
เปลี่ยนเป็น /home/steve/timelapse
ตั้งค่า URL ตัวแปรไปยังตำแหน่งที่รูปภาพอยู่บนเครือข่าย/กล้อง
ตั้งค่าตัวแปรตอนนี้เป็นปี, เดือน, วัน, ชั่วโมง, นาที, วินาที (เพื่อให้เราสามารถประทับเวลา/วันที่ภาพ-j.webp
รับรูปภาพจาก URL และเขียนลงใน ubnt.jpg
ปรับขนาดภาพให้กว้าง 1024 พิกเซลโดยรักษาอัตราส่วนที่ถูกต้องและเขียนไฟล์เป็นวันที่/เวลา
เช่นเดียวกับเมธอด/สคริปต์ก่อนหน้านี้ เขาจะทำให้ชื่อไฟล์เรียงตามลำดับและทำให้เราสามารถสร้างวิดีโอที่มีเฟรมในลำดับที่ถูกต้องได้ หลังจากที่ฉันมีรูปภาพมูลค่าสองสามวันแล้ว ฉันจะคัดลอกรูปภาพเหล่านั้นไปยังโฟลเดอร์บนพีซีที่ใช้ Windows ของฉันเพื่อสร้างไฟล์วิดีโอ ปกติแล้วฉันใช้ ftp เพื่อรับไฟล์บนพีซีที่ใช้ Windows เนื่องจากอยู่ในเครือข่ายเดียวกัน และการเข้าสู่ระบบ/รหัสผ่านที่เป็นข้อความธรรมดาไม่ปรากฏบนอินเทอร์เน็ต
ขั้นตอนที่ 4: คัดลอกรูปภาพไปยังพีซีที่ใช้ Windows
ในการคัดลอกรูปภาพจากระบบ Linux ไปยังพีซีที่ใช้ Windows เพื่อประมวลผลเป็นวิดีโอ ฉันใช้ FTP
โปรแกรม windows ที่ฉันใช้คือ FileZilla Client คุณสามารถใช้ไคลเอนต์ ftp ใดก็ได้ที่คุณต้องการ แม้แต่เวอร์ชันบรรทัดคำสั่งใน windows
หากคุณรู้ว่าคุณกำลังทำอะไร คุณสามารถใช้ Samba หรือ NFS และให้ไฟล์ Linux ปรากฏเป็นโฟลเดอร์ใน Windows
ขั้นตอนที่ 5: การสร้างวิดีโอ - Photolapse 3



ตอนนี้เรามีรูปภาพแล้ว เราต้องต่อเข้าด้วยกันเพื่อสร้างไฟล์วิดีโอ
มีโปรแกรมมากมายที่คุณสามารถใช้ทำสิ่งนี้ได้ และคุณอาจต้องการทดลองกับโปรแกรมต่างๆ
อย่างไรก็ตาม สำหรับรูปภาพจำนวนน้อยอย่างที่ฉันถ่ายในช่วงหนึ่งหรือสองวันที่หยุดนิ่ง ฉันใช้โปรแกรม Windows Photolapse 3 ซึ่งน่าเสียดายที่ไม่ได้รับการอัปเดตอีกต่อไป และฉันไม่พบเว็บไซต์ดั้งเดิมสำหรับรูปภาพดังกล่าวอีกต่อไป อย่างไรก็ตามมีให้จากเว็บไซต์ "ดาวน์โหลด" จำนวนมาก การค้นหา google อย่างรวดเร็วควรดีอย่างใดอย่างหนึ่ง
สิ่งที่ดี/ดีเกี่ยวกับโปรแกรมนี้คือมันเป็นไบนารีตัวเดียว ดังนั้นจึงไม่มีการติดตั้ง เพียงดาวน์โหลดไบนารีและเรียกใช้ ข้อเสียคือจะไม่ประมวลผลไฟล์จำนวนมาก โดยมากฉันหมายถึงน่าจะ 20,000 หรือมากกว่านั้น แต่สำหรับบางอย่างเช่นวิดีโอ ice off ของฉันที่มีรูปภาพประมาณ 5,000 ภาพก็ใช้ได้
คุณเริ่มโปรแกรม ในช่องด้านซ้ายบนให้เจาะลึกหรือค้นหาตำแหน่งที่จัดเก็บภาพของคุณ จากนั้นใส่จำนวนเฟรมต่อวินาที (จำนวนที่น้อยกว่าจะทำให้วิดีโอปรากฏเป็นแบบสโลว์โมชั่น) จากนั้นคลิกปุ่ม "โหลดไฟล์จากโฟลเดอร์ปัจจุบัน"
Photolapse จะโหลดและแสดงตัวอย่างแต่ละเฟรม และคุณจะได้แนวคิดว่าวิดีโอจะหน้าตาเป็นอย่างไร
เมื่อประมวลผลทั้งโฟลเดอร์เสร็จแล้ว ให้คลิกที่ปุ่ม "สร้างภาพยนตร์" เปลี่ยนชื่อไฟล์หากต้องการ จากนั้นคลิก "บันทึก"
ถัดไป คุณต้องเลือกวิธีการบีบอัดสำหรับวิดีโอหรือปล่อยให้ไม่มีการบีบอัด ฉันใช้ "Microsoft Video 1" เหลือเพียงคลิก "ตกลง"
แม้ว่าคุณจะต้องทำตามขั้นตอนทั้งหมดอีกครั้งเพื่อเลือกวิธีการบีบอัดหรือตัวแปลงสัญญาณแบบอื่น แต่ก็คุ้มค่าที่จะลองใช้การตั้งค่าอื่นที่นี่ หากคุณต้องการบีบอัดวิดีโอ
ภาพที่ฉันใช้จับภาพหน้าจอในขั้นตอนนี้มาจากภาพน้ำแข็งปิดต้นฉบับ ฉันใช้ 1191 ภาพที่ 1024x576 พิกเซล ใช้พื้นที่ดิสก์ประมาณ 110MB วิดีโอที่บีบอัดมีขนาด 235MB และไม่บีบอัดคือ 1.96 GB
ขั้นตอนที่ 6: การสร้างวิดีโอ - VirtualDub



โปรแกรมอื่นที่ฉันใช้คือ VirtualDub
ดาวน์โหลดไฟล์ zip ที่นี่ มีรุ่น 32 บิตและ 64 บิต
เปิดเครื่องรูดไฟล์ลงในโฟลเดอร์ของตัวเอง
สิ่งหนึ่งที่คุณจะต้องทำกับรูปภาพของคุณก็คือการเรียงลำดับใหม่ตามลำดับ การใช้ชื่อไฟล์ประทับวันที่/เวลาเหมือนที่สคริปต์ของฉันสร้างจะไม่ทำงานกับ VirtualDub มีสองวิธีในการจัดลำดับไฟล์ใหม่:
ขั้นแรก ทำการสำรองไฟล์ของคุณ จากนั้นสำรองข้อมูลอื่น จากนั้นใช้สำเนาที่สอง:
เปิดโฟลเดอร์ที่มีรูปภาพ เปลี่ยนมุมมองเป็น "รายละเอียด" ไฮไลต์ไฟล์แรกในรายการ กด ctrl-a เพื่อเลือกไฟล์ทั้งหมด คลิกขวาและเลือก "เปลี่ยนชื่อ" เปลี่ยนชื่อไฟล์เป็น 1 แล้วกด Enter
การดำเนินการนี้จะประมวลผลรายการไฟล์และต่อท้าย (1)-j.webp
วิธีที่สองคือการใช้โปรแกรมที่เรียกว่า Irfanview มีโหมดแบตช์ซึ่งคุณสามารถเปลี่ยนชื่อไฟล์ตามลำดับเป็น 1.jpg, 2.jpg, 3-j.webp
เมื่อเปลี่ยนชื่อไฟล์แล้ว ให้เริ่ม VirtualDub คลิก "ไฟล์" จากนั้น "เปิดไฟล์วิดีโอ" เลือก-j.webp
คลิก "วิดีโอ" จากนั้น "อัตราเฟรม" เปลี่ยนเป็น 30 (หรืออัตราเฟรมใดก็ตามที่คุณต้องการลอง)
คลิก "วิดีโอ" จากนั้น "บีบอัด" - เช่นเดียวกับ photolapse 3 ฉันใช้ "Microsoft video 1"
หากต้องการเริ่มประมวลผลภาพ ให้คลิก "ไฟล์" จากนั้น "บันทึกเป็น AVI" ตั้งชื่อไฟล์แล้วคลิก "บันทึก"
การดำเนินการนี้จะเริ่มดำเนินการและแสดงว่าต้องใช้เวลานานเท่าใด
แม้ว่าจะมีขั้นตอนเพิ่มเติมในการใช้ VirtualDub แต่จะประมวลผลไฟล์มากกว่า photolapse 3
ฉันสร้างไทม์แลปส์ด้วยภาพมากกว่า 88,000 รูปโดยใช้ VirtualDub
ขั้นตอนที่ 7: บทสรุป
ในการดูวิดีโอไทม์แลปส์ คุณสามารถใช้โปรแกรมเช่น VLC หรือเครื่องเล่นสื่อของ Windows
มีหลายวิธีในการถ่ายภาพและสร้างไทม์แลปส์
หากคุณมีกล้อง Canon จะมี CHDK เฟิร์มแวร์ของบริษัทอื่นสำหรับบางรุ่น ซึ่งจะช่วยให้คุณใช้กล้องในโหมดเว้นระยะและถ่ายภาพทุกๆ x วินาทีได้
ทดลองเยอะ! หวังว่าคุณจะพบว่าคำแนะนำนี้น่าสนใจและหากคุณทำไทม์แลปส์อย่าลืมทิ้งลิงก์ไว้ในความคิดเห็น
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน

การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน

การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน

วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน

การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน

เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง