Convertir la bibliothèque de pistes WMA en MP3?

28

Je sais qu'il existe des options telles que Sound Converter pour les faire une piste ou un répertoire à la fois, mais y a-t-il des outils qui exploreront récursivement les sous-répertoires d'un répertoire et convertiront tous les WMA en MP3?

Je voudrais essentiellement le laisser libre sur mon ~ / Music et le laisser faire son travail sans que je doive lui donner manuellement un sous-répertoire à la fois.

Mike Crittenden
la source
À noter, si des fichiers WMA ont des DRM dessus, aucune application Linux ne pourra les décrypter.
Broam

Réponses:

17

MPlayer est probablement déjà installé. Assurez-vous également que vous avez boiteux:

sudo apt-get install mplayer lame

Ensuite, il y a deux façons de le faire, une version facile à lire et un script court et sale pour le faire:

Tous les wma doivent se trouver dans votre répertoire actuel. Créez un fichier appelé wmamp3 dans votre répertoire personnel (~ /) contenant:

#!/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 pour le rendre exécutable

sudo cp ~/wmamp3 /usr/bin pour le faire apparaître dans un endroit utile sur votre chemin

Tapez "wmamp3" pour exécuter votre conversion.


La version courte et sale (fait exactement la même chose que ci-dessus):

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
Rory Alsop
la source
Merci, mais j'en ai besoin d'un qui passe par les répertoires de manière récursive, car ils sont répartis dans de nombreux sous-répertoires de ~ / Music.
Mike Crittenden du
Vous pouvez facilement étendre le script pour effectuer une recherche de fichiers récursive - je referais probablement ce premier script en utilisant find, en redirigeant la sortie vers mplayer.
Rory Alsop
Cette réponse ne fonctionne pas pour moi en 2013. Cependant, cette réponse fonctionne: askubuntu.com/a/55469/36661
MountainX
1
La version rapide et sale fonctionne toujours en 2016 (le 14.04) si vous la remplacez -ao pcm -waveheaderpar -ao pcm:waveheader.
m00am
1
Bonne solution scriptée. Fonctionne sans modification en septembre 2019 sur xubuntu 19.04.
Balu
40

Installer Soundconverter Installer le convertisseur audio

et exécuter à Soundconverterpartir du lanceur ou du terminal

entrez la description de l'image ici

La conversion par défaut est de .oggchanger cela pour mp3passer au edit-> preferencestype de résultats. Formaten MP3 comme suit:

entrez la description de l'image ici

Cliquez sur ajouter un dossier, puis sélectionnez votre dossier de musique. Vous pouvez sélectionner le dossier de sortie dans la configuration des préférences ci-dessus avant de cliquer sur convertir.

J'espère que cela se fera en deux clics :)

Achu
la source
2
C'est certainement simple pointer et cliquer. +1 de moi :-)
Rory Alsop
Le problème avec cette solution est que SoundConverter fonctionne extrêmement lentement ou se bloque complètement lorsque plus de quelques centaines de chansons sont ajoutées à la fois, et ma bibliothèque a environ 5k.
Mike Crittenden
5k? wooo c'est beaucoup;) de toute façon cela dépend des performances de votre ordinateur. il se peut que vous deviez séparer ces fichiers. perso j'ai converti quelques centaines de chansons sans aucun gel :)
Achu
13

Mplayer et lame doivent être installés en premier:

sudo apt-get install mplayer lame

Créez ensuite le script ( page de référence ) et exécutez-le:

#!/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

On dirait qu'il fait exactement ce que vous voulez. Gardez à l'esprit que vous voudrez peut-être jouer avec les drapeaux boiteux pour vous assurer d'obtenir le niveau de qualité souhaité.

David Futcher
la source
3
Cela fonctionne toujours bien en 2013
MountainX
@David Futhcher, mentionner la référence est une bonne habitude :-), merci!
AjayKumarBasuthkar
2

Installez le Perl Audio Converter (pacpl): sudo apt-get install pacpl

Cette commande convertira tous les fichiers wma d'un répertoire donné en fichiers mp3 (en laissant les originaux intacts):

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

Si vous vous sentez risqué, vous pouvez ajouter l' --deleteoption de supprimer également les originaux:

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

Eric Mathison
la source
2

Je sais que c'est un peu vieux mais j'ai modifié le script montré par David Futcher. Les changements sont les suivants:

  • Utilisez à la /tmpplace du dossier actuel pour le fichier wav temporaire (cela a donné une grande accélération lorsque je l'ai utilisé pour convertir des fichiers sur une clé USB).

  • Supprimez les fichiers wma après leur conversion (espérons-le avec succès).

C'est ici:

#!/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
V10lator
la source
les deux dernières lignes peuvent être fusionnées :-) -o "${wma_file}".mp3 && rm "${wma_file}" "${tmp_file}" cela augmenterait légèrement la vitesse de traitement car un autre exécutable pour rm est absent.
AjayKumarBasuthkar
1

Pour ceux qui recherchent une version GUI capable de sélectionner certains types de fichiers: l'outil KDE soundKonverter https://github.com/HessiJames/soundkonverter demande quels types de fichiers doivent être ajoutés à la file d'attente de conversation.

Meilleure solution pour mon énorme collection de livres audio contenant des fichiers mp3 / ogg / wma.

smoking
la source
1

Voici mon édition du script Marko Haapala, utilisant 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

Je préfère ffmpeg, car il ne change pas la fréquence d'échantillonnage et il n'a pas besoin de fichier temporaire intermédiaire

Slavik
la source
0

Soundcoverter affiche une erreur sur le module Windows Media et Python 2.7

Avconv a bien fonctionné: avconv -i ./song.wma song.mp3

mapcuk
la source