#!/usr/bin/env python import argparse import os import os.path as osp import imageio import tqdm def main(): parser = argparse.ArgumentParser( formatter_class=argparse.ArgumentDefaultsHelpFormatter, ) parser.add_argument('video_file') parser.add_argument('-r', '--rate', type=float, help='frame rate') args = parser.parse_args() video_file = args.video_file rate = args.rate out_dir = osp.splitext(osp.basename(video_file))[0] os.mkdir(out_dir) reader = imageio.get_reader(video_file) meta_data = reader.get_meta_data() fps = meta_data['fps'] n_frames = meta_data['nframes'] for i, img in tqdm.tqdm(enumerate(reader), total=n_frames): if rate is None or i % int(round(fps / rate)) == 0: imageio.imsave(osp.join(out_dir, '%08d.jpg' % i), img) if __name__ == '__main__': main()