video2images.py 1.16 KB
Newer Older
Nianchen Deng's avatar
sync    
Nianchen Deng committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import sys
import os
import argparse
from pathlib import Path

sys.path.append(os.path.abspath(sys.path[0] + '/../../'))

parser = argparse.ArgumentParser()
parser.add_argument('-s', '--start', type=int)
parser.add_argument('-t', '--duration', type=int)
parser.add_argument('--fps', type=str)
parser.add_argument('--subset', type=str)
parser.add_argument('datadir', type=str)
args = parser.parse_args()

os.chdir(args.datadir)

if args.subset is not None:
    video_dir = Path(f"videos/{args.subset}")
else:
    video_dir = Path(f"video")
for video_path in video_dir.glob("*.*"):
    # Extract frames from video
    image_dir = "images" if args.subset is None else f"images/{args.subset}"
    os.makedirs(f"{image_dir}/{video_path.stem}", exist_ok=True)
    extra_args = []
    if args.start is not None:
        extra_args.append(f"-ss {args.start}")
    if args.duration is not None:
        extra_args.append(f"-t {args.duration}")
    if args.fps is not None:
        extra_args.append(f"-vf fps={args.fps}")
    extra_args = ' '.join(extra_args)
    os.system(f"ffmpeg -i {video_path} {extra_args} -f image2 -q:v 2 "
              f"{image_dir}/{video_path.stem}/image%03d.png")