MP3-Konvertierer mit Kommandozeilen-Anbindung?

mischaef

Kassettenkind
Teammitglied
Registriert
Aug. 2012
Beiträge
7.035
Moin zusammen,

normalerweise nutze ich für das Umwandeln meiner Audio-Dateien seit Jahren LameXP. Dieses besitzt jedoch leider keine Steuerung per Kommando-Zeile. Ich müsste aber von einer Batch-Datei aus Dateien zur Umwandlung übergeben. Das direkte Umwandeln per Lame.exe in dieser Batch kommt nicht in Frage, da ich hier nur eine Datei nach der anderen und nicht mehrere parallel kodieren könnte - das würde also deutlich länger dauern.

Kennt zufällig jemand ein Programm, was dafür infrage kommt? Wichtig ist, dass ich in der Kommandozeile volle Kontrolle über die Parameter für die Umwandlung habe....

Besten dank schon mal

Michael
 
mischaef schrieb:
Das direkte Umwandeln per Lame.exe in dieser Batch kommt nicht in Frage, da ich hier nur eine Datei nach der anderen und nicht mehrere parallel kodieren könnte
Warum für "parallel" nicht einfach öfters aufrufen?
 
Weil soweit meine Batch-Kenntnisse nicht reichen...^^

Ich möchte auch einfach sagen, dass alle Wav-Dateien aus einem Ordner in ein bestimmtes Format gewandelt werden sollen. Bei einem mehrfachen Aufruf müsste ich ja, zumindest nach meinem Verständnis, wieder schauen, dass höchstens 12 Aufrufe (6 Kerne, 12 Threads) erfolgen.
 
  • Gefällt mir
Reaktionen: whats4
was spricht gegen ffmpg?
 
  • Gefällt mir
Reaktionen: NJay, kieleich, madmax2010 und eine weitere Person
würde ffmpeg auch mehrere Instanzen aufrufen?
 
@K3ks
Ich habe das gerade mal überflogen (kann sein, dass ich was übersehen habe), aber hier geht es, glaube ich, nur darum, ein ganzes Verzeichnis umzuwandeln - aber nicht mehrer parallel.

Bash:
for i in *.avi; do ffmpeg -i "$i" "${i%.*}.mp4"

Das erscheint für mich eher ein File nach dem anderen.
 
einfach for dem ffmeg noch ein start hängen
 
@mischaef: Ich hab absolut keine Ahnung, daher das 🤷
Ich wollte dich nur testen lassen, aber das Ding ist halt schon seit 1000 Jahren gefühlt der Standardkonverter(?), mit dem Dingens muss halt alles gehen.
Aber vlt. ist auch dies das Hauptproblem
mischaef schrieb:
Weil soweit meine Batch-Kenntnisse nicht reichen...^^

🤷
 
  • Gefällt mir
Reaktionen: mischaef
Jetzt kommt aber wieder genau das, was ich ja vorher meinte: Das es recht komplex wird. Ich müsste dann, wenn ich das recht erkenne, noch vor dem ganzen Aufruf eine Schleife einbauen, dass nie mehr aus 12 Instanzen aufgerufen werden...das geht dann weit über dem, was meine Fähigkeiten betrifft, hinaus. Und ich hätte auch nicht die Zeit dazu, mich da einzuarbeiten (was für eine Sache sicherlich auch zu aufwendig wäre)...daher die Frage nach einem Programm, welches genau diese Sachen übernimmt - ansonsten wäre es immer noch weniger aufwendig weiterhin den Schritt manuell mit LameXP zu machen.
 
parallel --dry-run ffmpeg -i {} -c:a libmp3lame -b:a 192k {.}.mp3 ::: *.mp3

teste mal so. Soll ich noch directory handling dran tippen?
 
Batch arbeitet immer sequentiell. Warum machst Du nicht das naheliegenste für Dich ohne Programmierkenntnisse? 12 Unterverzeichnisse und dann einfach ein Script mit Verzeichnisname 12 mal aufrufen? Hier solltest Du aber unbedingt beachten, die Lese- wie Schreibaktionen über eine SSD, oder noch besser, einen NMVe SSD Datenträger zu machen.
 
madmax2010 schrieb:
parallel --dry-run ffmpeg -i {} -c:a libmp3lame -b:a 192k {.}.mp3 ::: *.mp3
Das würde aber alle gefundenen Dateien parallelisieren, und das ist tödlich, das würde ich so nicht machen. Man muß hier, wie oben @K3ks es sagt, ein Limit einbauen mit maximalen Threads als Limit.
 
  • Gefällt mir
Reaktionen: madmax2010
@nutrix
Weil alle Dateien automatisiert in einem Ordner landen. Da alles in einem Ordner zu machen würde die Batch sicherlich um einiges komplexer machen. Der Weg bis zu dem Teil, an dem die Dateien konvertiert werden, funktioniert ja.

Mein Gedanke war einfach, dass ich ein Programm per Batch aufrufe und ihm einfach per Parameter mitteile, dass er alle Dateien in dem Ordner mit den vorgegebenen Parametern wandeln soll - das Program sich aber um das "wie" dann kümnmert...also so, als wenn ich die Dateien manuell dort einfüge...
 
K3ks schrieb:
E: @madmax2010: Gibt's einen Parameter noch für Thread Count oder läuft das automatisch? 🤔
ah, sorry, hatte ich sogar im prinzip daneben in der histroy (und eben selber angesprichen. Doh.

-j$(nproc) erlaubt parallel zu sagen wie viele kerne es nutzen soll, wurde bei HT eventuell halbieren und ffmpeg je auf einen Thread pinen

Bash:
mkdir -p converted

parallel -j$(( $(nproc) / 2 )) ffmpeg -threads 1 -i {} -c:a libmp3lame -b:a 192k converted/{/.}.mp3 ::: *.mp3

und mit ordnerstruktur:
Bash:
find . -type f -name '*.mp3'   | parallel -j$(( $(nproc) / 2 )) '
      mkdir -p converted/{//} &&
      ffmpeg -threads 1 -i {} -c:a libmp3lame -b:a 192k converted/{//}/{/.}.mp3
    '

Vorsicht: eher ungetestet und aus anderen Dingen inmeiner History gebastelt.Kann das aben
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: netzgestaltung, SaschaHa, nutrix und eine weitere Person
Zurück
Oben