ffmpeg - Konvertierung & richtige Benennung

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
rola621
Beiträge: 399
Registriert: 13.05.2021 18:12:20

ffmpeg - Konvertierung & richtige Benennung

Beitrag von rola621 » 24.06.2021 21:28:46

Hallo ihr Lieben!

Ich bin gerade dabei, etwas in der Kommandozeile herumzuexperimentieren.
Dabei habe ich mich mit Debianffmpeg und Debianfind beschäftigt und auch schon einiges darüber gelesen und probiert. So ganz zum Ziel bin ich allerdings noch nicht gekommen... :|

Ziel:
Ein Duplikat meiner vollständigen Musiksammlung (flac's und mp3's) so konvertieren, dass am Ende die flacs zu mp3 (320k CBR) konvertiert und die Dateiendung entsprechend geändert wurde. Die alten Flacs in den jeweiligen Unterverzeichnissen sollen anschließend gelöscht werden.

Habe folgendermaßen begonnen:
(Befehl im Hauptverzeichnis der Musiksammlung ausgeführt)

1.

Code: Alles auswählen

find ./ -iname "*.flac" -exec ffmpeg -i "{}" -acodec libmp3lame -ab 320k "{}".mp3 \; 
hat so geklappt wie ich es wollte. Ergebnis: Alle flacs in der gesamten Ordnerstruktur einschl. Unterverzeichnissen wurden konvertiert, tragen nun allerdings die unschöne Dateiendung ".flac.mp3"

2.

Code: Alles auswählen

find ./ -iname '*.flac' -exec rm {} \;
hat ebenfalls geklappt wie ich es wollte.
Ergebnis: alle alten flacs wurden entfernt. Die neu konvertierten ".flac.mp3"-Dateien sind geblieben.

Soweit so gut.

3.

Code: Alles auswählen

find ./ -iname '.flac' -exec rename -v 's/$.flac//g' "{}".mp3 \;
Der Befehl, ebenfalls in dem Hauptverzeichnis der Musiksammlung ausgeführt, bleibt bei mir leider erfolglos.
Ich kann mir nicht erklären warum.
Die ".flac.mp3"-Endungen sind zwar nur ein Schönheitsfehler, störend finde ich sie der Übersichtlichkeit halber dann aber schon.
Daher meine Frage an euch:
Was stimmt mit dem Kommando nicht, und wie muss ich es anpassen oder wodurch ersetzen, um
in allen Dateinamen, in denen dann noch ein ".flac" vor der eigentlichen Dateiendung (mp3) steht, herauszulöschen?

Möchte mir dann am Ende einen Alias-Befehl zusammenbasteln, der alle drei Schritte aneinanderreiht :-)

PS: Mir ist bewusst, dass es viele verschiedene Alternativmöglichkeiten für diesen Anwendungsfall gibt, welche ich mir auch alle gern ansehe und teste. Am meisten freuen würde ich mich jedoch, wenn ich das irgendwie noch auf diese Art und Weise zu Ende bringen kann :mrgreen:

Ich bin gespannt auf eure Beiträge! :idea:

Viele Grüße
Rola
Notebook & Desktop: Debian bookworm & Xfce

Benutzeravatar
hikaru
Moderator
Beiträge: 13557
Registriert: 09.04.2008 12:48:59

Re: ffmpeg - Konvertierung & richtige Benennung

Beitrag von hikaru » 24.06.2021 22:33:30

rola621 hat geschrieben: ↑ zum Beitrag ↑
24.06.2021 21:28:46

Code: Alles auswählen

find ./ -iname '.flac' -exec rename -v 's/$.flac//g' "{}".mp3 \;
Zerlegen wir das mal:

3a. find:

Code: Alles auswählen

find ./ -iname '.flac'
So wie es hier steht, werden nur Dateien gesucht, die exakt '.flac' heißen, ohne führenden Dateinamen oder weitere Endung ('.mp3').
Du musst find an beiden Enden "greedy" machen:

Code: Alles auswählen

find ./ -iname '*.flac*'
(Streng genommen solltest du hier '-name' verwenden, nicht '-iname', denn falls deine '.flac'-Endung Großbuchstaben enthält, würde die im anschließenden rename-Pattern eh nicht erfasst.)

3b. rename:
Wenn wir den find-Platzhalter in eine gewöhnliche Wildcard auflösen, dann steht hier das:

Code: Alles auswählen

rename -v 's/$.flac//g' *.mp3
Hier gibt es zwei Probleme:
I. Dein Pattern beginnt mit einem '$', was das Ende des Strings markiert. Das beißt sich, also muss das '$' weg, sonst wird kein Pattern gefunden und rename macht nichts.
II. Das '.mp3' am Ende ist für sich genommen ok. In der Kette mit find würde es aber an den Eingabestring für rename angehangen. '.mp3' steckt aber schon im find-Platzhalter. Damit hättest du eine dreifache Endung '.flac.mp3.mp3' und solche Dateien hast du nicht. rename würde also keine Datei finden und gar nichts machen. Lass das '.mp3' hier einfach weg.
III. Das ist nicht wirklich ein Problem, aber das 'g' am Ende des Patterns kannst du dir sparen. Du hast hoffentlich nur einmal '.flac' im Dateinamen. Falls nicht, kriegst du mit oder ohne 'g' noch andere Probleme.
I, II und III zusammen:

Code: Alles auswählen

rename -v 's/.flac//' *
3a und 3b zusammen:

Code: Alles auswählen

find ./ -iname '*.flac*' -exec rename -v -n 's/.flac//' "{}" \;
(Die Zeile wird immer noch nichts machen. Herauszufinden warum ist deine Hausaufgabe. ;) )
Zuletzt geändert von hikaru am 25.06.2021 09:18:09, insgesamt 1-mal geändert.

rola621
Beiträge: 399
Registriert: 13.05.2021 18:12:20

Re: ffmpeg - Konvertierung & richtige Benennung

Beitrag von rola621 » 25.06.2021 09:04:04

Danke vielmals für deinen konstruktiven Beitrag! Ich schaue mir das im nächsten freien Moment nochmal an und versuche die Hausaufgabe :-)
Notebook & Desktop: Debian bookworm & Xfce

Benutzeravatar
Houbey
Beiträge: 727
Registriert: 03.03.2012 05:13:32

Re: ffmpeg - Konvertierung & richtige Benennung

Beitrag von Houbey » 13.07.2021 11:42:39

Hallo rola. :) Versuche das mal, was wanne am 04.09.2015 geschrieben hat. Vielleicht hilft dir das weiter? Ist halt ein Beispiel. Mehrere wav in mp3 umwandeln.
Viele Grüße
Houbey

------------------------------
Debian GNU/Linux 11.8 Bullseye, Xfce 4.16, als 64-Bit und bis jetzt noch glücklich damit. 8)

Antworten