lame: mehrere mp3 zu einer Datei neucodieren mit shell kommando

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Kermit24
Beiträge: 311
Registriert: 29.04.2006 14:44:39

lame: mehrere mp3 zu einer Datei neucodieren mit shell kommando

Beitrag von Kermit24 » 18.04.2019 22:20:50

Hallo,
leider bringt lame keine Option mit, mehrere wav oder mp3s zu einer neuzucodieren. Es geht aber wohl über die Pipe, denn Lame kann jede mp3 decodieren: Hier wird es über find gemacht, was mich verwirrt:
find . -name ‘*.mp3’ -exec lame –decode ‘{}’ - ‘;’ | lame -a –tt “Title” –tl “Album” –ta “Artist” -b 96 - concatenat.mp3

Geht das auch ohne find? Ich habe jetzt beispielsweise eine 01.mp3 und 02.mp3 und möchte beide mit lame decodieren nacheinander über Pipes wieder zu lame senden, um EINE neue mp3 zu codieren. Wie müsste das shell-kommando aussehen?

Danke im Voraus

PS: ich weiß dass es auch mit ffmpeg/concat geht, aber ist auch kompliziert, da die Dateien nicht einfach als einzelne Parameter übergeben werden. Ziel ist ein kleines shell-script, dem ich als Parameter eine Liste der zu verbindenden Dateien mitteile. Da ich mp3s generell mit meinen eigenen lame Optionen nach einem bestimmten Schema codiere, möchte ich ffmpeg auch nicht nutzen

Benutzeravatar
bluestar
Beiträge: 2418
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: lame: mehrere mp3 zu einer Datei neucodieren mit shell kommando

Beitrag von bluestar » 19.04.2019 15:47:43

Eigentlich sollte es ausreichen, wenn du bei den mp3 Dateien die ID3 Tags komplett entfernst und sie dann mir cat 01.mp3 02.mp3>concated.mp3 zusammenbaust.

Das wird auch mit mp3 Dateien funktionieren, die ID3-Tags enthalten, allerdings ist deine fertige Mp3-Datei dann halt unsauber

Kermit24
Beiträge: 311
Registriert: 29.04.2006 14:44:39

Re: lame: mehrere mp3 zu einer Datei neucodieren mit shell kommando

Beitrag von Kermit24 » 19.04.2019 16:47:03

Genau das habe ich zuerst probiert - allerdings mit mp3wrap aus dem repository. Die erzeuge mp3 ist kaputt, bzw. entspricht wohl nicht der Spezifikation. Sie wird von manchen Playern nicht abgespielt, bzw. nur der erste Titel. Die Laufzeitanzeige ist auch kaputt. So eine Datei von mp3wrap habe ich dann versucht durch lame zu jagen. Lame kann mit der Datei aber auch nichts anfangen. :(

Ich habe nun eine sox/lame Lösung:

Code: Alles auswählen

sox 01.mp3 02.mp3 -t wav - | lame -V2 --vbr-new - 03.mp3
bzw. als sh-script:

Code: Alles auswählen

mkdir merged
sox "$@" -t wav - | lame -V2 --vbr-new - "merged/$1"
In ~/.local/share/applications habe ich eine entsprechende mimetype .desktop Datei angelegt, welche das script aufruft. Das Script darf allerdings keine ganzen pfade (ansonsten müsste man noch mit "basename" u.a. arbeiten), sondern nur einzelne Dateien verarbeiten, was mit %N statt %F nach Freedesktop Spezifikation funktioniert. Bzw. auf https://specifications.freedesktop.org/ ... 01s07.html steht, dass %N "deprecated" sei. Keine Ahnung warum. Funktioniert hier noch wunderbar.

sox nutzt wohl auch die lame lib, um mp3s zu erzeugen. libsox-fmt-mp3 aus dem repository muss installiert sein. Allerdings habe ich in den fu**ing sox docs nicht gefunden, wie ich die mp3 optionen einstellen kann (nutze VBR V2 in lame).

Antworten