web-dev-qa-db-ja.com

大規模なALACライブラリをMP3に変換する最も効率的な方法

私はメインの音楽ライブラリとして使用しているalacにリッピングされたCDの大規模なライブラリを持っています。このライブラリのコピーをポータブルデバイス用のvbrmp3に変換したいのですが、ラップトップでこれを行う必要はありません。約650Gbの音楽があり、ラップトップを置いたままにするために多くの場所に移動します。しばらくの間、ライブラリ全体を変換する必要がありました。私の友人は(Debian Squeezeを実行している)サーバースペースを持っており、私のライブラリを変換することで電力を供給するために1、2週間貸してくれます。これを実行するための最良のユーティリティまたは方法は何でしょうか。シングルソングやシングルアルバムの場合、私は次のようなものを使用します

#!/bin/sh
for file in "$@" ; do
name=`echo "$file" | sed -e "s/.mp4$//g"`
ffmpeg -i "$file" -ac 2 -f wav - | lame --preset standard - "$name.mp3"
done

これを行うにはもっと効率的な方法があると確信しています。私の音楽は現在「アーティスト-アルバム-トラック」として編成されており、これを反映した出力が必要です。

5
Leda

以下の例では、~/Music/がソースディレクトリとして想定されています。


convert.shスクリプトを作成します。

$ cat > convert
#!/bin/bash
input=$1
output=${input#.*}.mp3
ffmpeg -i "$input" -ac 2 -f wav - | lame -V 2 - "$output"
[Ctrl-D]
$ chmod +x convert
  • 別の場所を出力に使用する場合は、ffmpegの前にこれを追加します。

    output=~/Converted/${output#~/Music/}
    mkdir -p "${output%/*}"
    

moreutilsからparallelを使用して変換します。

$ find ~/Music/ -type f -name '*.mp4' -print0 | xargs -0 parallel ./convert --

異なる構文を使用するGNU parallelと混同しないでください。

$ find ~/Music/ -type f -name '*.mp4' | parallel ./convert
4
user1686

GNU Parallelを使用すると、スクリプトも必要ありません。

find ~/Music/ -type f -name '*.mp4' | parallel ffmpeg -i {} -ac 2 -f wav - \| lame -V 2 - {.}.mp3

Ffmpegのバージョンがlibmp3lameを有効にしてコンパイルされていると仮定すると、lameを使用せずに同じことを実行できます(ほとんどのバージョンは有効です)。

find ~/Music/ -type f -name '*.mp4' | parallel ffmpeg -i {} -c:a libmp3lame -q:a 2 {.}.mp3

Findコマンドで-inameの代わりに-nameを使用して、大文字と小文字を区別しない一致を取得することもできます(したがって、すべての* .mp4と* .MP4、およびすべての大文字と小文字のバリエーションが取得されます)。また、2番目のバージョンでは-ac 2は厳密には必要ありません。 MP3はとにかく最大2チャンネルしかサポートできないので、ffmpegは必要に応じてオーディオを自動的に2チャンネルに変換します。これにより、モノラルオーディオに無意味なチャンネルを追加する必要がなくなります。

MP3のエンコードに関する基本的な情報については このffmpeg wikiページ を、より詳細な情報については このhydrogenaudioガイド を参照してください。

Sshできる他のマシンがある場合(たとえば、ラップトップは夜間に利用可能です)GNU ParallelはそれらのCPUも使用できます。-trcの例を見てください(転送するには)ファイル)および--retries(日中にラップトップが不在になっていることに対処するため) http://www.gnu.org/software/parallel/man.html#example__using_remote_computers を参照してください。

詳細については、紹介ビデオをご覧ください: http://www.youtube.com/watch?v=OpaiGYxkSuQ

2
Ole Tange