Linux - Befehl verstehen

Dieses Thema im Forum "Linux & BSD" wurde erstellt von Heisenberg, 17. Dezember 2011 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 17. Dezember 2011
    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?
     
  2. 17. Dezember 2011
    AW: Linux - Befehl verstehen

    ~Befehl~ + -h oder -? oder -help oder --help
    bzw.

    ffmpeg -h
    ffmpeg -?
    ffmpeg -help
    oder
    ffmpeg --help
     
  3. 17. Dezember 2011
    AW: Linux - Befehl verstehen

    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
     
  4. 17. Dezember 2011
    AW: Linux - Befehl verstehen

    Und wenns dir um die Pipe (" | ") geht

    -> All about pipes, by The Linux Information Project (LINFO)
     
  5. 18. Dezember 2011
    AW: 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.
     
  6. 18. Dezember 2011
    AW: Linux - Befehl verstehen

    ich glaube einfach nen * als wildcard zu nehmen, wird so nicht funktionieren.

    probiers mal mit
    Code:
    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"

    Code:
    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")
     
  7. 20. Dezember 2011
    AW: Linux - Befehl verstehen

    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
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.