web-dev-qa-db-ja.com

Ubuntuですべてのオーディオファイルを低品質に変換する

ウォークマンの320kbpsは重いので128kbpsに変換したいだけです。もちろん、ここでは0.5GB 320kbpsのアルバムは30分かかるので、8GBをすべて変換するのは非常に長いでしょう。 3GBを変換するのに6時間待つことはできますが、5GBがすでに128kbpsになっているため、8GBすべてが128kbpsから128kbpsに変換されるのを待つことはできません。したがって、ここでの質問は、UbuntuにWALKMANの[〜#〜] only [〜#〜] 320kbpsファイルを強制的に変換させる方法ですか?

1
dat tutbrus

指定したビットレートを超えているすべてのmp3ファイルを見つけて、それらをより低いビットレートに変換する方法は次のとおりです。実際のトランスコーディングにはクレメンタインまたはスクリプトの2つのオプションがあるため、開始する前に必ず最後まで読んでください。

  1. いくつかのパッケージをインストールする必要があります:

    Sudo aptitude install mp3info clementine lame gawk findutils
    
  2. すべての音楽ファイルとそのビットレートのリストを作成するには、/ path/to/your/musicを適切に置き換えた後、以下を実行します。

    find /path/to/your/music -iname '*.mp3' -print0 | xargs -0 mp3info -rm -p '%r:%F\n' > transcode.kbps
    

    ファイルtranscode.kbpsを見て、次のようになっていることを確認します(bitrate:filename):

    128:/path/to/your/music/dir1/file.mp3
    256:/path/to/your/music/dirX/fileX.mp3
    320:/path/to/your/music/dirY/fileA.mp3
    
  3. これが良さそうな場合は、このawkコマンドを実行して、指定されたビットレートより高いファイルのみを含むプレイリストを作成します(ビットレートが160を超えるすべてのファイルがm3uプレイリストに配置されます)。

    awk -F: '$1 > 160 { print $2; }' transcode.kbps > transcode.m3u
    

    ファイルtranscode.m3uをチェックして、問題がないことを確認します。良いときは、トランスコードする準備ができています!

Clementineトランスコードソリューション

  1. プレイリストメニューで、[プレイリストの読み込み]を選択し、transcode.m3uを開きます。
  2. ファイルのリストをクリックし、CTRL-Aを押して、プレイリスト内のすべてのファイルを選択します。
  3. プレイリストを右クリックして、コンテキストメニュー項目[トランスコーダにファイルを追加]を選択します。
  4. トランスコーダウィンドウで必要なパラメータを設定します。オプションを設定することを忘れないでください。おそらく、「ビットレート128kbps、固定ビットレート、標準品質に最適化する」のようなものが必要です。
  5. 「トランスコーディングの開始」をクリックします

トランスコーディングが完了するのを待ちます。

少なくともUbuntu 10.04でClementine 1.2を使用してClementineを使用する場合の主な問題は、古いファイルと一緒に新しいファイルを作成することだけです。音楽プレーヤーが接続されている場合、Clementineを使用すると音楽プレーヤーに直接トランスコードできると思います。

変換したいファイルはすでに音楽プレーヤーにあるので、新しいファイルがプレーヤーをいっぱいにする可能性があるため、問題が発生します。

スクリプトトランスコードソリューション

これは、transcode.m3ulameで処理してファイルをトランスコードし、古いファイルを削除するのはかなり簡単なスクリプトです。これをtranscode.shという名前のファイルに保存します。

#!/bin/sh -e
# transcode.sh -- read filenames from standard input and transcode files
while read file
do
    if lame -h "$file" "$file.new"
    then
            mv "$file.new" "$file"
    else
            rm -f "$file.new"
    fi
done

これで、次を実行できます。

sh transcode.sh < transcode.m3u

スクリプトはすべてのファイルをトランスコードし、lameによって新しいファイルが正常に作成されるたびに古いファイルを削除します。

Transcode.shスクリプトのla​​meコマンドパラメータを編集して、他の任意のトランスコーディングパラメータを実行できます。

2
RobertL