Spaces:
Paused
Paused
File size: 1,651 Bytes
485608a faa2bdb c8942d9 faa2bdb 7a80d3a faa2bdb 5296733 faa2bdb 40446f2 d47c1c5 40446f2 ec46e62 701ed9a b7d9c54 131761b ca0877d d0d220f f8f7bf0 9bd2eae 7e0e151 c9de927 c137773 06412df 1819951 5d93f13 1819951 785f173 1819951 c137773 785f173 c137773 faa2bdb 05649bb a413b20 485608a 1819951 7a80d3a 2024db3 7e0e151 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
import time
import os
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
# Define temp directory
temp_dir = tempfile.mkdtemp()
video_file = gr.inputs.File(label="Video File", type="file")
quality = gr.inputs.Dropdown(choices=["18", "23", "28", "32"], label="Quality", default="23")
aspect_ratio = gr.inputs.Dropdown(choices=[
"1:1",
"4:3",
"3:2",
"5:4",
"16:9",
"21:9",
"1.85:1",
"2.35:1",
"3:1",
"360",
"9:16",
"16:9",
"2:1",
"1:2",
"9:1",
], label="Aspect Ratio", default="16:9")
video_url = gr.inputs.Textbox(label="Video URL")
def convert_video(video_file: File, quality, aspect_ratio, video_url):
if video_file is None:
video_file = Path(video_url)
# Get the file extension
file_extension = video_file.name.split(".")[-1]
# Remove the file extension
output_path = video_file.name[:-len(file_extension)]
# Add the .m3u8 file extension
output_path += ".m3u8"
# Set the output path to the temp directory
output_path = f"{temp_dir}/{output_path}"
ffmpeg_command = f"ffmpeg -i {video_file} -c:v libx264 -crf {quality} -f hls -aspect {aspect_ratio} {output_path}"
try:
subprocess.run(ffmpeg_command, shell=True)
except FileNotFoundError:
print("ffmpeg is not installed.")
return None
time.sleep(2)
# Return the output file directly
return components.Video(output_path)
from gradio import outputs
gr.Interface(convert_video, inputs=[video_file, quality, aspect_ratio, video_url], outputs=[outputs.Video()]).launch(share=False)
|