เคสของฉันเป็นภาพขนาดย่อเพียงหนึ่งภาพจากวิดีโอเพียงไฟล์เดียวที่ใช้เป็น<video>
โปสเตอร์แท็ก ดังนั้นวิธีที่รวดเร็วในการทำสิ่งนี้คืออะไร?
ด้วยffmpeg
คุณสามารถทำสิ่งนี้:
ffmpeg -ss 123 -y -i video.mp4 -r 1 -updatefirst 1 -frames 1 poster.jpg
ที่จะให้กรอบที่อยู่ใกล้ที่สอง123
ของการบันทึกเป็นvideo.mp4
poster.jpg
ปัญหาอย่างที่คุณเห็นคือเราต้องรู้ว่าตัวที่สองนั้นถูกต้อง
เพื่อให้การอ้างอิงของเราอยู่ในระดับต่ำเราจะใช้ ffmpeg สำหรับสิ่งนี้:
# Get the time as h:m:s (non-padded)
l=$(ffmpeg -i video.mp4 2>&1 | grep Duration: | sed -r 's/\..*//;s/.*: //;s/0([0-9])/\1/g')
# Convert that into seconds
s=$((($(cut -f1 -d: <<< $l) * 60 + $(cut -f2 -d: <<< $l)) * 60 + $(cut -f3 -d: <<< $l)))
# Get frame at 25% as the thumbnail
ffmpeg -ss $((s / 4)) -y -i video.mp4 -r 1 -updatefirst 1 -frames 1 poster.jpg
ดูเหมือนว่าวิดีโอ 25% เป็นตัวเลือกที่ใช้กันทั่วไป แต่คุณสามารถสร้างได้ 33% หรือ 50% เช่นกัน
นี่คือสคริปต์ที่ไม่นี้