Bibliothek von WMA-Titeln in MP3 konvertieren?


28

Ich weiß, dass es Optionen wie Sound Converter gibt, mit denen Sie einen Titel oder ein Verzeichnis gleichzeitig bearbeiten können. Gibt es jedoch Tools, die die Unterverzeichnisse eines Verzeichnisses rekursiv durchsuchen und alle WMAs in MP3s konvertieren?

Grundsätzlich möchte ich es auf meine ~ / Musik loslassen und es seine Sache machen lassen, ohne dass ich es manuell ein Unterverzeichnis nach dem anderen geben muss.


Wenn WMA-Dateien DRM enthalten, kann sie keine Linux-Anwendung entschlüsseln.
Broam

Antworten:


17

MPlayer ist wahrscheinlich bereits installiert. Stellen Sie auch sicher, dass Sie lahm haben:

sudo apt-get install mplayer lame

Dann gibt es zwei Möglichkeiten, dies zu tun: eine einfach zu lesende Version und ein kurzes und unsauberes Skript, um dies zu tun:

Alle WMAs sollten sich in Ihrem aktuellen Verzeichnis befinden. Erstellen Sie eine Datei mit dem Namen wmamp3 in Ihrem Ausgangsverzeichnis (~ /), die Folgendes enthält:

#!/bin/bash

current_directory=$( pwd )

#remove spaces
for i in *.wma; do mv "$i" `echo $i | tr ' ' '_'`; done

#remove uppercase
for i in *.[Ww][Mm][Aa]; do mv "$i" `echo $i | tr '[A-Z]' '[a-z]'`; done

#Rip with Mplayer / encode with LAME
for i in *.wma ; do mplayer -vo null -vc dummy -af resample=44100 -ao pcm -ao pcm:waveheader $i && lame -m s audiodump.wav -o $i; done

#convert file names
for i in *.wma; do mv "$i" "`basename "$i" .wma`.mp3"; done

#cleanup
rm audiodump.wav

chmod +x ~/wmamp3 um es ausführbar zu machen

sudo cp ~/wmamp3 /usr/bin um es irgendwo auf deinem Weg nützlich zu machen

Geben Sie "wmamp3" ein, um Ihre Konvertierung auszuführen.


Die kurze und schmutzige Version (macht genau das gleiche wie oben):

for i in *.wma ; do mplayer -vo null -vc dummy -af resample=44100 -ao pcm -ao pcm:waveheader "$i" && lame -m j -h --vbr-new -b 160 audiodump.wav -o "`basename "$i" .wma`.mp3"; done; rm -f audiodump.wav

Danke, aber ich brauche eines, das Verzeichnisse rekursiv durchläuft, da sie über viele Unterverzeichnisse von ~ / Music verteilt sind.
Mike Crittenden

Sie können das Skript einfach erweitern, um eine rekursive Dateisuche durchzuführen. Ich würde das erste Skript wahrscheinlich mit find wiederholen und die Ausgabe an mplayer leiten.
Rory Alsop

Diese Antwort funktioniert 2013 nicht für mich. Diese Antwort funktioniert jedoch: askubuntu.com/a/55469/36661
MountainX

1
Die schnelle und unsaubere Version arbeitet noch im Jahr 2016 (auf 14,04) , wenn Sie ersetzen -ao pcm -waveheadermit -ao pcm:waveheader.
24.

1
Gute Skriptlösung. Funktioniert ohne Änderungen im September 2019 auf Xubuntu 19.04.
Balu

40

Installieren Sie Soundconverter Installieren Sie den Soundkonverter

und laufen Soundconvertervon Launcher oder Terminal

Bildbeschreibung hier eingeben

Die Standardkonvertierung lautet " .oggÄndern" mp3in " edit-> preferencesUnter" Ergebnistyp ". Formatzu MP3 wie folgt:

Bildbeschreibung hier eingeben

Klicken Sie auf Ordner hinzufügen und wählen Sie dann Ihren Musikordner aus. Sie können den Ausgabeordner in der obigen Voreinstellungskonfiguration auswählen, bevor Sie auf "Konvertieren" klicken.

Hoffe das wird mit zwei Klicks erledigt :)


2
Dies ist sicherlich ein einfaches Klicken und Zeigen. +1 von mir :-)
Rory Alsop

Das Problem bei dieser Lösung ist, dass SoundConverter extrem langsam arbeitet oder nur vollständig einfriert, wenn mehr als ein paar hundert Songs auf einmal hinzugefügt werden und meine Bibliothek ungefähr 5.000 hat.
Mike Crittenden

5k? wooo das ist eine menge;) auf jeden fall kommt es auf deine rechnerleistung an. Möglicherweise müssen Sie diese Dateien trennen. persönlich habe ich ein paar hundert lieder ohne einfrieren konvertiert :)
Achu

13

Mplayer und Lame müssen zuerst installiert werden:

sudo apt-get install mplayer lame

Dann erstellen Sie das Skript ( Referenzseite ) und führen es aus:

#!/bin/bash
# By Marko Haapala
# converts wma to mp3 recursively. does not delete any static files, so 
# cleanup and renaming is needed afterwards. 
#
# requirements:
# lame    - http://lame.sourceforge.net/download.php
# mplayer - apt-get install mplayer or http://www.mplayerhq.hu/design7/dload.html


current_directory=$(pwd)
wma_files=$(find "${current_directory}" -type f -iname "*.wma")
# Need to change IFS or files with filenames containing spaces will not
# be handled correctly by for loop
IFS=$'\n' 
for wma_file in ${wma_files}; do 
    mplayer -vo null -vc dummy -af resample=44100 \
    -ao pcm -ao pcm:waveheader "${wma_file}" && lame -m s \
    audiodump.wav -o "${wma_file}".mp3
    rm audiodump.wav
done

Sieht so aus, als würde es genau das tun, was Sie wollen. Denken Sie daran, dass Sie vielleicht an den lahmen Flaggen herumspielen möchten, um sicherzustellen, dass Sie die gewünschte Qualitätsstufe erreichen.


3
Dies funktioniert auch 2013 noch gut
MountainX

@ David Futhcher, Hinweis zu erwähnen ist nette Angewohnheit :-), danke!
AjayKumarBasuthkar

2

Installieren Sie den Perl Audio Converter (pacpl): sudo apt-get install pacpl

Dieser Befehl konvertiert alle WMA-Dateien in einem bestimmten Verzeichnis in MP3-Dateien (wobei die Originale intakt bleiben):

pacpl -r -to mp3 -only wma <directory name>

Wenn Sie sich riskant fühlen, können Sie die --deleteOption hinzufügen , auch die Originale zu entfernen:

pacpl -r --delete -to mp3 -only wma <directory name>ich


2

Ich weiß, dass dies ein bisschen alt ist, aber ich habe das von David Futcher gezeigte Skript geändert. Die Änderungen sind:

  • Verwenden Sie /tmpanstelle des aktuellen Ordners für die temporäre WAV-Datei (dies beschleunigte die Konvertierung von Dateien auf einem USB-Stick erheblich).

  • Entfernen Sie die WMA-Dateien, nachdem sie (hoffentlich erfolgreich) konvertiert wurden.

Hier ist es:

#!/bin/bash
# By Marko Haapala
# converts wma to mp3 recursively. does not delete any static files, so
# cleanup and renaming is needed afterwards.
#
# Modified by V10lator
# to delete the wma files and to use /tmp for temporary files
#
# requirements:
# lame    - http://lame.sourceforge.net/download.php
# mplayer - apt-get install mplayer or http://www.mplayerhq.hu/design7/dload.html


current_directory=$(pwd)
tmp_file=$(mktemp -t -u --suffix=.wav)
wma_files=$(find "${current_directory}" -type f -iname "*.wma")
# Need to change IFS or files with filenames containing spaces will not
# be handled correctly by for loop
IFS=$'\n' 
for wma_file in ${wma_files}; do 
    mplayer -vo null -vc dummy -af resample=44100 \
    -ao pcm -ao pcm:waveheader -ao pcm:file="${tmp_file}" \
    "${wma_file}" && lame -m s "${tmp_file}" \
    -o "${wma_file}".mp3 && rm "${wma_file}"
    rm "${tmp_file}"
done

Die letzten beiden Zeilen können zusammengeführt werden :-) -o "${wma_file}".mp3 && rm "${wma_file}" "${tmp_file}" Dies würde die Verarbeitungsgeschwindigkeit leicht erhöhen, da ein anderer Exec für rm fehlt.
AjayKumarBasuthkar

1

Für diejenigen, die nach einer GUI-Version suchen, die bestimmte Dateitypen auswählen kann: Das KDE-Tool soundKonverter https://github.com/HessiJames/soundkonverter fragt, welche Dateitypen der Konversationswarteschlange hinzugefügt werden sollen.

Beste Lösung für meine riesige Hörbuchsammlung mit MP3 / OGG / WMA-Dateien.


1

Hier ist meine Ausgabe des Marko Haapala-Skripts mit ffmpeg:

current_directory=$(pwd)
wma_files=$(find "${current_directory}" -type f -iname "*.wma")
# Need to change IFS or files with filenames containing spaces will not
# be handled correctly by for loop
# Also, it must be run as root to correctly handle spaces on Ubuntu 16
IFS=$'\n'
for wma_file in ${wma_files}; do
 ffmpeg -i "${wma_file}" -q:a 0 "${wma_file}".mp3
 #uncomment rm below to delete original wma's
 #rm "${wma_file}"
done

Ich bevorzuge ffmpeg, weil es die Samplerate nicht ändert und keine temporäre Temp-Datei benötigt


0

Soundcoverter zeigt einen Fehler über das Windows Media-Modul und Python 2.7

Avconv hat gut funktioniert: avconv -i ./song.wma song.mp3


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.