WMAトラックのライブラリをMP3に変換しますか?


28

サウンドコンバーターなど、一度に1つのトラックまたはディレクトリを実行するオプションがありますが、ディレクトリのサブディレクトリを再帰的にクロールし、すべてのWMAをMP3に変換するツールはありますか?

私は基本的に〜/ Musicでそれを解き放ち、一度に1つのサブディレクトリを手動で指定することなく、それを実行させたいと思います。


現時点で、WMAファイルにDRMが含まれている場合、Linuxアプリケーションはそれらを復号化できません。
ブラム

回答:


17

MPlayerはすでにインストールされている可能性があります。また、足の不自由さを確認してください:

sudo apt-get install mplayer lame

次に、2つの方法があります。読みやすいバージョンと、短くて汚いスクリプトです。

すべての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にパイピングします。
ロリーオルソップ

この回答は2013年には機能しません。ただし、この回答は機能します:askubuntu.com/a/55469/36661
MountainX

1
あなたが交換した場合、クイックと汚いのバージョンはまだ(14.04で)2016で動作-ao pcm -waveheaderして-ao pcm:waveheader
m00am 16

1
優れたスクリプトソリューション。xubuntu 19.04の2019年9月に変更なしで動作します。
バル

40

Soundconverterをインストールする サウンドコンバーターをインストールする

Soundconverterランチャーまたはターミナルから実行

ここに画像の説明を入力してください

デフォルトの変換は、.oggこれを結果のタイプの下にmp3行くように変更しedit-> preferencesます。Format次のようにMP3に:

ここに画像の説明を入力してください

[フォルダの追加]をクリックして、音楽フォルダを選択します。変換をクリックする前に、上記の設定で出力フォルダーを選択できます。

これが2回のクリックで行われることを願っています:)


2
これは確かにシンプルなポイントアンドクリックです。私からの+1 :-)
ロリーオルソップ

このソリューションの問題は、一度に数百曲以上が追加されたときにSoundConverterのパフォーマンスが極端に遅くなるか、完全にフリーズし、私のライブラリには約5kあることです。
マイク

5k?とにかく、それはコンピューターのパフォーマンスに依存します。それらのファイルを分離する必要があるかもしれません。個人的な私はフリーズせずに数百曲を変換しました:)
Achu

13

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

まさにあなたが望むことをするように見えます。必要な品質レベルを確実に得るために、ラメフラグをいじる必要がある場合があることに注意してください。


3
2013
MountainX

@David Futhcher、参照について言及するのは良い習慣です:-)、ありがとう!
-AjayKumarBasuthkar

2

Perl Audio Converter(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

これは少し古いことは知っていますが、David Futcherが示したスクリプトを変更しました。変更点は次のとおりです。

  • /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

最後の2行はマージできます:-) -o "${wma_file}".mp3 && rm "${wma_file}" "${tmp_file}" これにより、rmの別のexecがないため、処理速度がわずかに向上します。
-AjayKumarBasuthkar

1

特定のファイルタイプを選択できるGUIバージョンをお探しの場合:KDEツールのsoundKonverter https://github.com/HessiJames/soundkonverterは、どのファイルタイプを会話キューに追加するかを尋ねます。

mp3 / ogg / wmaファイルを含む私の膨大なAudiobookコレクションに最適なソリューション。


1

以下は、ffmpegを使用したMarko Haapalaスクリプトの私のエディションです。

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は正常に動作しました:avconv -i ./song.wma song.mp3


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.