Spaces:
Runtime error
Runtime error
import gradio as gr | |
from moviepy.editor import * | |
from PIL import ImageFont, ImageDraw, Image | |
def edit_video(video_file, name, author, font, filter): | |
# Load the video | |
clip = VideoFileClip(video_file) | |
# Apply the chosen filter | |
clip = eval(f"clip.{filter}()") | |
# Load the font based on user input | |
font_path = f"{font}.ttf" | |
font_size = clip.size[0] // 10 | |
font = ImageFont.truetype(font_path, font_size) | |
# Create an image with the author text | |
author_text = f"Author: {author}" | |
author_image = Image.new('RGB', (clip.w//2, clip.h//8), (0, 0, 0)) | |
author_draw = ImageDraw.Draw(author_image) | |
author_draw.text((10, 10), author_text, font=font, fill=(255, 255, 255)) | |
# Create an image with the bigger text | |
bigger_text = f"Author: {author}" | |
bigger_image = Image.new('RGB', (clip.w//2, clip.h//4), (0, 0, 0)) | |
bigger_draw = ImageDraw.Draw(bigger_image) | |
bigger_draw.text((10, 10), bigger_text, font=font, fill=(255, 255, 255)) | |
# Create a composite video with the texts | |
text_clip1 = ImageClip(author_image).set_duration(4).set_position(("right", "bottom")) | |
text_clip2 = ImageClip(bigger_image).set_duration(4).set_position(("right", "bottom")) | |
composite_clip = CompositeVideoClip([clip, text_clip1, text_clip2]) | |
# Save the edited video | |
output_file = f"{name}_edited.mp4" | |
composite_clip.write_videofile(output_file, codec='libx264') | |
return output_file | |
def video_editor(name, author, font, filter, video_file): | |
edited_video = edit_video(video_file, name, author, font, filter) | |
return edited_video | |
# Define the inputs and outputs for Gradio app | |
inputs = [ | |
gr.inputs.Textbox(label="Video Name"), | |
gr.inputs.Textbox(label="Author Name"), | |
gr.inputs.Radio(["Arial", "Barbie", "MrBeast", "OptiAgle"], label="Font"), | |
gr.inputs.Radio(["blur", "rotate", "resize", "mirror"], label="Filter"), | |
gr.inputs.File(label="Video File") | |
] | |
outputs = gr.outputs.File(label="Edited Video") | |
# Create a Gradio app interface | |
grapp = gr.Interface(fn=video_editor, inputs=inputs, outputs=outputs, capture_session=True) | |
# Run the Gradio app | |
grapp.launch() | |