import gradio as gr import ffmpeg import subprocess from gradio import components import tempfile video_file = gr.inputs.File(label="Video File") quality = gr.inputs.Dropdown(choices=["18", "23", "28", "32"], label="Quality") aspect_ratio = gr.inputs.Dropdown(choices=["16:9", "4:3", "3:2", "2:1"], label="Aspect Ratio") def convert_video(video_file, quality, aspect_ratio): output_path = f"{video_file.name}.m3u8" temp_dir = tempfile.gettempdir() ffmpeg_command = f"ffmpeg -i {video_file} -c:v libx264 -crf {quality} -f hls -aspect {aspect_ratio} {temp_dir}/{output_path}" subprocess.run(ffmpeg_command, shell=True) return components.Video(output_path) gr.Interface(convert_video, inputs=[video_file, quality, aspect_ratio], outputs=[components.Video()]).launch()