Spaces:
Paused
Paused
Update app.py
Browse files
app.py
CHANGED
|
@@ -59,7 +59,7 @@ def upload_to_web3_storage(api_key, path):
|
|
| 59 |
logging.exception("An error occurred while uploading to web3.storage.")
|
| 60 |
return f"An error occurred while uploading to web3.storage: {response.json()}"
|
| 61 |
|
| 62 |
-
def convert_video(video_file, quality, aspect_ratio, video_url, api_key, upload):
|
| 63 |
"""Converts a video to HLS format, adjusting the quality and aspect ratio as necessary."""
|
| 64 |
with tempfile.TemporaryDirectory() as temp_dir:
|
| 65 |
temp_dir = Path(temp_dir)
|
|
@@ -67,6 +67,10 @@ def convert_video(video_file, quality, aspect_ratio, video_url, api_key, upload)
|
|
| 67 |
output_path = get_output_path(input_path, temp_dir)
|
| 68 |
aspect_ratio = get_aspect_ratio(input_path, aspect_ratio)
|
| 69 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 70 |
ffmpeg_command = [
|
| 71 |
"ffmpeg", "-i", str(input_path), "-c:v", "libx264", "-crf", str(quality),
|
| 72 |
"-vf", f"scale=-1:720,setsar={aspect_ratio}", "-hls_time", "6",
|
|
@@ -104,24 +108,25 @@ def convert_video(video_file, quality, aspect_ratio, video_url, api_key, upload)
|
|
| 104 |
def main():
|
| 105 |
video_file = gr.inputs.File(label="Video File")
|
| 106 |
quality = gr.inputs.Dropdown(
|
| 107 |
-
choices=["18", "23", "28", "32"], label="Quality", default="
|
| 108 |
aspect_ratio = gr.inputs.Dropdown(
|
| 109 |
choices=[None, "1:1", "4:3", "3:2", "5:4", "16:9", "21:9",
|
| 110 |
"1.85:1", "2.35:1", "3:1", "360", "9:16", "16:9",
|
| 111 |
"2:1", "1:2", "9:1"],
|
| 112 |
label="Aspect Ratio", default=None)
|
|
|
|
|
|
|
| 113 |
video_url = gr.inputs.Textbox(label="Video URL")
|
| 114 |
api_key = gr.inputs.Textbox(label="web3.storage API Key")
|
| 115 |
upload = gr.inputs.Checkbox(label="Upload to web3.storage", default=False)
|
| 116 |
|
| 117 |
gr.Interface(
|
| 118 |
convert_video,
|
| 119 |
-
inputs=[video_file, quality, aspect_ratio, video_url, api_key, upload],
|
| 120 |
outputs=gr.outputs.File(label="Download File"),
|
| 121 |
-
|
|
|
|
| 122 |
).launch()
|
| 123 |
|
| 124 |
-
|
| 125 |
-
|
| 126 |
if __name__ == "__main__":
|
| 127 |
main()
|
|
|
|
| 59 |
logging.exception("An error occurred while uploading to web3.storage.")
|
| 60 |
return f"An error occurred while uploading to web3.storage: {response.json()}"
|
| 61 |
|
| 62 |
+
def convert_video(video_file, quality, aspect_ratio, resolution, video_url, api_key, upload):
|
| 63 |
"""Converts a video to HLS format, adjusting the quality and aspect ratio as necessary."""
|
| 64 |
with tempfile.TemporaryDirectory() as temp_dir:
|
| 65 |
temp_dir = Path(temp_dir)
|
|
|
|
| 67 |
output_path = get_output_path(input_path, temp_dir)
|
| 68 |
aspect_ratio = get_aspect_ratio(input_path, aspect_ratio)
|
| 69 |
|
| 70 |
+
# Set default values if quality or aspect_ratio are None
|
| 71 |
+
quality = "27" if quality is None else quality
|
| 72 |
+
aspect_ratio = "1:1" if aspect_ratio is None else aspect_ratio
|
| 73 |
+
|
| 74 |
ffmpeg_command = [
|
| 75 |
"ffmpeg", "-i", str(input_path), "-c:v", "libx264", "-crf", str(quality),
|
| 76 |
"-vf", f"scale=-1:720,setsar={aspect_ratio}", "-hls_time", "6",
|
|
|
|
| 108 |
def main():
|
| 109 |
video_file = gr.inputs.File(label="Video File")
|
| 110 |
quality = gr.inputs.Dropdown(
|
| 111 |
+
choices=["18", "23", "27", "28", "32"], label="Quality", default="27")
|
| 112 |
aspect_ratio = gr.inputs.Dropdown(
|
| 113 |
choices=[None, "1:1", "4:3", "3:2", "5:4", "16:9", "21:9",
|
| 114 |
"1.85:1", "2.35:1", "3:1", "360", "9:16", "16:9",
|
| 115 |
"2:1", "1:2", "9:1"],
|
| 116 |
label="Aspect Ratio", default=None)
|
| 117 |
+
resolution = gr.inputs.Dropdown(
|
| 118 |
+
choices=["Max", "Min"], label="Resolution", default="Max")
|
| 119 |
video_url = gr.inputs.Textbox(label="Video URL")
|
| 120 |
api_key = gr.inputs.Textbox(label="web3.storage API Key")
|
| 121 |
upload = gr.inputs.Checkbox(label="Upload to web3.storage", default=False)
|
| 122 |
|
| 123 |
gr.Interface(
|
| 124 |
convert_video,
|
| 125 |
+
inputs=[video_file, quality, aspect_ratio, resolution, video_url, api_key, upload],
|
| 126 |
outputs=gr.outputs.File(label="Download File"),
|
| 127 |
+
allow_flagging=False,
|
| 128 |
+
live=False,
|
| 129 |
).launch()
|
| 130 |
|
|
|
|
|
|
|
| 131 |
if __name__ == "__main__":
|
| 132 |
main()
|