Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -8,6 +8,7 @@ import base64
|
|
| 8 |
import math
|
| 9 |
import shutil
|
| 10 |
import io # Für NamedString-Handling
|
|
|
|
| 11 |
|
| 12 |
# Erlaubte Dateiformate
|
| 13 |
allowed_medias = [".png", ".jpg", ".jpeg", ".bmp", ".gif", ".tiff"]
|
|
@@ -191,4 +192,16 @@ with gr.Blocks() as demo:
|
|
| 191 |
)
|
| 192 |
duration_input = gr.Number(value=3, label="Dauer pro Bild in Sekunden", precision=1)
|
| 193 |
fade_input = gr.Number(value=0.7, label="Fade Dauer in Sekunden", precision=1)
|
| 194 |
-
ypos_input = gr.Slider(minimum=0.0, maximum=0.9, step=0.01, value=0.5, label="Y-Position für alle Texte (0=oben, 0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
import math
|
| 9 |
import shutil
|
| 10 |
import io # Für NamedString-Handling
|
| 11 |
+
import shlex # Für sicheres Escapen von Text
|
| 12 |
|
| 13 |
# Erlaubte Dateiformate
|
| 14 |
allowed_medias = [".png", ".jpg", ".jpeg", ".bmp", ".gif", ".tiff"]
|
|
|
|
| 192 |
)
|
| 193 |
duration_input = gr.Number(value=3, label="Dauer pro Bild in Sekunden", precision=1)
|
| 194 |
fade_input = gr.Number(value=0.7, label="Fade Dauer in Sekunden", precision=1)
|
| 195 |
+
ypos_input = gr.Slider(minimum=0.0, maximum=0.9, step=0.01, value=0.5, label="Y-Position für alle Texte (0=oben, 0.5=mitte, 0.9=unten)")
|
| 196 |
+
font_size_input = gr.Number(value=60, label="Textgröße (px)")
|
| 197 |
+
out_video = gr.Video(interactive=False, label="Generiertes Video")
|
| 198 |
+
status = gr.Textbox(interactive=False, label="Status")
|
| 199 |
+
|
| 200 |
+
btn = gr.Button("Video erstellen")
|
| 201 |
+
btn.click(
|
| 202 |
+
fn=generate_slideshow_with_audio,
|
| 203 |
+
inputs=[img_input, audio_input, duration_input, ypos_input, fade_input, font_size_input],
|
| 204 |
+
outputs=[out_video, status]
|
| 205 |
+
)
|
| 206 |
+
|
| 207 |
+
demo.launch()
|