Конвертировать библиотеку треков WMA в MP3?

Конвертировать библиотеку треков WMA в MP3?

Я знаю, что существуют такие опции, как Sound Converter, позволяющие делать это по одной дорожке или каталогу за раз, но есть ли какие-либо инструменты, которые будут рекурсивно сканировать подкаталоги каталога и конвертировать все WMA-файлы в MP3?

По сути, я хотел бы выпустить его в свой ~/Music и позволить ему делать свое дело, без необходимости вручную указывать ему один подкаталог за раз.

решение1

УстановитьЗвуковой преобразователь Установить звуковой конвертер

и запустить Soundconverterиз лаунчера или терминала

введите описание изображения здесь

По умолчанию преобразование .oggизменяется mp3на edit-> preferencesформат FormatMP3, как показано ниже:

введите описание изображения здесь

Нажмите на добавить папку, а затем выберите папку с музыкой. Вы можете выбрать выходную папку в конфигурации предпочтений выше, прежде чем нажать на конвертировать.

Надеюсь, это можно будет сделать в два клика :)

решение2

MPlayer, скорее всего, уже установлен. Также убедитесь, что у вас есть lame:

sudo apt-get install mplayer lame

Тогда есть два способа сделать это: простая для чтения версия и короткий и грязный скрипт для этого:

Все wma должны быть в вашем текущем каталоге. Создайте файл с именем wmamp3 в вашем домашнем каталоге (~/), содержащий:

#!/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чтобы сделать его исполняемым

sudo cp ~/wmamp3 /usr/binчтобы положить его в какое-нибудь полезное место на вашем пути

Введите «wmamp3», чтобы запустить конвертацию.


Короткая и грубая версия (делает то же самое, что и выше):

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

решение3

Сначала необходимо установить Mplayer и lame:

sudo apt-get install mplayer lame

Затем создайте скрипт (справочная страница ) и выполните его:

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

Похоже, он делает именно то, что вам нужно. Имейте в виду, что вам, возможно, придется повозиться с флагами lame, чтобы убедиться, что вы получите желаемый уровень качества.

решение4

Я знаю, что это немного устарело, но я модифицировал сценарий, показанный Дэвидом Футчером. Изменения таковы:

  • Использовать /tmpвместо текущей папки временный wav-файл (это дало значительное ускорение, когда я использовал это для конвертации файлов на USB-накопителе).

  • Удалите файлы wma после их (надеюсь, успешного) преобразования.

Вот:

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

Связанный контент