สคริปต์ Python นี้เป็นเครื่องมืออเนกประสงค์สำหรับการแยกภาพหน้าจอคุณภาพสูงจากวิดีโอ YouTube ไฟล์วิดีโอในเครื่อง หรือแหล่งวิดีโออื่น ๆ ที่คุณนึกออก! มีประโยชน์อย่างยิ่งสำหรับการเตรียมชุดข้อมูลสำหรับโปรเจ็กต์แมชชีนเลิร์นนิง เช่น การฝึก Loras หรือจุดตรวจ หรือเพียงเพื่อดึงเฟรมที่สมบูรณ์แบบจากภาพยนตร์เรื่องโปรดของคุณ
requirements.txtโคลนที่เก็บนี้:
git clone https://github.com/EnragedAntelope/youtube-screenshot-extractor.git
cd youtube-screenshot-extractor
ติดตั้งการพึ่งพาที่จำเป็น:
pip install -r requirements.txt
ติดตั้ง FFmpeg (จำเป็นสำหรับการแยกคีย์เฟรมและตัวกรองบางตัว):
(ไม่บังคับ) ติดตั้ง PyCUDA สำหรับการเร่งความเร็ว GPU:
pip install pycuda>=2022.1
หมายเหตุ: PyCUDA จำเป็นต้องติดตั้ง CUDA บนระบบของคุณ สำหรับคำแนะนำในการติดตั้ง โปรดดูเอกสารประกอบของ PyCUDA
ไวยากรณ์พื้นฐาน:
python youtube-screenshot-script.py [SOURCE] [OPTIONS]
โดยที่ [SOURCE] อาจเป็น URL ของ YouTube หรือเส้นทางไปยังไฟล์วิดีโอในเครื่องก็ได้
หมายเหตุ: หากคุณวางแผนที่จะใช้การเร่งความเร็ว GPU (--use-gpu option) ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง PyCUDA แล้ว
แยกเฟรมทุกๆ 5 วินาทีจากวิดีโอ YouTube และบันทึกลงในโฟลเดอร์ที่กำหนดเอง:
python youtube-screenshot-script.py https://www.youtube.com/watch?v=dQw4w9WgXcQ --output my_awesome_screenshots
มันง่ายมาก! ตอนนี้เรามาดูตัวเลือกที่กำหนดค่าได้ทั้งหมดกัน
--method {interval,all,keyframes,scene} : วิธีการแยกเฟรม (ค่าเริ่มต้น: ช่วงเวลา)--interval INTERVAL : ช่วงเวลาระหว่างเฟรมเป็นวินาที (ค่าเริ่มต้น: 5.0 ใช้เฉพาะกับวิธี 'ช่วงเวลา' เท่านั้น)--quality QUALITY : เกณฑ์คุณภาพสำหรับการเลือกเฟรม (0-100, ค่าเริ่มต้น: 12.0)--blur BLUR : เกณฑ์การเบลอสำหรับการเลือกเฟรม (ค่าเริ่มต้น: 10.0)--detect-watermarks : เปิดใช้งานการตรวจจับลายน้ำพื้นฐาน--watermark-threshold THRESHOLD : ความไวในการตรวจจับลายน้ำ (0-1, ค่าเริ่มต้น: 0.8)--max-resolution RESOLUTION : ความละเอียดสูงสุดสำหรับการดาวน์โหลดวิดีโอ YouTube (เช่น 720, 1080) ละเว้นสำหรับไฟล์ในเครื่อง--output OUTPUT : ชื่อโฟลเดอร์เอาท์พุตแบบกำหนดเอง--png : บันทึกเฟรมเป็น PNG แทน JPG--disable-parallel : ปิดการใช้งานการประมวลผลเฟรมแบบขนาน--use-gpu : ใช้การเร่งความเร็ว GPU หากมี--fast-scene : ใช้โหมดรวดเร็วสำหรับการตรวจจับฉาก (ผลลัพธ์ที่แม่นยำน้อยกว่า)--resume : ดำเนินกระบวนการสกัดที่ถูกขัดจังหวะต่อ--thumbnail : สร้างภาพตัดต่อขนาดย่อของเฟรมที่แยกออกมา--verbose : เปิดใช้งานการบันทึกโดยละเอียด--dry-run : แสดงสิ่งที่จะทำโดยไม่ต้องประมวลผลจริง--config CONFIG : โหลดการตั้งค่าจากไฟล์กำหนดค่า--gradfun : ใช้ตัวกรอง gradfun เพื่อลดแถบสี (ก้าวร้าวน้อยลง เก็บรายละเอียดได้มากขึ้น)--deblock : ใช้ตัวกรองการดีบล็อกเพื่อลดสิ่งแปลกปลอมในการบีบอัด--deband : ใช้ตัวกรอง debanding เพื่อลดแถบสี (รุนแรงมากขึ้น ดีกว่าสำหรับแถบที่รุนแรง)แยกคีย์เฟรมออกจากไฟล์วิดีโอในเครื่อง:
python youtube-screenshot-script.py path/to/your/video.mp4 --method keyframes
ใช้การตรวจจับฉากบนวิดีโอ YouTube ด้วยโฟลเดอร์เอาต์พุตแบบกำหนดเอง:
python youtube-screenshot-script.py https://www.youtube.com/watch?v=dQw4w9WgXcQ --method scene --output my_scene_shots
แยกเฟรมทุกๆ 10 วินาทีด้วยเกณฑ์คุณภาพที่ต่ำกว่าและเอาต์พุต PNG:
python youtube-screenshot-script.py https://www.youtube.com/watch?v=dQw4w9WgXcQ --interval 10 --quality 30 --png
ใช้การเร่งความเร็ว GPU และสร้างภาพตัดต่อขนาดย่อ:
python youtube-screenshot-script.py path/to/your/video.mp4 --use-gpu --thumbnail
ดาวน์โหลดวิดีโอ YouTube ที่ความละเอียดสูงสุด 720p และแยกเฟรม:
python youtube-screenshot-script.py https://www.youtube.com/watch?v=dQw4w9WgXcQ --max-resolution 720
แยกเฟรมด้วยฟิลเตอร์หลังการประมวลผล:
python youtube-screenshot-script.py path/to/your/video.mp4 --gradfun --deblock --deband
ระยะเวลาดำเนินการ :
ความละเอียดวิดีโอ :
--max-resolution เพื่อจำกัดคุณภาพการดาวน์โหลดหากจำเป็น--max-resolution จะถูกละเว้นเอาท์พุต : เฟรมจะถูกบันทึกเป็นรูปภาพ JPG หรือ PNG ในโฟลเดอร์เอาท์พุตที่ระบุ (หรือโฟลเดอร์เริ่มต้นที่ตั้งชื่อตามชื่อวิดีโอ)
ชื่อไฟล์เฟรม : ทำตามรูปแบบ frame_NNNNNN_qXX_bYY[_watermarked].(jpg|png) โดยที่:
NNNNNN : หมายเลขเฟรมXX : คะแนนคุณภาพ (0-99 ยิ่งสูงยิ่งดี)YY : คะแนนเบลอ (ตัวเลขที่สูงกว่าแสดงว่าเบลอน้อยลง)_watermarked : เพิ่มคำต่อท้ายหากตรวจพบลายน้ำตัวกรองหลังการประมวลผล :
--dry-run เพื่อดูตัวอย่างกระบวนการแยกโดยไม่ต้องบันทึกเฟรมจริงๆ--resume ในกรณีที่กระบวนการถูกขัดจังหวะ--max-resolution เพื่อจำกัดคุณภาพการดาวน์โหลดเพื่อการประมวลผลที่รวดเร็วขึ้น และเพื่อประหยัดพื้นที่จัดเก็บข้อมูล--quality 30 --blur 50 ) และปรับตามความจำเป็น--fast-scene เพื่อให้ได้ผลลัพธ์การตรวจจับฉากที่รวดเร็วยิ่งขึ้น (แต่แม่นยำน้อยกว่า)ไม่มีการแยกเฟรม :
--quality 20 --blur 30 )ปัญหาการแยกคีย์เฟรม :
การตรวจจับฉากช้ามากหรือขัดข้อง :
--fast-scene เพื่อให้ได้ผลลัพธ์ที่รวดเร็วกว่าแต่แม่นยำน้อยลงการเร่งความเร็ว GPU ไม่ทำงาน :
pip install pycuda )--use-gpuการตรวจจับลายน้ำทำให้เกิดผลบวกลวง :
--watermark-threshold 0.9 เพื่อการตรวจจับที่เข้มงวดยิ่งขึ้น)--detect-watermarksกระบวนการหยุดทำงานโดยไม่คาดคิดสำหรับวิดีโอขนาดใหญ่ :
--resume เพื่อดำเนินการต่อจากที่ค้างไว้เอาต์พุตคุณภาพต่ำหรือเบลอ :
ตัวกรองหลังการประมวลผลไม่ทำงาน :
โครงการนี้ได้รับอนุญาตภายใต้ใบอนุญาต MIT - ดูรายละเอียดในไฟล์ใบอนุญาต
ยินดีบริจาค! โปรดส่งคำขอดึง