สคริปต์ 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 - ดูรายละเอียดในไฟล์ใบอนุญาต
ยินดีบริจาค! โปรดส่งคำขอดึง