FFMPEG: Berechnung der Bildauffüllung bei Videos mit unterschiedlicher Videoquellenauflösung

FFMPEG: Berechnung der Bildauffüllung bei Videos mit unterschiedlicher Videoquellenauflösung

Ich habe einige Videos mit unterschiedlicher Auflösung (1920 x 1080, 1280 x 720, 1280, 544, 640 x 480 usw.).

Was ich brauche:

  1. Video von 2 auf 15 Sek. schneiden (+)
  2. Ändern Sie die Auflösung so, dass die Breite gleich der Quellvideohöhe und die Höhe gleich (Quellvideohöhe*1,777777777777778) (+) ist.
  3. Fügen Sie dem Video einen anderen Text hinzu (+)
  4. Ändern Sie die schwarze Polsterung im Bild oder erstellen Sie ein Bild (Quellbild ist 1800 x 1200) als Hintergrund für dieses Video (im Moment überlagert das Bild das Video, es ist nicht korrekt) (-)
  5. Erstellen Sie Breiten- und Höhenpolster mit Ausklinkung wie in Punkt 2. Ich habe es versucht, verstehe aber nicht, warum ich dort nicht ih und iw verwenden kann (-)
ffmpeg -loop 1 -i bg.jpeg -i video.mp4 -ss 00:00:02.000 -to 00:00:14.999 -vf "[in]scale=ih:(ih*1.777777777777778):force_original_aspect_ratio=decrease,pad=width=720:height=1280:x=(720-iw)/2:y=(1280-ih)/2:color=black,drawtext=fontfile=./DejaVuSerif.ttf:fontsize=30:fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/5:text='Text_1':enable='between(t,5,8)',drawtext=fontfile=./DejaVuSerif.ttf:fontsize=30:fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/5:text='Text_2':enable='between(t,8,10)',drawtext=fontfile=./DejaVuSerif.ttf:fontsize=30:fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/5:text='Text_3':enable='between(t,10,12)'[out]" -c:a copy output_0_$RANDOM.mp4

Antwort1

Das brauchen Sie nicht pad. Machen Sie im ersten Schritt etwas mit dem Hintergrund und legen Sie dann das Video darüber.

#!/bin/bash
ffmpeg -loop 1 -i in1.png \
-i "input 1.mp4" \
-ss 00:00:02.000 -to 00:00:14.999 -filter_complex "
[1:v]scale=ih:-2[1v];
[0:v][1v]overlay=(W-w)/2:(H-h)/2:shortest=1,
drawtext=fontfile=./DejaVuSerif.ttf:fontsize=30:fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/5:text='Text_1':enable='between(t,5,8)',
drawtext=fontfile=./DejaVuSerif.ttf:fontsize=30:fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/5:text='Text_2':enable='between(t,8,10)',
drawtext=fontfile=./DejaVuSerif.ttf:fontsize=30:fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/5:text='Text_3':enable='between(t,10,12)'
[v]
" -map [v] -map 1:a -c:v h264_nvenc -cq 20 -c:a copy /tmp/output.mp4 -hide_banner -y
mpv /tmp/output.mp4

verwandte Informationen