staging.inyokaproject.org

Shell-Skript: ffmpeg thumbnails für Videos erstellen und in Video einbinden

Status: Ungelöst | Ubuntu-Version: Kubuntu 23.04 (Lunar Lobster)
Antworten |

Schlafmuetze82

Anmeldungsdatum:
1. November 2008

Beiträge: Zähle...

Hallo Leute,

ich bin leider eine absolute Null wenn es um das Erstellen von Skripten geht. Es wäre daher nett, wenn ihr mir helfen könntet. Das Skript soll folgendes durchführen. Ich habe in einem Ordner viele MP4-Dateien. Entsprechend der Reihenfolge der Videos (anhand der Dateinamen) soll es für jedes Video ein Vorschaubild von Sekunde 3 erstellt werden. Dieses Vorschaubild soll dann in das entsprechende Video eingefügt werden und die daraus entstehende MP4-Datei in den Unterordner "bearbeitet" gespeichert werden. Die Benennung der bearbeiteten MP4-Datei soll wie folgt aussehen, es soll fortlaufend aufwärts gezählt werden, entsprechend der Anzahl der Dateien die in dem Zielordner bereits sind, begonnen mit 00001 und anschließend der Originale Dateiname angehängt werden (also "00001 - Dateiname.mp4", 00002 - Dateiname.mp4). Anschließend können die Ausgangsdatei sowie das erstellte Vorschaubild gelöscht werden.

Ich weiß das dies recht umfangreich ist und wäre für eure Hilfe extrem dankbar.

Mit freundlichen Grüßen Schlafmuetze82

Schlafmuetze82

(Themenstarter)

Anmeldungsdatum:
1. November 2008

Beiträge: 204

Hallo Leute,

durch kräftiges rumprobieren bin ich bisher soweit gekommen, dass die Vorschaubilder erstellt, eingefügt und die Zieldatei in den entsprechenden Ordner verschoben wird. Mein Skript schaut bisher wie folgt aus:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#!/bin/bash
for i in *.mp4
do
    #erstellt Vorschaubild
    ffmpeg -i "$i" -ss 00:00:03 -frames:v 1 "$i".png;
    #erstellt Zieldatei und bettet Vorschaubild ein
    ffmpeg -i "$i" -i "$i.png" -map 0 -map 1 -c copy -c:v:1 png -disposition:v:1 attached_pic "$i.png.mp4";
    #definiert Variable x, welche die Zahl der Dateien im Zielordner ausgibt
    x=$(($(find "Test/" -maxdepth 1 -type f | wc -l) + 1 ))
    #verschiebt Zieldateien in Zielordner mit defniniertem Dateinamen (laufende Zahl - Originaldateiname)
    mv *.mp4.png.mp4 Test/"$x - $i";
    #löscht die erstellten Vorschaubilder
    rm *.png;
    echo "done"
done

Allerdings habe ich noch ein Problem. Die Dateinamen der Zieldateien fangen nicht mit einer fünfstelligen Zahl an, also z.B. 00001, sondern z.B. mit 1. Gibt es eine Möglichkeit dies zu ändern?

Mit freundlichen Grüßen

Schlafmuetze82

Schlafmuetze82

(Themenstarter)

Anmeldungsdatum:
1. November 2008

Beiträge: 204

Hallo Leute, ich konnte das Problem mit der Nummerierung nun auch lösen, der folgende Befehl hat das Problem gelöst:

1
2
3
y=$(printf "%05d" $x)
#verschiebt Zieldateien in Zielordner mit defniniertem Dateinamen (laufende Zahl - Originaldateiname)
mv *.mp4.png.mp4 Test/"$y - $i";

Allerdings habe ich nun ein weiteres Problem festgestellt. Einige Dateien besitzen den gleichen Dateinamen allerdings mit Klammern am Ende, also wie folgt: a.mp4,a(1).mp4,a(2).mp4. Als Folge werden zuerst die Dateien mit Klammern bearbeitet und dann die ohne. Dies zerstört aber die richtige Reihenfolge, wie kann ich dies unterbinden?

Edit: Mithilfe von rename war es mir möglich die Klammern zu entfernen. Leider arbeitet die Bash anders als grafische Dateimanager. So werden die Dateien mit Zahl am Ende also a1.mp4, a2.mp4 vor der Datei a.mp4 und auch die Dateien a11.mp4, a12.mp4 vor den Dateien a2.mp4 angezeigt und verarbeitet. Leider habe ich keine Idee, wie ich das unterbinden kann.

Mit freundlichen Grüßen

Schlafmuetze82

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6234

Leider arbeitet die Bash anders als grafische Dateimanager.

Eigentlich ist es anders herum. Aber das ist ein Punkt, der mich auch ständig ärgert.

Grafische Programme wollen immer besonders schlau sein und versuchen in Dateinamen Zahlenwerte zu finden. Ich glaube das Verfahren nennt sich "Versionsort".

In einigen wenigen Programmen kann man das umstellen. So kann man z.B. im Bildbetrachter Geeqie die Sortierung umstellen. Allerdings sind die Bezeichnungen dafür unglücklich gewählt:

  • Sortierung nach name - das von dir beobachtete Verhalten

  • Sortierung nach Zahl - damit ist der numerische Wert der Bytes gemeint.

BTW, möglicherweise könnte es sinnvoll sein, die Vorschaubilder auf eine einheitliche Größe zu skalieren.

Frage: Welche Programme können diese Bilder anzeigen? Die Suchmaschine meines geringsten Misstrauens sagt, das dass die nicht von allen Browsern angezeigt werden.

Antworten |