2012-09-21 25 views
5

私はffmpeg 0.11.1を使用してビデオからキーフレームを抽出しようとしています。これまでのところ、私が試したすべてのコマンドはキーフレームを抽出せず、すべてのフレーム、すなわち出力のフレームの合計時間数を25fpsに戻します。 keyint_minを25に設定して、1秒あたり1つのキーフレームが最大であることを確認しました。ffmpegキーフレーム抽出

ffmpeg -vf select="eq(pict_type\,PICT_TYPE_I)" -g 250 -keyint_min 25 -i C:\test.mp4 -vsync 2 -f image2 C:\testTemp\thumbnails-%02d.jpeg 

しかし、まだすべてのフレームが返されます。

次に、キーフレームを20秒間で分割しようとしました。

ffmpeg -i C:\test.mp4 -vf select='eq(pict_type\,I)*(isnan(prev_selected_t)+gte(t-prev_selected_t\,20))' -vsync 0 -f image2 C:\testTemp\%09d.jpg 

同じ結果、すべてのフレームが返されます。

どうすればよいですか?

答えて

9

最初のコマンドでは、フィルタを入力オプションとして使用しています。私はffmpegがそれをどのように解釈するのか分からない。

これを試してください:あなたのソースのフレームレートに

ffmpeg -i C:\test.mp4 -vf select='eq(pict_type\,I)',setpts='N/(25*TB)' C:\testTemp\%09d.jpg 

変更25:NTSCビデオのための1001分の30000、NTSCフィルムのための1001分の24000、PALのための25、など

制御出力を-q:vまたは-qscale:vオプション(古いffmpegでは-qscaleと呼ばれています)を使用してください。 mpeg *の範囲は1〜31です.31は最悪の品質です。

次回は、stackoverflowが特にプログラミング用であるため、ffmpegの使用に関する質問はsuperuser.comで尋ねることを忘れないでください。

+0

こんにちは、ありがとう、私はエラーを持っていますフィルタ初期化argsで選択を選択します。開け閉めの回数は等しくないので、選択部分を '=' eq(pict_type \、I)、setpts = N /(25 * TB) 'を選択して=' eq(pict_type \、I )、setpts = 'N /(25 * TB)' 'しかし、両方とも同じエラーを返しました –

+0

申し訳ありません。悪いペーストの仕事。コマンドを更新しましたが、今回はテストできません。 – LordNeckbeard

+0

式 'eq(pict_type \、I)'を解析中に 'eq(pict_type \、I)'に多すぎるargsがあります。エラーとして別のエラーが発生しました。 –