Füge zwei Videos mit Transparenz in ffmpeg zusammen

6412
tiimowad

Ich habe zwei Videos mit dem folgenden Befehl in eine Datei zusammengeführt. Leider deckt das zweite Video das erste Video ab und ist nicht sichtbar. Wie macht man ein zweites Video transparent (z. B. 50%)?

ffmpeg -i in1.mp4 -i in2.mp4 -filter_complex "nullsrc=size=480x360 [base]; [0:v] setpts=PTS-STARTPTS, scale=480x360 [top]; [1:v] setpts=PTS-STARTPTS, scale=480x360 [bottom]; [base][top] overlay=shortest=1 [temp]; [temp][bottom] overlay=shortest=1" -acodec libvo_aacenc -vcodec libx264 out.pm4 
6
Unabhängig von Ihrer Frage, aber `libvo_aacenc` ist ein beschissener AAC-Encoder. Verwenden Sie stattdessen "-c: a aac". Wenn "ffmpeg" einen Fehler enthält, der darauf hinweist, dass "aac" experimentell ist, aktualisieren Sie Ihr "ffmpeg", da "aac" nicht mehr experimentell ist. LordNeckbeard vor 8 Jahren 0
Enthalten beide Eingänge Audio? Wenn ja, wie wollen Sie mit dem Audio umgehen? Mit Ihrem Befehl wählt "ffmpeg" das Audio von einem Eingang. Sie sollten immer die vollständige Konsolenausgabe Ihres Befehls einschließen, wenn Sie nach `ffmpeg`-Hilfe fragen. LordNeckbeard vor 8 Jahren 0

1 Antwort auf die Frage

6
Gyan

Benutzen

ffmpeg \ -i in1.mp4 -i in2.mp4 \ -filter_complex " \ [0:v]setpts=PTS-STARTPTS, scale=480x360[top]; \ [1:v]setpts=PTS-STARTPTS, scale=480x360, \ format=yuva420p,colorchannelmixer=aa=0.5[bottom]; \ [top][bottom]overlay=shortest=1" \ -acodec libvo_aacenc -vcodec libx264 out.mp4 

Stellen Sie aaden erforderlichen Deckkraftwert ein.

Das funktioniert fast für mich, außer das Hauptvideo (in1.mp4) hört auf, Video anzuzeigen, nachdem in2.mp4 beendet ist. Das Audio von in1.mp4 wird jedoch für die Dauer des Videos fortgesetzt, nur das Video wird "angehalten". Titan vor 7 Jahren 0
Kannst du auch das "top" und "bottom" erklären, mein Overlay sitzt linksbündig und ich möchte, dass es zentriert wird, selbst wenn ich die Anzahl der Pixel angeben muss, über die es verschoben werden muss Titan vor 7 Jahren 0
@ Mulvya das funktioniert gut, eine Möglichkeit, das kürzeste Video zu wiederholen? Janis S. vor 6 Jahren 0
Wenn Sie wissen, welche Eingabe am kürzesten ist, sollte die Filterkette `scale = 480x360, loop = -1: 99999: 0, setpts = PTS-STARTPTS` sein. Dabei ist 99999 eine Zahl, die größer oder gleich seiner Bildanzahl ist. Gyan vor 6 Jahren 0