Kasing penggunaan saya hanya satu thumbnail dari video, hanya satu file untuk digunakan sebagai <video>
poster tag. Jadi, apa cara cepat untuk membuat ini?
Dengan ffmpeg
, Anda dapat melakukan ini:
ffmpeg -ss 123 -y -i video.mp4 -r 1 -updatefirst 1 -frames 1 poster.jpg
Yang akan memberikan frame dekat kedua 123
dari video.mp4
disimpan sebagai poster.jpg
.
Masalahnya, seperti yang Anda lihat, adalah kita perlu tahu mana yang benar.
Untuk menjaga agar dependensi kami tetap rendah, kami akan menggunakan ffmpeg sendiri untuk ini:
# 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% video sepertinya pilihan umum, tetapi Anda bisa membuatnya 33% atau 50% juga.
Inilah skrip yang melakukan ini .