7

ffmpeg を使用してビデオ キーフレームからサムネイル画像を抽出しようとしています。コマンド ラインは次のとおりです。

ffmpeg -i video.mp4 -vframes 1 -s 200x200 -vf select="eq(pict_type\,PICT_TYPE_I)" -vsync 0 -f image2 video.jpg

しかし、それが抽出するキーフレームは完全に黒です(ビデオは黒いフレームで始まると思います)...特定の時間を求めに、ビデオから最初の非黒キーフレームを自動的に抽出する方法はありますか(複数を管理する必要があります)多くの長さのビデオ) ?

ありがとう

4

2 に答える 2

1

ffmpeg だけを使用した解決策は考えられません。ただし、最初のいくつかのキーフレームを抽出すると (たとえば、-vframes を 20 まで上げて)、ImageMagic で分析できます。画像を 1 つのグレースケール カラーに縮小すると、画像から平均グレー値が選択されます。のようなコマンドライン

convert avatar.jpeg -colors 1 -type grayscale -format '%c' histogram:info:

次のような出力が生成されます

16384: ( 80, 80, 80) #505050 gray(80)

(例として、Simone のアバター画像を使用しました。) 最後の番号は、あなたのケースで最も興味深いものです。画像の暗さを表し、0 で理想的な黒、255 で真っ白になります。sedスクリプトで簡単に抽出できます

convert ... | sed 's/^.*(\(.*\))$/\1/'

これをいくつかのシェル スクリプトと組み合わせて、特定のしきい値よりも高いグレー値を持つ最初の画像を見つけ、それをサムネイルとして使用します。

于 2013-09-04T17:19:55.953 に答える
0

オプションthumbnail=num_frameを使用すると、フレームを抽出するときに選択できますが、最初の非バルクキーフレームを抽出できるかどうかはわかりません。http://ffmpeg.org/ffmpeg.html#thumbnail

于 2012-03-14T11:07:15.033 に答える