| import os |
| import gradio as gr |
| import ffmpeg |
|
|
| def create_video_from_images(images_folder, frame_rate): |
| |
| images = [img for img in os.listdir(images_folder) if img.endswith(".jpg") or img.endswith(".jpeg") or img.endswith(".png")] |
| images.sort() |
|
|
| if not images: |
| return "No images found in the folder." |
|
|
| |
| 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") |
|
|
| |
| ( |
| ffmpeg |
| .input("input_images.txt", format='concat', safe=0) |
| .output(output_video, r=frame_rate, pix_fmt='yuv420p') |
| .run(overwrite_output=True) |
| ) |
|
|
| |
| 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", |
| live=True |
| ) |
|
|
| iface.launch() |