import os import gradio as gr import ffmpeg def create_video_from_images(images_folder, frame_rate): # Get list of images images = [img for img in os.listdir(images_folder) if img.endswith(".jpg") or img.endswith(".jpeg") or img.endswith(".png")] images.sort() # Ensure images are in order if not images: return "No images found in the folder." # Create a temporary text file listing all images with open("input_images.txt", "w") as file: for img in images: file.write(f"file '{os.path.join(images_folder, img)}'\n") output_video = os.path.join(images_folder, "output_video.mp4") # Use ffmpeg to create the video ( ffmpeg .input("input_images.txt", format='concat', safe=0) .output(output_video, r=frame_rate, pix_fmt='yuv420p') .run(overwrite_output=True) ) # Remove temporary file os.remove("input_images.txt") return output_video def gradio_interface(img_folder, frame_rate): return create_video_from_images(img_folder, frame_rate) iface = gr.Interface( fn=gradio_interface, inputs=[ gr.inputs.Folder(type="dir", label="Upload Folder with Images"), gr.inputs.Slider(minimum=1, maximum=60, default=30, label="Frame Rate (FPS)") ], outputs="file", # Return the path to the created video live=True ) iface.launch()