Jeffgold's picture
Update app.py
131761b
raw
history blame
993 Bytes
import gradio as gr
import ffmpeg
import subprocess
from gradio import components
import tempfile
from pathlib import Path
from gradio import inputs
# Define File object
File = Path
video_file = gr.inputs.File(label="Video File")
quality = gr.inputs.Dropdown(choices=["18", "23", "28", "32"], label="Quality", default="23")
aspect_ratio = gr.inputs.Slider(min=1, max=16, step=1, label="Aspect Ratio", default=16)
def convert_video(video_file: File, quality, aspect_ratio):
if video_file is None:
output_path = gr.inputs.Textbox(label="Video URL")
else:
output_path = f"{temp_dir}/{Path(video_file).stem}.m3u8"
ffmpeg_command = f"ffmpeg -i {video_file or output_path} -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)
from gradio import outputs
gr.Interface(convert_video, inputs=[video_file, quality, aspect_ratio], outputs=[outputs.Video()]).launch()