Deepfake-Detector / tools /data /skeleton /compress_nturgbd.py
AZIIIIIIIIZ's picture
Upload 1039 files
d670799 verified
# Copyright (c) OpenMMLab. All rights reserved.
import multiprocessing as mp
import os
import os.path as osp
import subprocess
def get_shape(vid):
cmd = 'ffprobe -v error -select_streams v:0 -show_entries ' \
'stream=width,height -of csv=s=x:p=0 \"{}\"'.format(vid)
w, h = subprocess.check_output(cmd, shell=True).decode('utf-8').split('x')
return int(w), int(h)
def compress(src, dest, shape=None, target_size=540, fps=-1):
if shape is None:
shape = get_shape(src)
w, h = shape
scale_str = f'-vf scale=-2:{target_size}' if w >= h else \
f'-vf scale={target_size}:-2'
fps_str = f'-r {fps}' if fps > 0 else ''
quality_str = '-q:v 1'
vcodec_str = '-c:v libx264'
cmd = f'ffmpeg -y -loglevel error -i {src} -threads 1 ' \
f'{quality_str} {scale_str} {fps_str} {vcodec_str} {dest}'
os.system(cmd)
def compress_nturgbd(name):
src = name
dest = src.replace('nturgbd_raw',
'nturgbd_videos').replace('_rgb.avi', '.mp4')
shape = (1920, 1080)
compress(src, dest, shape)
src_dir = 'data/nturgbd_raw'
tgt_dir = 'data/nturgbd_videos'
os.makedirs(tgt_dir, exist_ok=True)
files = [osp.join(src_dir, x) for x in os.listdir(src_dir) if '.avi' in x]
pool = mp.Pool(32)
pool.map(compress_nturgbd, files)