ビデオクリップからすべてのキーフレームを抽出する方法


10

ビデオクリップからキーフレームを抽出しようとしています。次のコマンドを試しましたが、すべてのフレームが抽出されます。

ffmpeg -vf select="eq(pict_type\,PICT_TYPE_I)" -i 2.flv -vsync 2 -s 73x41 -r 30 -f image2 thumbnails-%%02d.jpeg

回答:


20

ビデオフィルターを-skip_frame必要とせずに、これをより簡単に使用できselectます。

ffmpeg -skip_frame nokey -i 2.flv -vsync 0 -r 30 -f image2 thumbnails-%02d.jpeg

2
驚くべきことですが、20分のビデオでは、選択フィルターを使用した3分以上と比較して、10秒未満です!
怒っ

-threads 1デフォルトと比較して、必ずを使用してください。-threads autoこれにより、cropdetectフィルターグラフ(ffmpeg -threads 1 -skip_frame nokey -i input.mkv -filter:v select='not(mod(n\,20))',cropdetect -an -f null /dev/null)がシステムで2倍高速になります(60秒から30秒まで)。
genpfault

skip_frame nokeyは使用しません。出力も確認しましたか?私のファイルとビルド(2019年8月)では、nokeyでIフレームの前に前のフレームが表示され、フィルターされていない/すべてのフレームで後のタイムスタンプのIフレームが表示されるため、不適切なタイムスタンプが表示されます。
JasonXA

@genpfaultが使用を提案する理由-threads 1は、それ以外の場合、出力キーフレームのシーケンスが順不同で発行される可能性があるためです。この問題に対処するなんらかの事後的な方法がある場合は、マルチスレッドを維持できます。また、を使用している場合でも、 順序が狂ったキーフレームを取得することは可能であるように見え-threads 1ますが、この場合、このような場合はすべて、h264デコーダーエラーが伴う/フラグが付いているようですillegal short term buffer state detected
Glenn Slayden

12

selectおよびscaleフィルターの使用例:

ffmpeg -i 2.flv -vf "select=eq(pict_type\,I),scale=73x41" \
-vsync vfr -qscale:v 2 thumbnails-%02d.jpeg

いくつかのヒント:

  • フィルターは-i出力オプションであるため、オプションの前に配置しないでください。コマンドをどこから取得したかはわかりPICT_TYPE_Iませんが、存在しませんI

  • scale、置き換えることができるフィルタ7341など:フィルターを持つように自動的に幅や高さは縦横比を維持するために計算しますscale=73:-1scale=-1:41。これにより、「強制」スケーリングによって生じる可能性のある引き伸ばしやつぶしが防止されます。

  • 出力品質は-qscale:v(またはエイリアス-q:v)で制御できます。有効範囲は2〜31のリニアスケールで、値が小さいほど品質が高くなります。

  • ffmpeg入力がそれを古くする可能性があることを私に告げる前にあなたがフィルターを許可すること。ご使用のオペレーティングシステム用の最近の静的ビルドをダウンロードするか、上記が機能しない場合はコンパイルガイドに従って自分でビルドします。


1
あなたの目標は可逆キーフレームを抽出することであるならば、あなたは次のことを試すことができます:ffmpeg -i 2.flv -vf "select=eq(pict_type\,I)" -vsync vfr frame-%02d.png
ペルチェ

0

このエラーの場合:

オプションvf(ビデオフィルターの設定)を入力URL 1508.mp4に適用することはできません-入力オプションを出力ファイルに適用しようとしている、またはその逆です。このオプションを、それが属するファイルの前に移動します。入力ファイル1508.mp4の解析オプションエラー。入力ファイルを開くときにエラーが発生しました:無効な引数

あなたはこれを行うことができます:

ffmpeg -i 263.mp4 -vf select=eq(pict_type\,PICT_TYPE_I)  -vsync 2 -s 480x320 -r 24 -f image2 thumbnails-%05d.jpeg

== --------------------------------------------

事前に「-i」パラメータ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.