[gelöst] Diashow mit ffmpeg erstellen

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

[gelöst] Diashow mit ffmpeg erstellen

Beitrag von ralli » 27.07.2020 15:58:17

Hallo,

ich beschäftige mich momentan ein wenig mit ffmpeg. Erstes Ziel ist es, eine kleine Diashow mit png oder jpg Bildern zu erstellen. Ausgabeformat soll mp4 sein. Habe recherchiert und mir einiges durchgelesen, komme aber bei einem kleinen Problem nicht wirklich weiter.

In einem Ordner habe ich zur Probe 5 png Bilder gespeichert, ffmpeg soll daraus ein mp4 Video machen. Dazu gebe ich folgenden Code ein.

Code: Alles auswählen

ffmpeg -f image2 -i image%d.png video.mp4
Das funktioniert sogar, allerdings werden die Bilder in einem rasendem Tempo nacheinander angezeigt. Welchen Befehl muß ich benutzen, um zwischen den einzelnen Bilder eine Pause sagen wir von 3 Sekunden einzufügen. In der Manpage finde ich nichts, oder habe es übersehen. Für jeden Tipp wäre ich dankbar.

Gruß ralli
Zuletzt geändert von ralli am 03.08.2020 16:58:43, insgesamt 1-mal geändert.
System: Debian Buster - Cinnamon Desktop - CPU: Intel Core i7-870 - RAM: 16 GB - GPU: AMD (2 GB) - SSD 128 GB - HD: 1 TB

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

Re: Diashow mit ffmpeg erstellen

Beitrag von wanne » 27.07.2020 17:07:13

Ich glaube da sind sogar Beispiele in der man-Page.
Die Passende option heißt -r und nimmt Hz. Default sind 25Hz also 25 Bilder pro Sekunde oder 0.04s pro Bild.
Du willst ein Bild alle drei Sekunde heißt ⅓ Bild pro Sekunde.

Code: Alles auswählen

ffmpeg -r "1/3" -i image%d.png video.mp4
rot: Moderator wanne spricht, default: User wanne spricht.

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

Re: Diashow mit ffmpeg erstellen

Beitrag von ralli » 27.07.2020 17:26:26

Danke wanne, das hat mir schon weiter geholfen. Aber irgendwie ist noch der Wurm drin. Ich habe im Ordner 5 png Bilder, numeriert von image0.png bis image4.png. Er zeigt im Video lediglich das erste Bild bei der Befehlsfolge.

Gruß ralli
System: Debian Buster - Cinnamon Desktop - CPU: Intel Core i7-870 - RAM: 16 GB - GPU: AMD (2 GB) - SSD 128 GB - HD: 1 TB

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

Re: Diashow mit ffmpeg erstellen

Beitrag von wanne » 27.07.2020 17:38:56

Hab das gerade ausprobiert. Bei mir funktioniert das hervorragend.
Hast du auch lange genug gewartet? 3 Sekunden sind eine Menge Zeit.
Kannst du eventuell mal die Ausgebe vom Befehl und von ffmpeg -i video.mp4 zeigen?
rot: Moderator wanne spricht, default: User wanne spricht.

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

Re: Diashow mit ffmpeg erstellen

Beitrag von MaGe » 27.07.2020 18:00:57

TESTEN: concat.
im verzeichnis mit den bildern

Code: Alles auswählen

printf "file '%s'\n" *.png > list.txt 
raus kommt sowas aus der list.txt

file 'CIMG0387.png'
file 'CIMG0388.png'
file 'CIMG0389.png'
file 'CIMG0390.png'

Code: Alles auswählen

 ffmpeg -r 0.2 -f concat -i list.txt output.mp4 


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: 2701
Registriert: 02.03.2008 08:03:02

Re: Diashow mit ffmpeg erstellen

Beitrag von ralli » 28.07.2020 07:29:12

wanne hat geschrieben: ↑ zum Beitrag ↑
27.07.2020 17:07:13
Ich glaube da sind sogar Beispiele in der man-Page.
Die Passende option heißt -r und nimmt Hz. Default sind 25Hz also 25 Bilder pro Sekunde oder 0.04s pro Bild.
Du willst ein Bild alle drei Sekunde heißt ⅓ Bild pro Sekunde.

Code: Alles auswählen

ffmpeg -r "1/3" -i image%d.png video.mp4
Dieser Ansatz funktioniert nicht, weil er den Index anmeckert:

Code: Alles auswählen

Could find no file with path 'image%d.png' and index in the range 0-4
image%d.png: No such file or directory
Da stimmt was nicht mit der Numerierung der Bilder. Meine Testbilder sind:

Code: Alles auswählen

file 'akim1.png'
file 'falk1.png'
file 'nick1.png'
file 'sigurd1.png'
file 'tibor.png'
OK, sehe gerade, das die Numerierung so nicht stimmt.

Wo fängt denn der Index an? Bei 0 oder 1? Müssen die Bilder dann Bild01.png , Bild02.png ... heißen?

Danke für die Unterstützung.

Gruß ralli
System: Debian Buster - Cinnamon Desktop - CPU: Intel Core i7-870 - RAM: 16 GB - GPU: AMD (2 GB) - SSD 128 GB - HD: 1 TB

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

Re: Diashow mit ffmpeg erstellen

Beitrag von ralli » 28.07.2020 07:34:00

MaGe hat geschrieben: ↑ zum Beitrag ↑
27.07.2020 18:00:57
TESTEN: concat.
im verzeichnis mit den bildern

Code: Alles auswählen

printf "file '%s'\n" *.png > list.txt 
raus kommt sowas aus der list.txt

file 'CIMG0387.png'
file 'CIMG0388.png'
file 'CIMG0389.png'
file 'CIMG0390.png'

Code: Alles auswählen

 ffmpeg -r 0.2 -f concat -i list.txt output.mp4 


gruss MaGe
Hallo MaGe,

Dein Ansatz funktioniert einwandfrei. Allerdings wird die erzeugte mp4 Datei auf meinem Smartfernseher (mittels minidlna) nicht angezeigt, auf meinem PC aber schon richtig. Mein Fernseher hat FULL HD, welches format muß ich für FULL HD und welches für HD nehmen? ffmpeg ist ja unterschiedlich compiliert. Ja, ich sehe, das ich noch viel lernen muß. Danke für die Unterstützung.

Grüße ralli
System: Debian Buster - Cinnamon Desktop - CPU: Intel Core i7-870 - RAM: 16 GB - GPU: AMD (2 GB) - SSD 128 GB - HD: 1 TB

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

Re: Diashow mit ffmpeg erstellen

Beitrag von MaGe » 28.07.2020 10:13:45

Bilder, Auflösung zu groß?
meine Bilder haben 2240x1680 Auflösung
Auflösung wird von diesem Fernseher nicht unterstützt.

Testen:

Code: Alles auswählen

 ffmpeg -r 0.2 -f concat -i list.txt -s 1920x1080 output.mkv 
ralli hat geschrieben: [...] welches format muß ich für FULL HD und welches für HD nehmen?
FULL HD - 1920x1080
HD - 1280x720



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: 2701
Registriert: 02.03.2008 08:03:02

Re: Diashow mit ffmpeg erstellen

Beitrag von ralli » 28.07.2020 11:25:17

Danke MaGe,

ein bißchen weiter bin ich schon, allerdings nicht zufrieden.

Meine technischen Spezifikationen vom Phillips Smart TV:

Code: Alles auswählen

Multimedia Smart TV Phillips

Auflösung: FULL HD - 1920x1280

Multimedia-Anwendungen

• Videowiedergabeformate: Dateien: AVI, MKV,H264/MPEG-4 (AVC), MPEG-1, MPEG-2, MPEG-4,WMV9/VC1

• Musikwiedergabeformate: AAC, MP3, WMA (v2 bis v9.2)

• Bildwiedergabeformate: JPEG
Also sollten MKV und MP4 unterstützt werden. Offensichtlich geht es mit ffmpeg mit diesen Befehlen nicht:

Code: Alles auswählen

ffmpeg -r 0.2 -f concat -i list.txt -s 1920x1080 probe.mp4
oder

Code: Alles auswählen

ffmpeg -r 0.2 -f concat -i list.txt -s 1920x1080 output.mkv
Im übrigen werden beide Formate am PC einwandfrei angezeigt, im Smart TV aber nicht. Im EInsatz ist der Server minidlnad.

Erstelle ich die Slideshow mit Imagination, funktioniert es. Komme leider nicht wirklich weiter, wollte eigentlich ohne GUI arbeiten.

Gruß ralli
System: Debian Buster - Cinnamon Desktop - CPU: Intel Core i7-870 - RAM: 16 GB - GPU: AMD (2 GB) - SSD 128 GB - HD: 1 TB

Benutzeravatar
Lord_Carlos
Beiträge: 5185
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 » 28.07.2020 11:36:25

ralli hat geschrieben: ↑ zum Beitrag ↑
28.07.2020 11:25:17

Code: Alles auswählen

ffmpeg -r 0.2 -f concat -i list.txt -s 1920x1080 probe.mp4
oder

Code: Alles auswählen

ffmpeg -r 0.2 -f concat -i list.txt -s 1920x1080 output.mkv
Gruß ralli
Du gibst auch kein codec an 🤔 Ich weis garnicht was dann genommen wird. Fuege mal sicherheitshalber -c:v libx264 hinzu.
Dazu auch noch -pix_fmt yuv420p

Code: Alles auswählen

ffmpeg -r 0.2 -f concat -i list.txt -s 1920x1080 -c:v libx264 -pix_fmt yuv420p probe.mp4

Code: Alles auswählen

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

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

Re: Diashow mit ffmpeg erstellen

Beitrag von ralli » 28.07.2020 12:31:36

Hat leider auch nicht funktioniert, alles wie gehabt, Slideshow wird erstellt, läuft aber nur am PC. Es kommt bei der Erstellung mit ffmpeg noch zu folgender Fehlermeldung:

Code: Alles auswählen

[swscaler @ 0x5628494a5740] deprecated pixel format used, make sure you did set range correctly
    Last message repeated 1 times
[swscaler @ 0x5628498ad8c0] deprecated pixel format used, make sure you did set range correctly
    Last message repeated 1 times
Das Video wird aber trotzdem erstellt. Es sollte doch gehen, denn mit Imagination geht es doch auch mit mp4 und 16:9 TV Format. Bestimmt benutzt Imagination auch ffmpeg im Hintergrund, es wäre ja hilfreich, welche Befehlssequenz es verwendet. Nun stundenlanges experimentieren frustriert und ermüdet. Trotzdem vielen Dank an alle.

Gruß ralli

PS: Es wird bestimmt am Smart TV liegen, der ist mittlerweile auch schon 9 Jahre alt.
System: Debian Buster - Cinnamon Desktop - CPU: Intel Core i7-870 - RAM: 16 GB - GPU: AMD (2 GB) - SSD 128 GB - HD: 1 TB

Benutzeravatar
Tintom
Beiträge: 1882
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: Diashow mit ffmpeg erstellen

Beitrag von Tintom » 28.07.2020 13:06:32

Wäre es in diesem Fall nicht angebrachter, wenn du eine Datei nimmst welche auf dem Fernseher wiedergegeben wird und du dein neues Video anhand der Parameter der funktionierenden Datei (Codec, Container usw.) kodierst?

Benutzeravatar
Lord_Carlos
Beiträge: 5185
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 » 28.07.2020 13:35:26

Oder vielleicht hast du schonmal eine Datei erstellt die der TV wiedergeben kann?

Edit: Kannst du nicht die Bilder direkt an den TV senden?

Code: Alles auswählen

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

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

Re: Diashow mit ffmpeg erstellen

Beitrag von ralli » 28.07.2020 14:10:03

Tintom hat geschrieben: ↑ zum Beitrag ↑
28.07.2020 13:06:32
Wäre es in diesem Fall nicht angebrachter, wenn du eine Datei nimmst welche auf dem Fernseher wiedergegeben wird und du dein neues Video anhand der Parameter der funktionierenden Datei (Codec, Container usw.) kodierst?
OK, werde ich mal ausprobieren. Ich habe ja mediainfo installiert.

Gruß ralli

PS: Geht ja auch über die Konsole mit ffprobe.
Zuletzt geändert von ralli am 28.07.2020 14:21:03, insgesamt 2-mal geändert.
System: Debian Buster - Cinnamon Desktop - CPU: Intel Core i7-870 - RAM: 16 GB - GPU: AMD (2 GB) - SSD 128 GB - HD: 1 TB

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

Re: Diashow mit ffmpeg erstellen

Beitrag von ralli » 28.07.2020 14:13:34

Lord_Carlos hat geschrieben: ↑ zum Beitrag ↑
28.07.2020 13:35:26
Oder vielleicht hast du schonmal eine Datei erstellt die der TV wiedergeben kann?

Edit: Kannst du nicht die Bilder direkt an den TV senden?
Hab ich noch nie gemacht mit Linux. Mit Windows geht das ganz einfach. Geht das überhaupt und wenn, dann wie? Wie Ihr seht, habe ich auf diesem Gebiet noch keine Erfahrungen. Alle fertigen Filme, auch au mediathekviewweb werden ansonsten einwandfrei vom TV wieder gegeben über minidlna.

Gruß ralli
System: Debian Buster - Cinnamon Desktop - CPU: Intel Core i7-870 - RAM: 16 GB - GPU: AMD (2 GB) - SSD 128 GB - HD: 1 TB

Antworten