回答:
ffmpegを使用すると非常に簡単になり、追加のスクリプトを作成しなくても N秒ごとに1つのフレームを出力できます。イメージシーケンスとしてエクスポートするには、出力として使用するか、類似したものを使用します。ビットは、ゼロパディングされた整数に変換され、長い桁-私が与えた例では、その出力を取得しますmyimage_%04d.png
%0xd
x
myimage_0000.png
、 myimage_0001.png
、myimage_0002.png
等..
多数の静止画像形式、png、jpeg、tgaなどを使用できます(ffmpeg -formats
完全なリストを参照)。
さて、これでムービーを一連の画像としてエクスポートする方法はわかりましたが、すべてのフレームをエクスポートしたくないと言うでしょうか?
トリックは、-r n
オプションを使用して出力のフレームレートを任意の値に変更することですn
。ここで、は1秒あたりのフレーム数です。1 -r 1
秒あたり1フレーム、4秒ごと-r 0.25
に1フレーム、10秒ごとに1フレーム-r 0.1
などとなります。
だから、一緒にすべてを置くために、これは1つのフレーム保存するためにどのように見えるかであるinput.mov
に4秒ごとにoutput_0000.png
、output_0001.png
等:
ffmpeg -i input.mov -r 0.25 output_%04d.png
出力のフレームレートを制御しているため、この-r 0.25
オプションはパーツの後に来ることに注意してください。入力の前に置くと、指定されたフレームレートがあるかのように入力ファイルを扱います。-i input.mov
%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
したがって%%
、スクリプトを2 つ%
、対話型のコマンドラインを1つにします。どちらの状況でも間違えるとエラーが発生します。
-r
をエクスポートする場合、何を入れる必要がありますか?ビデオのFPSを知っている場合、それを入力したと思いますが、もしもしなかったらどうでしょうか?
jpegs
これに使用したいことに注意してくださいpng
。私の場合、jpeg
sはそれぞれ約50kbで、png
sは約2MBでした。
-q:v 1
ここにsuperuser.com/questions/318845/の
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
すると、次のことができます。
ffmpeg -ss 4 -i input.avi -s 320x240 -frames:v 1 output.jpg
このコマンドは、ビデオの4秒目に320×240サイズのJPGサムネイルを生成します。これをスクリプトに入れて、時間とファイル名を変更すれば完了です。
-ss position
フラグを使用してファイルをさらに探索するのに役立ちますか?-ss Seek to given time position in seconds. hh:mm:ss[.xxx] syntax is also supported
ある種のコンタクトシートを使用していて、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
これも試してみてください
VLCコマンドラインから...
vlc "C:\ YOUR \ file \ path \ file.avi" -V image --image-out-prefix = capname --image-out-ratio = 60
file.aviはキャプチャしたいビデオ、capnameは保存した画像のプレフィックス、比率をいじってみたいかもしれません(60は60の画像のうち1つがキャプチャされていることを意味します) --image-out-format jpegは、キャップをpngではなくjpegとして保存します。--snapshot-pathを使用すると、キャップを保存する場所を選択できます。