จะแยกเฟรมหลักทั้งหมดจากวิดีโอคลิปได้อย่างไร


9

ฉันพยายามแยกเฟรมที่สำคัญจากคลิปวิดีโอ ฉันลองใช้คำสั่งต่อไปนี้ แต่มันแยกเฟรมทั้งหมด

ffmpeg -vf select="eq(pict_type\,PICT_TYPE_I)" -i 2.flv -vsync 2 -s 73x41 -r 30 -f image2 thumbnails-%%02d.jpeg

คำตอบ:


16

คุณสามารถทำให้การใช้งานนี้ง่ายขึ้นโดย-skip_frameไม่จำเป็นต้องใช้selectตัวกรองวิดีโอ:

ffmpeg -skip_frame nokey -i 2.flv -vsync 0 -r 30 -f image2 thumbnails-%02d.jpeg

2
น่าทึ่งใช้เวลาน้อยกว่า 10 วินาทีในวิดีโอ 20 นาทีเทียบกับมากกว่า 3 นาทีด้วยตัวกรองที่เลือก!
บ้า

ตรวจสอบให้แน่ใจว่าใช้-threads 1เปรียบเทียบกับค่าเริ่มต้น-threads autoแล้วมันทำให้cropdetectกราฟตัวกรอง ( ffmpeg -threads 1 -skip_frame nokey -i input.mkv -filter:v select='not(mod(n\,20))',cropdetect -an -f null /dev/null) 2x เร็วที่สุดในระบบของฉัน (60s ถึง 30s)!
genpfault

12

ตัวอย่างการใช้ตัวกรองselectและscale:

ffmpeg -i 2.flv -vf "select=eq(pict_type\,I),scale=73x41" \
-vsync vfr -qscale:v 2 thumbnails-%02d.jpeg

เคล็ดลับ:

  • ตัวกรองไม่ควรอยู่หน้า-iตัวเลือกเนื่องจากเป็นตัวเลือกเอาต์พุต ผมไม่ทราบว่าที่ว่าคุณมีคำสั่งจาก แต่PICT_TYPE_Iไม่ได้อยู่ - Iมันควรจะเป็น

  • ในscaleตัวกรองที่คุณสามารถเปลี่ยน73หรือ41จะมีตัวกรองอัตโนมัติคำนวณความกว้างหรือความสูงที่จะรักษาอัตราส่วน: เช่นหรือscale=73:-1 scale=-1:41สิ่งนี้จะช่วยป้องกันการยืดหรือยืดที่อาจเกิดจากการปรับ "บังคับ"

  • คุณภาพผลผลิตสามารถควบคุมได้ด้วย-qscale:v(หรือนามแฝง-q:v) ช่วงที่มีประสิทธิภาพคือสเกลเชิงเส้น 2 ถึง 31 และค่าที่ต่ำกว่าคือคุณภาพที่สูงขึ้น

  • ที่คุณffmpegอนุญาตให้ตัวกรองก่อนที่อินพุตจะบอกฉันว่ามันอาจจะล้าสมัย ดาวน์โหลดบิลด์แบบสแตติกล่าสุดสำหรับระบบปฏิบัติการของคุณหรือสร้างด้วยตัวเองตามคำแนะนำในการรวบรวมหากข้อมูลด้านบนไม่ทำงาน


1
หากเป้าหมายของคุณคือการแยกเฟรมหลักแบบไม่สูญเสียคุณสามารถลองทำสิ่งต่อไปนี้:ffmpeg -i 2.flv -vf "select=eq(pict_type\,I)" -vsync vfr frame-%02d.png
Peltier

0

หากข้อผิดพลาดนี้:

ตัวเลือก vf (ตั้งค่าตัวกรองวิดีโอ) ไม่สามารถใช้กับอินพุต URL 1508.mp4 - คุณกำลังพยายามใช้ตัวเลือกอินพุตกับไฟล์เอาต์พุตหรือในทางกลับกัน ย้ายตัวเลือกนี้ก่อนไฟล์ที่เป็นของ เกิดข้อผิดพลาดในการแยกวิเคราะห์ตัวเลือกสำหรับไฟล์อินพุต 1508.mp4 เกิดข้อผิดพลาดในการเปิดไฟล์อินพุต: อาร์กิวเมนต์ไม่ถูกต้อง

คุณสามารถทำได้:

ffmpeg -i 263.mp4 -vf select=eq(pict_type\,PICT_TYPE_I)  -vsync 2 -s 480x320 -r 24 -f image2 thumbnails-%05d.jpeg

== --------------------------------------------

พารามิเตอร์“ -i” ล่วงหน้า

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