Spaces:
Sleeping
Sleeping
File size: 2,441 Bytes
db12400 b127fd6 5e44253 bbf9a90 db12400 54d06ee 7a6bc70 54d06ee 5e44253 54d06ee 5e44253 6a04784 5e44253 db12400 9e2421a 6a04784 e38439c 4b109d4 dafd4d1 7a6bc70 54d06ee 4b109d4 dafd4d1 6a04784 db12400 54d06ee 5cd1978 9e2421a f90f58c db12400 9e2421a |
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
import gradio as gr
import os
import cv2
import numpy as np
from moviepy.editor import *
token = os.environ.get('HF_TOKEN')
pix2pix = gr.Blocks.load(name="spaces/fffiloni/instruct-pix2pix-clone", api_key=token)
def trim_video(video_in, trim_value):
clip = VideoFileClip(video_in)
clip1 = clip.subclip((0,00),(trim_value,00))
clip1.write_videofile('edited.mp4',codec='libx264')
return 'edited.mp4'
def get_frames(video_in):
frames = []
# Opens the Video file
cap= cv2.VideoCapture(video_in)
fps = cap.get(cv2.CAP_PROP_FPS)
i=0
while(cap.isOpened()):
ret, frame = cap.read()
if ret == False:
break
cv2.imwrite('kang'+str(i)+'.jpg',frame)
frames.append('kang'+str(i)+'.jpg')
i+=1
cap.release()
cv2.destroyAllWindows()
return frames, fps
def create_video(frames, fps):
clip = ImageSequenceClip(frames, fps=fps)
clip.write_videofile("movie.mp4", fps=fps)
return 'movie.mp4'
def infer(prompt,video_in, seed_in, trim_value):
trimmed_vid = trim_video(video_in, trim_value)
break_vid = get_frames(trimmed_vid)
frames_list= break_vid[0]
fps = break_vid[1]
result_frames = []
for i in frames_list:
pix2pix_img = pix2pix(prompt,5.5,1.5,i,15,"",512,512,seed_in,fn_index=0)
images = [os.path.join(pix2pix_img[0], img) for img in os.listdir(pix2pix_img[0])]
result_frames.append(images[0])
final_vid = create_video(result_frames, fps)
return final_vid
with gr.Blocks(css='style.css') as demo:
with gr.Column(elem_id="col-container"):
with gr.Row():
with gr.Column():
prompt = gr.Textbox(placeholder="enter prompt", show_label=False)
video_inp = gr.Video(label="Video source", source="upload", type="filepath")
with gr.Column():
with gr.Row():
seed_inp = gr.Slider(minimum=0, maximum=10000, step=1, value=123456)
trim_in = gr.Slider(label="video max duration (seconds)", minimun=2, maximum=10, step=1, value=2)
video_out = gr.Video(label="Pix2pix video result")
submit_btn = gr.Button("Generate Pix2Pix video")
inputs = [prompt,video_inp,seed_inp, trim_in]
outputs = [video_out]
submit_btn.click(infer, inputs, outputs)
demo.launch().queue(max_size=12)
|