Guest User

Untitled

a guest
Oct 22nd, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.01 KB | None | 0 0
  1. from __future__ import print_function
  2. from argparse import ArgumentParser
  3. import sys
  4. sys.path.insert(0, 'src')
  5. import os, random, subprocess, evaluate, shutil
  6. from utils import exists, list_files
  7. import pdb
  8.  
  9. TMP_DIR = '.fns_frames_%s/' % random.randint(0,99999)
  10. DEVICE = '/gpu:0'
  11. BATCH_SIZE = 4
  12.  
  13. def build_parser():
  14. parser = ArgumentParser()
  15. parser.add_argument('--checkpoint', type=str,
  16. dest='checkpoint', help='checkpoint directory or .ckpt file',
  17. metavar='CHECKPOINT', required=True)
  18.  
  19. parser.add_argument('--in-path', type=str,
  20. dest='in_path', help='in video path',
  21. metavar='IN_PATH', required=True)
  22.  
  23. parser.add_argument('--out-path', type=str,
  24. dest='out', help='path to save processed video to',
  25. metavar='OUT', required=True)
  26.  
  27. parser.add_argument('--tmp-dir', type=str, dest='tmp_dir',
  28. help='tmp dir for processing', metavar='TMP_DIR',
  29. default=TMP_DIR)
  30.  
  31. parser.add_argument('--device', type=str, dest='device',
  32. help='device for eval. CPU discouraged. ex: \'/gpu:0\'',
  33. metavar='DEVICE', default=DEVICE)
  34.  
  35. parser.add_argument('--batch-size', type=int,
  36. dest='batch_size',help='batch size for eval. default 4.',
  37. metavar='BATCH_SIZE', default=BATCH_SIZE)
  38.  
  39. parser.add_argument('--no-disk', type=bool, dest='no_disk',
  40. help='Don\'t save intermediate files to disk. Default False',
  41. metavar='NO_DISK', default=False)
  42. return parser
  43.  
  44. def check_opts(opts):
  45. exists(opts.checkpoint)
  46. exists(opts.out)
  47.  
  48. def main():
  49. parser = build_parser()
  50. opts = parser.parse_args()
  51.  
  52. if opts.no_disk:
  53. evaluate.from_pipe(opts)
  54. else:
  55. in_dir = os.path.join(opts.tmp_dir, 'in')
  56. out_dir = os.path.join(opts.tmp_dir, 'out')
  57. if not os.path.exists(in_dir):
  58. os.makedirs(in_dir)
  59. if not os.path.exists(out_dir):
  60. os.makedirs(out_dir)
  61.  
  62. in_args = [
  63. 'ffmpeg',
  64. '-i', opts.in_path,
  65. '%s/frame_%%d.png' % in_dir
  66. ]
  67.  
  68. subprocess.call(" ".join(in_args), shell=True)
  69. base_names = list_files(in_dir)
  70. in_files = [os.path.join(in_dir, x) for x in base_names]
  71. out_files = [os.path.join(out_dir, x) for x in base_names]
  72. evaluate.ffwd(in_files, out_files, opts.checkpoint, device_t=opts.device,
  73. batch_size=opts.batch_size)
  74. fr = 30 # wtf
  75. out_args = [
  76. 'ffmpeg',
  77. '-i', '%s/frame_%%d.png' % out_dir,
  78. '-f', 'mp4',
  79. '-q:v', '0',
  80. '-vcodec', 'mpeg4',
  81. '-r', str(fr),
  82. opts.out
  83. ]
  84.  
  85. subprocess.call(" ".join(out_args), shell=True)
  86. print('Video at: %s' % opts.out)
  87. shutil.rmtree(opts.tmp_dir)
  88.  
  89. if __name__ == '__main__':
  90. main()
Add Comment
Please, Sign In to add comment