N秒ごとの動画の1フレームを画像に抽出する方法は?

capture ffmpeg images mplayer video

どのようにビデオファイルを一連の画像、例えばN秒ごとの1フレームに変換することができます。mplayer や ffmpeg はこれを行うことができますか?私は手動でスクリーンショットを取得するためにMPlayerを使用していますが、私は長いビデオのためにこれを自動化したいと思います

  77  Liam  2010-04-27


ベストアンサー

ffmpegを使うと非常にシンプルで、余計なスクリプトを入れなくてもN秒に1フレームを出力することができます。画像シーケンスとして出力するには、出力として myimage_%04d.png などを使用するだけです。%0xd ビットはゼロパッドの整数 x 桁の長さに変換されます

  • myimage_0000.png,

  • myimage_0001.png,

  • myimage_0002.png

    etc..

png, jpeg, tga などの静止画フォーマットが使えます (完全なリストは ffmpeg -formats を参照してください)

さて、これでムービーを画像のシーケンスとしてエクスポートする方法はわかりましたが、すべてのフレームをエクスポートしたくない場合はどうすればいいでしょうか?

トリックは、-r nオプションを使って、出力のフレームレートを好きなように変更することです。1秒に1フレームの場合は-r 1、4秒に1フレームの場合は-r 0.25、10秒に1フレームの場合は-r 0.1などとなります

そこで、まとめると、input.movの1フレームを4秒ごとにoutput_0000.png, output_0001.pngなどに保存するとこんな感じになります

ffmpeg -i input.mov -r 0.25 output_%04d.png

-r 0.25 オプションは、出力のフレームレートを制御しているので、-i input.mov の部分の後に来ることに注意してください。これを入力の前に置くと、入力ファイルは指定されたフレームレートを持っているかのように扱われます

例えば、コマンドで10,000以上のフレームを作成する場合は、%04d%05dに変更します。これは画像シーケンスの入力ファイルでも動作します。続きを読む こちら

Windowsユーザー。コマンドラインでは%を使用してください

のような例があります。ffmpeg -i inputFile.mp4 -r 1 outputFile_%02d.png

CMDとBATスクリプトでは%%を使用します

のような例があります。ffmpeg -i inputFile.mp4 -r 1 outputFile %%02d.png

そのため、スクリプトでは %% を二重にし、対話型コマンドラインでは % を一重にします。どちらの状況でも間違えるとエラーが発生します

83  stib  2014-03-15


mplayer -vo jpeg -sstep 5 file.avi

は5秒ごとにフレームをjpegファイルとして保存します

しかし、それはファイルの最後で停止することはなく、最後のフレームのコピーを生成し続けます。これを避けるには、別のプレーヤーを使用するか、mplayerを使用して、ビデオの持続時間を秒単位で見つけてください

mplayer -vo null -ao null -frames 0 -identify file.avi

で、”ID_LENGTH=147.00 “のような行を探します

長さから 2 を引き、この値を -endpos オプションに使用します。例えば、147秒の動画の場合

mplayer -vo jpeg -sstep 5 -endpos 145 file.avi

31  Liam  2010-04-28


ffmpegでは、以下のようになります

ffmpeg -ss 4 -i input.avi -s 320x240 -frames:v 1 output.jpg

このコマンドは、動画の4秒目に320×240サイズのJPGサムネイルを生成します。これを時間とファイル名を変更するスクリプトに入れれば完成です

詳細はこちらをご覧ください。動画のX秒ごとにサムネイル画像を作成します

13  Nifle  2010-04-27


あなたがコンタクトシートの種類の後で、あなたがUnixのようなOSで作業している場合は、ビデオコンタクトシート*NIX、短いvcsと呼ばれるこの精巧なスクリプトを使用することができます

バックグラウンドでは、ffmpeg (デフォルトでは) または mplayer を使用するので、多くのビデオフォーマットを扱うことができます。これは、ムービーから静止画をキャプチャし、ヘッダーとフッター付きの画像に合成するプロセスを自動化します。キャプチャの数や時間差などを選択することができます

10分のインターバルでは、呼び出しはこんな感じです

vcs -i 10m input.avi

他にもいくつかの調整があるので、コマンドラインオプションの完全なリストをチェックしてください

ホームページからのお問い合わせシートの例です

enter image description here

8  mpy  2013-06-04


VLC 1.1.0以上では、シーンビデオフィルターを使用することができます

vlc C:\video\to\process.mp4 --rate=1 --video-filter=scene --vout=dummy --start-time=10 --stop-time=11 --scene-format=png --scene-ratio=24 --scene-prefix=snap --scene-path=C:\path\for\snapshots\ vlc://quit

上記では、00:00:10から始まり00:00:11で終わる24フレームのうち1フレームを保存しています(-scene-ratio=24)

ちょうどテストして、新しいWindows 8のインストールでVLC 2.0.3で動作することを確認しました(私は追加のビデオプラグインやソフトウェアを持っていません)

完全なドキュメント。http://wiki.videolan.org/How_to_create_thumbnails

7  Michael  2012-09-11


VirtualDubはこんなことができます

File -> Export -> Image sequence

enter image description here

2  Shevek  2010-04-27


こちらも試してみてはいかがでしょうか

VLCコマンドラインから

vlc “C:Your\\\pathfile\.avi” -V image –image-out-prefix=capname –image-out-ratio=60

file.aviはキャプチャしたい動画、capnameは保存された画像の接頭辞です

上記のソース

1  Nifle  2010-04-27


VirtualDubではフレームをスキップすることができます。Video -> Frame Rate メニューの Decimate By オプションを使用してください。例えば、”Decimate By 100 “を設定してからFile -> Export -> Image sequenceを使用すると、100フレーム目のフレームだけが保存されます

1  Alex  2011-11-30


タイトルとURLをコピーしました