ビデオファイルを一連の画像、たとえばN秒ごとに1フレームに変換する方法を教えてください。 mplayerまたはffmpegでこれを実行できますか? MPlayerを使ってスクリーンショットを手動で取得しましたが、長いビデオの場合はこれを自動化したいと思います。
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
Ffmpegを使えば非常にシンプルで、can N秒ごとに1フレームを出力しますwithout追加のスクリプト。画像シーケンスとしてエクスポートするには、出力としてmyimage_%04d.png
などを使用します。 %0xd
ビットは、ゼロが埋め込まれたx
桁の整数に変換されます。例では、myimage_0000.png myimage_0001.pngなどとして出力されます。多くの静止画像形式、png、 jpeg、tga、何でも(完全なリストについてはffmpeg -formats
を参照)。
わかりましたので、イメージシーケンスとしてエクスポートするには、イメージ形式を連続したファイル名の出力として使用できますが、すべてのフレームをエクスポートする必要はありません。したがって、-r n
オプションを使用して、出力のフレームレートを必要なものに変更するだけです。ここで、n
は1秒あたりのフレーム数です。 1秒あたり1フレームは-r 1
、4秒ごとに1フレームは-r 0.25
、10秒ごとに1フレームは-r 0.1
などとなります。
まとめると、4秒ごとにinput.movの1フレームをoutput_0000.png、output_0001.pngなど:
ffmpeg -i input.mov -r 0.25 output_%04d.png
%xdを必要な桁数に変更します(例:コマンドが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
スクリプトで%
を1つだけ使用しないでください。また、コマンドラインで%%
を使用しないでください。どちらの状況でもエラーが生成されます。
ffmpeg
を使うと、次のことができます。
ffmpeg -ss 4 -i input.avi -s 320x240 -frames:v 1 output.jpg
このコマンドは、ビデオの4秒後に320×240サイズのJPGサムネイルを生成します。時間とファイル名を変更するスクリプトにこれを入れれば完了です。
詳細情報: 動画のX秒ごとにサムネイル画像を作成する
一種のcontact sheetの後で、UnixライクなOSで作業している場合は、この手の込んだスクリプトを使用することができます。 Video Contact Sheet * NIX、short vcs 。
バックグラウンドではffmpeg
(デフォルト)またはmplayer
も使用しているため、多くのビデオフォーマットを処理できます。それは映画から静止画像をキャプチャして、いくつかのヘッダとフッタを持つ画像にそれらを合成するプロセスを自動化します。あなたは選ぶことができます。何個のキャプチャが必要か、あるいはそれらの間の時間差。
10分間隔では、呼び出しは次のようになります。
vcs -i 10m input.avi
他の調整については、 コマンドラインオプションの全リスト を確認してください。
これがコンタクトシートの一例です ホームページから
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
VirtualDub はあなたのためにこれをすることができます
File
- > Export
- > Image sequence
あなたもこれを試すことができます
vLCコマンドラインから...
vlc "C:\あなたの\ファイル\パス\ file.avi" -V image --image-out-prefix = capname --image-out-ratio = 60
file.aviはキャプチャ元のビデオ、capnameは保存された画像のプレフィックス、比率を付けて再生することをお勧めします(60は60のうち1つの画像がキャプチャされていることを意味します)。 --image-out-format jpegでは、キャップをpngではなくjpegsとして保存します。 - snapshot-pathを使用すると、キャップを保存する場所を選択できます。
VirtualDubではフレームをスキップできます。ビデオ - >フレームレートメニューにある "Decimate By"オプションを使うだけです。例えば、 "Decimate By 100"を設定した後、[ファイル] - > [エクスポート] - > [イメージシーケンス]を使用すると、100フレームごとに保存されます。