Перетворити бібліотеку треків WMA в MP3?


28

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

Я в основному хотів би відпустити його на моєму ~ / Music і дозволити йому робити свою справу, не будучи мені вручну вводити по одному підкаталогу за один раз.


Як зауважимо, якщо будь-які файли WMA мають на них DRM, жодна програма Linux не зможе їх розшифрувати.
Брам

Відповіді:


17

MPlayer, ймовірно, буде вже встановлений. Також переконайтеся, що у вас кульгавий:

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

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

Ви можете легко розширити скрипт, щоб здійснити рекурсивне полювання на файл - я, мабуть, повторював би цей перший скрипт, використовуючи find, переносячи вихід на mplayer.
Rory Alsop

Ця відповідь не працює для мене у 2013 році. Однак ця відповідь працює: askubuntu.com/a/55469/36661
MountainX

1
Швидка та брудна версія все ще працює у 2016 році (14.04), якщо ви заміните її -ao pcm -waveheaderна -ao pcm:waveheader.
m00am

1
Гарне сценарійне рішення. Працює без змін у вересні 2019 року на xubuntu 19.04.
Балу

40

Встановіть Soundconverter Встановіть звукоконвертер

і запустити Soundconverterвід пускового пристрою або терміналу

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

Конверсія за замовчуванням .oggзмінює цю mp3функцію на edit-> preferencesтип результатів. Formatв MP3 як слід:

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

Клацніть на Додати папку, а потім виберіть папку з музикою. Ви можете вибрати папку виводу у наведеній вище конфігурації уподобань, перш ніж натиснути на конвертувати.

Сподіваюся, це буде зроблено двома клацаннями :)


2
Це, звичайно, проста точка і клацання. +1 від мене :-)
Rory Alsop

Проблема цього рішення полягає в тому, що SoundConverter виконує надзвичайно повільно або просто повністю застигає, коли додається більше декількох сотень пісень одночасно, а в моїй бібліотеці близько 5 к.
Майк Кріттенден

5 к? wooo, це багато;) все одно це залежить від продуктивності вашого комп’ютера. можливо, вам доведеться розділити ці файли. я особисто перетворив пару сотень пісень без жодних заморожувань :)
Achu

13

Mplayer та кульгавий повинні бути встановлені спочатку:

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

Схоже, це робить саме те, що ви хочете. Майте на увазі, що ви можете захотіти познайомитися з кульгавими прапорами, щоб забезпечити бажаний рівень якості.


3
Це все ще добре працює у 2013 році
MountainX

@David Futhcher, згадуючи посилання - приємна звичка :-), дякую!
AjayKumarBasuthkar

2

Встановіть аудіо-конвертер Perl (pacpl): sudo apt-get install pacpl

Ця команда перетворить усі файли wma в заданому каталозі в mp3-файли (залишивши оригінали недоторканими):

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

Якщо ви відчуваєте себе ризиком, можете додати --deleteможливість також видалити оригінали:

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


2

Я знаю, що це трохи старе, але я змінив сценарій, показаний Девідом Футчером. Зміни:

  • Використовуйте /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

Останні два рядки можна об'єднати :-) -o "${wma_file}".mp3 && rm "${wma_file}" "${tmp_file}" це брівно збільшило швидкість обробки, оскільки інший виконавець для rm відсутній.
AjayKumarBasuthkar

1

Для тих, хто шукає версію GUI, яка здатна вибрати певні файли: інструмент KDE soundKonverter https://github.com/HessiJames/soundkonverter запитує, які файли слід додати до черги розмов.

Найкраще рішення для моєї величезної колекції Audiobook, що містить файли mp3 / ogg / wma.


1

Ось моє видання сценарію Marko Haapala, використовуючи 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

Я віддаю перевагу ffmpeg, тому що він не змінює частоту вибірки і йому не потрібен проміжний тимчасовий файл


0

Soundcoverter показує помилку щодо модуля Windows Media та Python 2.7

Авконв працював чудово: avconv -i ./song.wma song.mp3


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.