FFmpegは動画の変換や静止画との変換などが行えるコマンドラインツール。様々なフォーマットに対応しているので便利。
- ここからバイナリをダウンロードして適当なフォルダに置き、パスを通す。
- あるいはMacPortsやHomeBrewを使っているならば、
sudo port install ffmpeg
やbrew install ffmpeg
でも良い。
私自身は、バイナリをダウンロードして使用している。
以下のコマンドで、input.mpg
から1秒ごとにスナップショットをPNGとして保存する。mpg, png以外にも様々なフォーマットが使用可能。
ffmpeg -i input.mpg -r 1 output%04d.png
ここに説明があるように、出力ファイル名のoutput%04d.png
のところがoutput0000.png
, output0001.png
,... というように展開される。
以下は余談だが、Pythonでバッチ処理したいときにはこのような感じにする。
src_dir
内の各.aviファイルに対し、- カレントフォルダの
slices
以下に、拡張子を除いたファイル名と同じ名前のフォルダを作って - その中に連番で保存
from subprocess import call
import os
import glob
# Make a folder if it does not exist.
def ensure_exists(folder):
if not os.path.exists(folder):
os.makedirs(folder)
def basename_noext(path):
return os.path.splitext(os.path.basename(path))[0]
src_dir = '/path/to/folder'
files = list(glob.glob(os.path.join(src_dir,'*.avi')))
for in_path in files:
out_folder = os.path.join('slices',basename_noext(in_path))
ensure_exists(out_folder)
out_path = os.path.join(out_folder,'%04d.png')
call(['ffmpeg','-i', in_path, '-r', '1', out_path])