2017-11-09 1 views
0

私は(-ssが速いhttps://trac.ffmpeg.org/wiki/Seekingを求めるため-iの前に来る)ffmpeg -ss $TIME -i $URL -frames:v 1 -filter:v $FILTER file.jpgのようなコマンドでffmpegのを使用してリモートビデオファイルからスクリーンショットを取得を取得します。 $FILTERは、クロップ/リサイズのようなスクリーンショットを変換する方法です。この場合は"crop=iw-5:ih-5, scale=100:100:force_original_aspect_ratio=increase, crop=100:100"一度実行ffmpegのが、複数のスクリーンショット

3秒、5秒、14秒で3つのスクリーンショットを取得したい場合は、このコマンドを3回、別々に3回、5回、14回、$TIMEとして実行する必要があります。しかし、一度コマンドを実行することは可能ですが、異なる時間に複数のスクリーンショットファイルを出力させることができますか?

そして、往復のリモートリクエストを3回ではなく1回だけ行う方法でffmpegを実行しますか?その場合、より効率的になります。もしそうでなければ、私はそれを並行して行うことができるので、3つのリクエストを別々にするほうが良いでしょう。

答えて

1

等間隔のスクリーンショットについては、wikiを参照してください。

特定のタイムスタンプのためにあなたがselectフィルタを使用して1回のパスでそれを行うことができます:tは秒単位でのプレゼンテーションタイムスタンプがある

ffmpeg -i <input> -filter:v "select='0-eq(t,3)-eq(t,5)-eq(t,14)',<other filters>" -vsync vfr file%01d.png 

betweenpict_typePICT_TYPE_Iを使用して、特定の間隔でIフレームを検索することもできます。

+1

ファイル全体のフィルタリングを避けるために、 '-t 15'と入力してください。 – Mulvya

+0

@aergistalだから私は実際にコマンドで文字 't'を使用していないのですか?プレゼンテーションタイムスタンプの意味は? – user779159

+0

@Mulvya 15は最後のスクリーンショットが14であるためですか?動画が2000秒で、最後のスクリーンショットが1995年にあったとしたら、ファイル全体をフィルタリングしているとしましょう。私のオリジナルの質問のコマンドと同じように、あなたが望むファイルの部分を取得する方法がありますか(ただ一つではなく多くのスクリーンショットでは)。 – user779159

関連する問題