Мой вариант использования - это всего лишь одна миниатюра из видео, просто один файл, который можно использовать в качестве <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%.
Вот скрипт, который делает это .