私の使用例は、ビデオからの1つのサムネイル、<video>
タグポスターとして使用する1つのファイルだけです。それで、これを作る速い方法は何でしょうか?
ではffmpeg
、これを行うことができます:
ffmpeg -ss 123 -y -i video.mp4 -r 1 -updatefirst 1 -frames 1 poster.jpg
これ123
により、video.mp4
保存されたの2番目に近いフレームが得られます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%にすることもできます。
これを行うスクリプトは次のとおりです。