5

私はffmpeg0.11.1を使用してビデオからキーフレームを抽出しようとしています。これまでに試したすべてのコマンドは、キーフレームを抽出しませんが、すべてのフレーム、つまり25fps*合計時間のフレーム数を出力に返します。keyint_minを25に設定して、1秒あたり1キーフレームの最大値があることを確認してみました。

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

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

私は何をすべきか?

4

1 に答える 1

10

In your first command you are using the filter as an input option. I don't know how ffmpeg will interpret that.

Try this:

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

Change 25 to the frame rate of your source: 30000/1001 for NTSC video, 24000/1001 for NTSC film, 25 for PAL, etc.

Control output quality with the -q:v or -qscale:v option (just called -qscale in old ffmpeg). Range for mpeg* is 1-31 where 31 is the worst quality.

Next time remember that ffmpeg usage questions are to be asked at superuser.com since stackoverflow is specifically for programming.

于 2012-09-22T01:50:21.770 に答える