ภาพหน้าจอ: ฟิล์มภาพยนตร์
ฉันเหนื่อย ffmpeg -i video.mkv -vf fps=1 out%d.png
แต่มันสร้างภาพทีละภาพ ฉันต้องการภาพขนาดย่อทั้งหมดเป็นภาพเดียว ดังภาพข้างบน
ภาพหน้าจอ: ฟิล์มภาพยนตร์
ฉันเหนื่อย ffmpeg -i video.mkv -vf fps=1 out%d.png
แต่มันสร้างภาพทีละภาพ ฉันต้องการภาพขนาดย่อทั้งหมดเป็นภาพเดียว ดังภาพข้างบน
คำตอบ:
ffmpeg -i input -filter_complex \
"select='not(mod(n,30))',scale=120:-1,tile=layout=3x2" \
-vframes 1 -q:v 2 output.jpg
layout
ขึ้นอยู่กับจำนวนภาพที่คุณต้องการแสดง กระบวนการอาจใช้เวลาขึ้นอยู่กับระยะเวลาและรูปแบบการป้อนข้อมูล
คุณสามารถใช้สิ่งที่ชอบ
ffmpeg -i video.mkv -filter:v "select=not(mod(n\,10)),setpts=N/((25)*TB)" -qscale:v 2 frame%03d.jpg
select
ควบคุมว่าเฟรมใดที่คุณกำลังโลภ setps
ควบคุมอัตราเฟรมและขึ้นอยู่กับแหล่งที่มาของคุณ - 25
สำหรับ PAL หรือ 30000/1001
สำหรับวิดีโอ NTSC qscale
ควบคุมคุณภาพ (quantizing scale) ของเฟรมเอาต์พุตจาก 2 (ดีที่สุด) ถึง 31 (แย่ที่สุด) เพิ่งสังเกตเห็นการแก้ไขของคุณด้านบนหากที่ให้เฟรมที่คุณต้องการใช้ควรเป็นจุดเริ่มต้น
จากนั้นคุณจะต้องต่อภาพเข้าด้วยกันเป็นสินทรัพย์เดียวโดยใช้เครื่องมือเช่น ImageMagick
montage -background "transparent" -depth 8 -type TrueColorMatte frame??.jpg \
-geometry 50x50 -tile 10x10 -matte -transparent "transparent" \
-type TrueColorMatte -depth 8 allframes.jpg
fps=1
ทำงานเช่นเดียวกับselect='not(mod(n,30))'
?