import os import cv2 from src.VHSImage import generateVHSStyle from os.path import isfile, join import numpy as np import subprocess import logzero from logzero import logger from logzero import setup_logger def SaveVid(path): vidObj = cv2.VideoCapture(path) count = 0 success = 1 while success: success, image = vidObj.read() cv2.imwrite("frames/"+str(count)+".jpg", image) #os.rename("frames/"+str(count)+".jpg", os.path.splitext("frames/"+str(count)+".jpg")[0]) count += 1 def Style(pathToFrames): files = [f for f in os.listdir(pathToFrames) if isfile(join(pathToFrames, f))] count = 0 for i in files: count += 1 f = str(i) fi = pathToFrames + f out = fi + ".jpg" generateVHSStyle(fi, out, silence=True) os.rename(out, fi) print("--------") print("On Frame: ") print(count) print("Out of") print(len(files)) print("--------") cwd = os.getcwd() os.chdir(pathToFrames) c = "find ./ -name \"*.jpg\" -exec sh -c 'mv $0 `basename \"$0\" .jpg`' '{}' \; ;" os.system(c) os.chdir(cwd) def generateVideo(outfile, path, infile): frame_array = [] files = [int(f) for f in os.listdir(path) if isfile(join(path, f))] files.sort() duration = subprocess.check_output(['ffprobe', '-i', infile, '-show_entries', 'format=duration', '-v', 'quiet', '-of', 'csv=%s' % ("p=0")]) fps = len(files)/float(duration) print("FPS", fps) for i in range(len(files)): filename=path + str(files[i]) img = cv2.imread(filename) height, width, layers = img.shape size = (width,height) frame_array.append(img) out = cv2.VideoWriter(outfile,cv2.VideoWriter_fourcc(*'MP4V'), fps, size) for i in range(len(frame_array)): out.write(frame_array[i]) out.release() def VHS_Vid(infile, outfile): path = './frames/' os.system("rm frames/*") os.system("mkdir frames") logger.info("Exctracting Frames") try: SaveVid(infile) except: logger.debug("Extracted Frames") logger.info("Applying A E S T H E T I C S") Style(path) logger.info("Generating Vidio") generateVideo("temp.mp4", path, infile) logger.info("Extracting audio of original video") os.system("ffmpeg -i %(infile)s -vn -acodec copy output-audio.aac") logger.info("Merging audio") os.system("ffmpeg -i temp.mp4 -i output-audio.aac -c copy %(outfile)s") logger.info("Removing residual files") os.remove("temp.mp4") os.remove("output-audio.aac") #VHS_Vid("video.mp4","video2.mp4")