[gelöst] Diashow mit ffmpeg erstellen

Sound, Digitalkameras, TV+Video und Spiele.
Benutzeravatar
ralli
Beiträge: 3919
Registriert: 02.03.2008 08:03:02

Re: Diashow mit ffmpeg erstellen

Beitrag von ralli » 30.07.2020 09:41:45

Ich danke nochmals Allen für die tolle Unterstützung. Habe mich nun für die concat Variante, die ja MaGe empfohlen hat, entschieden und sie mit wannes Vorschlag kombiniert. Die Video Erstellung erfolgt nun im FULL HD Format.

Als erstes erstelle ich ein Shell Script filelist.sh mit folgendem Inhalt:

Code: Alles auswählen

#!/bin/bash

printf "file '%s'\n" *.png > list.txt
und mache es ausführbar mit:

Code: Alles auswählen

chmod +x filelist.sh
Nun erfolgt die Erstellung mit ffmpeg:

Code: Alles auswählen

ffmpeg -r 0.2 -f concat -i list.txt  -c:v libx264 -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2" -pix_fmt yuv420p -r 25 -profile:v high -level 3.1  -b:v 1500k concatfullhd.mp4
Getestet und funktioniert einwandfrei. Allerdings meckert er beim Start auf dem TV:

Code: Alles auswählen

Audioformat wird nicht unterstützt
Gruß ralli
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.

Benutzeravatar
ralli
Beiträge: 3919
Registriert: 02.03.2008 08:03:02

Re: Diashow mit ffmpeg erstellen

Beitrag von ralli » 30.07.2020 09:46:57

whisper hat geschrieben: ↑ zum Beitrag ↑
30.07.2020 09:40:43
Hinweis:
Ich nehme zum Erstellen von Diashows Debianphotofilmstrip
Das ist in der aktuell vorhandenen Version in Buster sehr gut benutzbar
Geht dem TE aber an seinem Bedarf vorbei?
Nein, das tut es nicht, auch Imagination funktioniert gut. Nur bei der Verwendung einer GUI Variante (die letztendlich auch nur ein Wrapper für ffmpeg ist), lerne ich nichts über Videoformat, Auflösung ect. Und als Konsolenprogramm ist ffmpeg für (fast) jedes Linux verfügbar, die GUI Alternativen aber nicht immer.

Gruß ralli
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.

MaGe
Beiträge: 1717
Registriert: 01.06.2014 17:12:16

Re: Diashow mit ffmpeg erstellen

Beitrag von MaGe » 30.07.2020 10:05:55

ralli hat geschrieben: Getestet und funktioniert einwandfrei. Allerdings meckert er beim Start auf dem TV:

Code: Alles auswählen

Audioformat wird nicht unterstützt 
der meckert weil da keine ist, du hast noch keine. :wink:
deine Slideshow ist ein Video .mp4 ohne Ton



gruss MaGe
Wir müssen uns vor der Klimaerwärmung nicht fürchten.
Uns rottet die soziale Kälte viel früher aus.

Benutzeravatar
ralli
Beiträge: 3919
Registriert: 02.03.2008 08:03:02

Re: Diashow mit ffmpeg erstellen

Beitrag von ralli » 30.07.2020 10:11:08

MaGe hat geschrieben: ↑ zum Beitrag ↑
30.07.2020 10:05:55
ralli hat geschrieben: Getestet und funktioniert einwandfrei. Allerdings meckert er beim Start auf dem TV:

Code: Alles auswählen

Audioformat wird nicht unterstützt 
der meckert weil da keine ist, du hast noch keine. :wink:
deine Slideshow ist ein Video .mp4 ohne Ton



gruss MaGe
Aha, ich verstehe, ich hab gerade versucht, die Tonspur zu entfernen mit:

Code: Alles auswählen

ffmpeg -i concatfullhd.mp4 -an ohneton.mp4
Hat aber nicht funktioniert, jetzt weiß ich auch, warum. Wo keine Tonspur ist, kann auch keine entfernt werden. :facepalm: Jetzt werde ich mich mal damit beschäftigen. wie ich einen mp3 Sound als Backgroundmusik und Untermalung hinzufüge. dafür muß ich aber erst mal recherchieren und dann probieren, ob es auch problemlos geht.

Gruß ralli
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: Diashow mit ffmpeg erstellen

Beitrag von Lord_Carlos » 30.07.2020 10:14:32

ralli hat geschrieben: ↑ zum Beitrag ↑
30.07.2020 10:11:08
wie ich einen mp3 Sound als Backgroundmusik und Untermalung hinzufüge. dafür muß ich aber erst mal recherchieren und dann probieren, ob es auch problemlos geht.
Steht auch alles in dem Wiki.
https://trac.ffmpeg.org/wiki/Slideshow#Addingaudio

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

Benutzeravatar
ralli
Beiträge: 3919
Registriert: 02.03.2008 08:03:02

Re: Diashow mit ffmpeg erstellen

Beitrag von ralli » 30.07.2020 10:34:42

Lord_Carlos hat geschrieben: ↑ zum Beitrag ↑
30.07.2020 10:14:32
ralli hat geschrieben: ↑ zum Beitrag ↑
30.07.2020 10:11:08
wie ich einen mp3 Sound als Backgroundmusik und Untermalung hinzufüge. dafür muß ich aber erst mal recherchieren und dann probieren, ob es auch problemlos geht.
Steht auch alles in dem Wiki.
https://trac.ffmpeg.org/wiki/Slideshow#Addingaudio
Danke, werde ich ausprobieren.

Gruß ralli
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.

wanne
Moderator
Beiträge: 7463
Registriert: 24.05.2010 12:39:42

Re: Diashow mit ffmpeg erstellen

Beitrag von wanne » 30.07.2020 13:51:51

Code: Alles auswählen

Audioformat wird nicht unterstützt
Das ist sehr komisch, denn Imagination erstellt auch ohne Ton. Sicher dass die Slideschows von Imagination auf dem Fernseher laufen?
Aber hier ein mal mit Stille hinterlegt:

Code: Alles auswählen

ffmpeg -r "1/3" -i image%02d.png -f lavfi -i anullsrc -c:v libx264 -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2" -pix_fmt yuv420p -r 25 -profile:v high -level 3.1  -b:v 1500k out.mp4
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
ralli
Beiträge: 3919
Registriert: 02.03.2008 08:03:02

Re: Diashow mit ffmpeg erstellen

Beitrag von ralli » 30.07.2020 15:54:30

Ja, ganz sicher, es kommt lediglich beim ersten Bild eine Meldung "Audioformat wird nicht unterstützt". Probiere gerade Deinen Vorschlag, aber es ist mir zu anstrengend, alle Bilder zu numerieren, bestimmt geht das auch mit einem Script oder ImageMagick.

Gruß ralli
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.

wanne
Moderator
Beiträge: 7463
Registriert: 24.05.2010 12:39:42

Re: Diashow mit ffmpeg erstellen

Beitrag von wanne » 30.07.2020 16:09:52

bestimmt geht das auch mit einem Script oder ImageMagick.

Code: Alles auswählen

#!/bin/bash
i=0
for bild in *.png
  do i=$((i+1))
  mv "$bild" $(printf "image%02d.png" $i)  
done
ffmpeg -r "1/3" -i image%02d.png -t $(($i*3)) -f lavfi -i anullsrc -c:v libx264 -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2" -pix_fmt yuv420p -r 25 -profile:v high -level 3.1  -b:v 1500k out.mp4
Achtung das benennt die Bilder wirklich um! Eventuell willst du cp statt mv machen.
Oder halt mit der Variante mit dem concat filter
rot: Moderator wanne spricht, default: User wanne spricht.

MaGe
Beiträge: 1717
Registriert: 01.06.2014 17:12:16

Re: Diashow mit ffmpeg erstellen

Beitrag von MaGe » 30.07.2020 16:13:33

ralli hat geschrieben: aber es ist mir zu anstrengend, alle Bilder zu numerieren
TESTEN:

Code: Alles auswählen

 x=0; for i in *png; do counter=$(printf %03d $x); ln "$i" "image$counter".png; x=$(($x+1)); done 


gruss MaGe
Wir müssen uns vor der Klimaerwärmung nicht fürchten.
Uns rottet die soziale Kälte viel früher aus.

Benutzeravatar
ralli
Beiträge: 3919
Registriert: 02.03.2008 08:03:02

Re: Diashow mit ffmpeg erstellen

Beitrag von ralli » 30.07.2020 16:42:34

MaGe hat geschrieben: ↑ zum Beitrag ↑
30.07.2020 16:13:33
ralli hat geschrieben: aber es ist mir zu anstrengend, alle Bilder zu numerieren
TESTEN:

Code: Alles auswählen

 x=0; for i in *png; do counter=$(printf %03d $x); ln "$i" "image$counter".png; x=$(($x+1)); done 


gruss MaGe
Funktioniert gut, danke.

Gruß ralli
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.

Benutzeravatar
ralli
Beiträge: 3919
Registriert: 02.03.2008 08:03:02

Re: Diashow mit ffmpeg erstellen

Beitrag von ralli » 30.07.2020 17:07:28

Ich habe hier eine Sammlung von 130 Cover Comics aus den 50 iger Jahren, die aber unterschiedliche Größen als jpeg Bilder haben (Großband Cover und Piccolo Cover). Durchnumerierung geht, es wird auch ein Video erzeugt, allerding mit mehrern Fehlermeldungen:

Code: Alles auswählen

deprecated pixel format used, make sure you did set range correctly
Und bei wannes ffmpeg Script mit Tonunterlegung läuft er in einer Endloschleife .....

So für heute reicht es mir.

Gruß ralli
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.

MaGe
Beiträge: 1717
Registriert: 01.06.2014 17:12:16

Re: Diashow mit ffmpeg erstellen

Beitrag von MaGe » 30.07.2020 17:24:18

ralli hat geschrieben: Und bei wannes ffmpeg Script mit Tonunterlegung läuft er in einer Endloschleife
da fehlt noch die Zeitangabe für die Stille

Bei mir 6 Bilder Laufzeit des Videos: 00:00:29.84

Code: Alles auswählen

 frame=  749 fps= 97 q=-1.0 Lsize=    4368kB time=00:00:29.84 bitrate=1199 
-t 00:00:29.84

TESTEN: @ Wannes Einzeiler, mit der eingefügten laufzeit, muss du anpassen.

Code: Alles auswählen

 ffmpeg -r "1/3" -i image%02d.png -f lavfi -i anullsrc -c:v libx264 -t 00:00:29.84 -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2" -pix_fmt yuv420p -r 25 -profile:v high -level 3.1  -b:v 1500k out.mp4 


gruss MaGe
Wir müssen uns vor der Klimaerwärmung nicht fürchten.
Uns rottet die soziale Kälte viel früher aus.

wanne
Moderator
Beiträge: 7463
Registriert: 24.05.2010 12:39:42

Re: Diashow mit ffmpeg erstellen

Beitrag von wanne » 30.07.2020 18:16:28

Mein Script wurde angepasst und sollte jetzt passen.

Code: Alles auswählen

#!/bin/bash
i=0
for bild in *.png
  do i=$((i+1))
  mv "$bild" $(printf "image%02d.png" $i)  
done
ffmpeg -r "1/3" -i image%02d.png -t $(($i*3)) -f lavfi -i anullsrc -c:v libx264 -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2" -pix_fmt yuv420p -r 25 -profile:v high -level 3.1  -b:v 1500k out.mp4
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
ralli
Beiträge: 3919
Registriert: 02.03.2008 08:03:02

Re: Diashow mit ffmpeg erstellen

Beitrag von ralli » 30.07.2020 19:24:51

Danke Euch, werde es morgen testen und mich wieder melden.

Schönen Abend ralli
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.

Benutzeravatar
ralli
Beiträge: 3919
Registriert: 02.03.2008 08:03:02

Re: Diashow mit ffmpeg erstellen

Beitrag von ralli » 31.07.2020 07:20:19

Nach der Anpassung läuft es perfekt in HD sowie auch FULL HD. Leider werden wohl nicht alle Bilder erfaßt, was wohl irgendwie am Ausgangsmaterial liegt und nicht an ffmpeg.

Habe dazu noch zwei Fragen.

Welches Bildformat sollte bevorzugt werden? Png oder jpg bzw. jpeg? Oder ist das für das gerenderte Video egal?

Stellt die unterschiedliche Größe der Bilder als Ausgangsmaterial ein Problem dar? Was passiert, wenn 1 Bild das die Größe des Videoausgangsformat übersteigt?

Danke!

Gruß ralli
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.

wanne
Moderator
Beiträge: 7463
Registriert: 24.05.2010 12:39:42

Re: Diashow mit ffmpeg erstellen

Beitrag von wanne » 31.07.2020 11:28:35

ralli hat geschrieben: ↑ zum Beitrag ↑
31.07.2020 07:20:19
Leider werden wohl nicht alle Bilder erfaßt, was wohl irgendwie am Ausgangsmaterial liegt und nicht an ffmpeg.
Ich würde eher auf den Dateinahmen tippen...
Png oder jpg bzw. jpeg? Oder ist das für das gerenderte Video egal?
Am Ende ist es egal. Im Zweifelsfall wird bei jedem konvertieren zu jpeg die Qualität schlechter. In sofern ist es schädlich pngs in jpegs umzuwandeln aber nicht immer in die andere Richtung. Optimal nimmt man immer was kommt ohne zu konvertieren.
Daneben habe ich in meinem Script dasda stehen:

Code: Alles auswählen

for bild in *.png
Das frisst natürlich nur png willst du auch jpeg, JPG und jpgs haben brauchst du da stattdessen:

Code: Alles auswählen

for bild in *.png *.jpg *.jpeg *.JPG
Stellt die unterschiedliche Größe der Bilder als Ausgangsmaterial ein Problem dar? Was passiert, wenn 1 Bild das die Größe des Videoausgangsformat übersteigt?
Nein. ffmpeg konvertiert sowieso in ein neues Format (AVC) mit passender Größe. In dem Fall versucht er 7,3kiB pro Bild. zu erreichen. Da kommst du weder mit jpeg noch mit png hin ;-). Er trickst aber eben ach ein bisschen weil er jedes Bild 75 mal einfügt und Ähnlichkeiten (also in dem Fall sogar Gleichheit) ausnutzt. In dem Fall versucht er also eher 550kiB pro sich änderndem Bild so riesig kann er das aber gar nicht. Real sind es deswegen deutlich weniger.
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
ralli
Beiträge: 3919
Registriert: 02.03.2008 08:03:02

Re: Diashow mit ffmpeg erstellen

Beitrag von ralli » 31.07.2020 13:54:30

Danke wanne, sehr hilfreich und informativ.

Gruß ralli
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.

wanne
Moderator
Beiträge: 7463
Registriert: 24.05.2010 12:39:42

Re: Diashow mit ffmpeg erstellen

Beitrag von wanne » 31.07.2020 15:01:17

Gerade festgestellt: ffmpeg ist sauer wenn abwechselnd pngs und jpegs kommen.

Also doch eher alles zuerst nach png konvertieren:

Code: Alles auswählen

#!/bin/bash
i=0
for bild in *.png *.jpg *.JPG *.jpeg
  do i=$((i+1))
  ffmpeg -y -i "$bild" $(printf "image%02d.png" $i)  
done
ffmpeg -r "1/3" -i image%02d.png -t $(($i*3)) -f lavfi -i anullsrc -c:v libx264 -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2" -pix_fmt yuv420p -r 25 -profile:v high -level 3.1  -b:v 1500k out.mp4
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
ralli
Beiträge: 3919
Registriert: 02.03.2008 08:03:02

Re: Diashow mit ffmpeg erstellen

Beitrag von ralli » 31.07.2020 15:36:10

Hab jetzt gerade eine Verständnisschwierigkeit. Werden hier alle jpg ... ins echte png Format umgewandelt? Das kann doch sonst nur convert von ImageMagick, oder irre ich mich?

Gruß ralli
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.

Benutzeravatar
ralli
Beiträge: 3919
Registriert: 02.03.2008 08:03:02

Re: Diashow mit ffmpeg erstellen

Beitrag von ralli » 31.07.2020 15:50:31

Ich mach das immer so:

Code: Alles auswählen

for i in *.jpeg; do convert $i $(basename $i .jpeg).png; done
Hier kommt convert von ImageMagick zum Einsatz und konvertiert alle jpeg Dateien zu png Dateien. Sie werden nicht nur umbenannt, sonder ins neue Format konvertiert.

Gruß ralli
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: Diashow mit ffmpeg erstellen

Beitrag von Lord_Carlos » 31.07.2020 16:16:25

ralli hat geschrieben: ↑ zum Beitrag ↑
31.07.2020 15:36:10
Das kann doch sonst nur convert von ImageMagick, oder irre ich mich?
Du irrst dich. Warum sollte nur ImageMagick das koennen?

Die erste for schleife in Wannes script konvertiert mit Hilfe von ffmpeg, gepeichert wird es gleich mit passenden Namen.

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

Benutzeravatar
ralli
Beiträge: 3919
Registriert: 02.03.2008 08:03:02

Re: Diashow mit ffmpeg erstellen

Beitrag von ralli » 31.07.2020 16:27:59

Aha, gut zu wissen, lerne auf diesem Gebiet täglich hinzu. Hatte vorher nicht viel mit ffmpeg gemacht. Das ist ja wie ein Schweitzer Messer, unglaublich und unfasssbar, was das alles kann. Auf jeden Fall lohnt es sich, sich damit zu beschäftigen.

Gruß ralli
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.

MaGe
Beiträge: 1717
Registriert: 01.06.2014 17:12:16

Re: Diashow mit ffmpeg erstellen

Beitrag von MaGe » 31.07.2020 19:22:36

Lord_Carlos hat geschrieben: Die erste for schleife in Wannes script konvertiert mit Hilfe von ffmpeg [...]
Frage ist das normal das die Dateien .JPG so aufgepumpt werden

CIMG0387.JPG - Größe - 1,4 MiB (1.502.043)
image01.png - Größe - 9,4 MiB (9.827.176)



gruss MaGe
Wir müssen uns vor der Klimaerwärmung nicht fürchten.
Uns rottet die soziale Kälte viel früher aus.

Benutzeravatar
MSfree
Beiträge: 10773
Registriert: 25.09.2007 19:59:30

Re: Diashow mit ffmpeg erstellen

Beitrag von MSfree » 31.07.2020 19:36:14

MaGe hat geschrieben: ↑ zum Beitrag ↑
31.07.2020 19:22:36
Frage ist das normal das die Dateien .JPG so aufgepumpt werden

CIMG0387.JPG - Größe - 1,4 MiB (1.502.043)
image01.png - Größe - 9,4 MiB (9.827.176)
Ja. PNG verwendet "nur" eine verlustfreie Kompression, die der ähnelt, die auch ZIP verwendet. Die JPEG-Kompression ist deutlich effizienter aber nicht verlustfrei.

Antworten