2017-08-14 15 views
1

私はffmpeg:フレーム番号とともにビデオから画像を抽出しますか?

ffmpeg -i movie.avi -r 25 %05d.png 

でファイル.AVI(-rオプションは、フィルタ-vf='fps=fps=25'と同等でなければなりません)が、現在は元の映像にフレーム番号を知っていただきたいと思います(変数フレームレート)から画像を抽出しています生成された各画像は、に対応する。それを行う簡単な方法はありますか?

答えて

0

あなたは

ffmpeg -i movie.avi -vsync 0 %05d.png 
んが、フレームが重複していないか、削除されます

ので、各フレームを使用している場合はシリアル番号。動画のインデックスに対応する必要があります。

+0

はい、私は25」-rを指定した場合、私は、抽出されたそれらのフレームのフレーム番号が欲しいです"オプション。 – BlenderBender

0

私が見つけたいくつか私はしたいことを行う方法は、簡単なものではありません。 「SHOWINFO」フィルタを使用すると、例えば与えるだろう

ffmpeg -i movie.avi -filter:v 'showinfo' output.avi 

を実行している、すなわち、ソースファイルに関してフレームの位置を取得することが可能である

[Parsed_showinfo_1 @ 0x7ffaebd01bc0] N: 0チェックサム:0 pts_time:0 pos:630548 fmt:yuv420p sar:1/1 s:1280x720 i:P iskey:0タイプ:Pチェックサム:B4E5E664 plane_checksum:[6B3569DD 72B2AE10 31F8CE68]平均:[76 111 155] stdev: 13.1 3.8 8.7]

"pos:630548"は、最初のフレームの位置ですソースファイル内にあります。位置は、ソースファイル内のどのフレーム、一方は次いで前のように画像を抽出するだけでなく、入力ファイル内の抽出されたフレームの位置を与え、そしてこれら二つから

ffmpeg -i movie.avi -filter:v "fps=fps=25, showinfo" %05d.png > output.txt 2>&1 

を行うことに相当する情報を与え情報は、抽出されたフレームから入力ファイル内のフレームへのマッピングを一緒にまとめることができます。

しかし、私はこの解決策を「簡単」(またはかなり)と呼ぶことはできないと思います。

編集:@Mulvyaの提案に続いては、あなた自身にあなたが代わりに

ffmpeg -i movie.avi -filter:v "showinfo, fps=fps=25, showinfo" %05d.png > output.txt 2>&1 

この意志を実行する場合、元のビデオのフレームの位置を抽出するためにffmpeg -i movie.avi -filter:v 'showinfo' output.aviを実行する余分なステップを保存することができますオリジナルとフィルタリングされたビデオストリームのshowinfoを同時に出力します。 (元のビデオストリームがParsed_showinfo_0で始まる行に対応し、濾過流がParsed_showinfo_2で始まる行に相当)

[Parsed_showinfo_0 @ 00a38820] n: 0 pts:  0 pts_time:0  pos:  508 fmt:pal8 sar:0/1 s:320x200 i:P iskey:1 type:I checksum:CF3AE73F plane_checksum:[CF3AE73F] mean:[117] stdev:[48.3] 
[Parsed_showinfo_0 @ 00a38820] n: 1 pts:  1 pts_time:0.0285362 pos: 26710 fmt:pal8 sar:0/1 s:320x200 i:P iskey:0 type:P checksum:CF3AE73F plane_checksum:[CF3AE73F] mean:[117] stdev:[48.3] 
[Parsed_showinfo_2 @ 00a38ca0] n: 0 pts:  0 pts_time:0  pos:  508 fmt:pal8 sar:0/1 s:320x200 i:P iskey:1 type:I checksum:CF3AE73F plane_checksum:[CF3AE73F] mean:[117] stdev:[48.3] 
[Parsed_showinfo_0 @ 00a38820] n: 2 pts:  2 pts_time:0.0570725 pos: 31680 fmt:pal8 sar:0/1 s:320x200 i:P iskey:0 type:P checksum:512EEB5E plane_checksum:[512EEB5E] mean:[117] stdev:[48.2] 
+1

fpsフィルタの前にshowinfoを挿入することもできます。 fpsがいくつかのフレームを落とすと、その情報はpost fpsに決して表示されません。そして、位置シリーズにギャップがあるかどうかを確認するためにパケットサイズをチェックする必要があります。 – Mulvya

+0

あなたと私の2つの抽出を実行すると、一連のファイルサイズを順番に比較して、ドロップや重複を特定できます。 – Mulvya

+0

fps *の目的は、指定されたフレームレートを達成するためにフレームを削除することです。私はあなたが言っていることを理解していない。 – BlenderBender

関連する問題