Spaces:
Sleeping
Sleeping
import gradio as gr | |
import ffmpeg | |
from math import ceil | |
def split_video(input_video, duration): | |
video_info = ffmpeg.probe(input_video) | |
video_duration = float(video_info['format']['duration']) | |
num_segments = ceil(video_duration / duration) | |
segments = [] | |
for i in range(num_segments): | |
start_time = i * duration | |
end_time = min((i + 1) * duration, video_duration) | |
output_video = f"segment_{i+1}.mp4" | |
stream = ffmpeg.input(input_video) | |
stream = ffmpeg.trim(stream, start=start_time, end=end_time) | |
stream = ffmpeg.output(stream, output_video) | |
ffmpeg.run(stream, overwrite_output=True) | |
segments.append(output_video) | |
return segments | |
interface = gr.Interface( | |
split_video, | |
inputs=[ | |
gr.File(label="Upload Video"), | |
gr.Number(label="Segment Duration (seconds)"), | |
], | |
outputs=gr.Files(label="Video Segments"), | |
title="Video Splitter", | |
description="Split a video into equal-duration segments.", | |
) | |
interface.launch() | |