Vollständige Version anzeigen : Linux - Befehl verstehen
Heisenberg
17.12.2011, 20:54
Guten Abend,
ich habe eben danach gegoogled, wie ich eine -flac Datei ins -mp3 Format konvertieren kann.
Ich würde gerne den Befehl verstehen:
ffmpeg -i input-flac -vn -f wav - | lame --v -V7 - out-mp3
Ich benutze das Programm ffmpeg. -i gibt an dass die Datei "input-flac" konvertiert werden soll. Wofür stehen -vn und -f? Dann kommen: " wav - | " Den Hochstrich verstehe ich nicht. Ich schätze dass die Datei evtl. somit weitergereicht wird? Dann wird Lame verwendet (ist das ein eigenständiges Programm? mit den Parametern "--v -V7 - " -> was hat das zu bedeuten?
out-mp3 ist dann wieder klar: halt die entstandene -mp3 Datei.
Ist das was ich mir geacht habe richtig? Und was bedeuten die anderen Parameter?
~Befehl~ + -h oder -? oder -help oder --help
bzw.
ffmpeg -h
ffmpeg -?
ffmpeg -help
oder
ffmpeg --help
Fraggdieb
17.12.2011, 21:35
Mh, guck mal_. jedes Programm hat eine Manpage oder eine -h (Hilfe) funktion. Wobei der Befehl oben, mein ich, falsch ist. Sollte lauten:
fmpeg -i input-flac -vn -f wav - | lame -V 0 - neu-mp3
Fangen wir mal von links nach rechts an
-i (input file name)
-vn (disable video)
-f (force format) (WAV)
-V (set ffmpeg verbosity level)
Weitergereicht ist schon richtig interpretiert, quasi übernimmt "Lame" nun die umwandlung. Lame ist der MP3 Encoder
Mr. Mouse
17.12.2011, 21:50
Und wenns dir um die Pipe (" | ") geht
-> __-linfo-org/pipes-html
Heisenberg
17.12.2011, 23:12
Linux - Befehl verstehen
Danke schon mal. Und wie mache ich das ganze mit Wildcards, sodass alle Dateien umbenannt werden?
ffmpeg -i 1-flac -vn -f wav - | lame -V0 - 1-mp3
Wenn ich jetzt einfach statt *-flac und *-mp3 setze, bekomme ich einen Fehler, sprich es wird eine *-mp3 erzeugt.
bloodyphoenix
17.12.2011, 23:35
ich glaube einfach nen * als wildcard zu nehmen, wird so nicht funktionieren.
probiers mal mit
for d in *-flac; do ffmpeg -i $d -vn -f wav - | lame -V0 - $d-mp3; done
Bedeutet: Startet eine Schleife, die der variable d alle einträge von *-flac (also alle flac dateien) nacheinander zuweist. Innerhalb der Schleife führt er deinen Befehl aus, ersetzt dabei die Dateinamen durch $d (also die Variable, in der du den aktuellen Dateinamen gespeichert hast).
Das macht er, bis er alle Dateien durch hat.
Einziger Nachteil: die datei heisst bla-flac-mp3. dagegen hilft es das -flac wegzuschneiden. ich benutze dafür gerne "sed"
for d in *-flac; do ffmpeg -i $d -vn -f wav - | lame -V0 - $(echo $d | sed 's/\-flac//')-mp3; done
Bedeutet: Nehme $d und stecke es in sed. sed ersetzt dann -flac durch nix und fertig ist der richtige dateiname bla-mp3
Obs einfacher geht? Vielleicht? Obs trotzdem funktioniert? Ziemlich sicher ;)
Edit: im sed Befehl . mit \ escapen, sonst matcht . auf alle Zeichen und nicht nur Punkte (dürfte zwar keinen Unterschied machen, aber so ists "richtiger")
Danke schon mal. Und wie mache ich das ganze mit Wildcards, sodass alle Dateien umbenannt werden?
ffmpeg -i 1-flac -vn -f wav - | lame -V0 - 1-mp3
Wenn ich jetzt einfach statt *-flac und *-mp3 setze, bekomme ich einen Fehler, sprich es wird eine *-mp3 erzeugt_
als input kannst du vllt die wildkart nutzen, da er jede -flac datei lesen wird, jedoch wird er nicht zufällige namen für den output verwenden ^^ vllt gerade mit einer schleife wie davor beschrieben austattetn, so dass die titel durch nummeriert werden ;)