web-dev-qa-db-ja.com

Mass .flac-> .mp3トランスコーディング:ID3タグ情報を保持するシェルスクリプトを作成するにはどうすればよいですか?

ここ数週間、私は.flac-> .mp3トランスコーディングへのかなり「実践的な」アプローチから、はるかに「設定して忘れる」アプローチに移行しました。

最初のステップは、GUIフロントエンド(LAMEプラグインを備えたAudacity)の使用をやめ、代わりに私が概説した方法を使用することでした ここ

2番目のステップは、コマンドループが再帰的に機能するように指示するbashシェルスクリプトを見つけることでした。これにより、.flacファイルを含む多くのサブディレクトリを持つディレクトリを1つの簡単なステップでトランスコードできます。その answer はaskubuntu.comのユーザーによって提供されました。

ここで、ID3タグ情報が保持されるようにさらに改良する方法を学びたいと思います。上記のストリップID3タグデータにリンクされたメソッドは、最小限のままにします(つまり、タイトルフィールドのみが残ります)。

誰かがそのようなシェルスクリプトを書く方法を教えてもらえますか?


シェルスクリプトは次のように更新されました。

#!/bin/bash
file="$1"
flac -cd "$file" | lame --preset fast extreme - "${file%.flac}.mp3"
id3cp "$file" "${file%.flac}.mp3"

find . -name '*.flac' -exec ~/bin/flac2mp3 '{}' \; in〜/Desktop/stackは、次の出力を提供します。

01 - Amon Tobin - Chomp Samba.flac: done         
LAME 3.98.4 64bits (http://www.mp3dev.org/)
Using polyphase lowpass filter, transition band: 19383 Hz - 19916 Hz
Encoding <stdin> to ./01 - Amon Tobin - Chomp Samba.mp3
Encoding as 44.1 kHz j-stereo MPEG-1 Layer III VBR(q=0)
Parsing ./01 - Amon Tobin - Chomp Samba.flac: done.  Copying to ./01 - Amon Tobin - Chomp Samba.mp3: done

id3info元の.flacと結果の.mp3の場合、それぞれ次のようになります。

*** Tag information for 01 - Amon Tobin - Chomp Samba.flac

(つまり、何もない);

*** Tag information for 01 - Amon Tobin - Chomp Samba.mp3
*** mp3 info
MPEG1/layer III
Bitrate: 128KBps
Frequency: 44KHz

.flacには間違いなくタグ情報があります。 EasyTAGを開くことでこれを確認できます。 EasyTAGはこれを「FLACVorbisタグ」と呼びますが、.mp3の場合は「ID3タグ」と呼びます。これは問題ですか?

9
boehj
#!/bin/sh

file="$1"
outfile=${file%.flac}.mp3

eval $(metaflac --export-tags-to - "$file" | sed "s/=\(.*\)/='\1'/")

flac -cd "$file" | lame --preset fast extreme \
        --add-id3v2 --tt "$TITLE" --ta "$ARTIST" --tl "$ALBUM" \
        --ty "$DATE" --tn "$TRACKNUMBER" --tg "$GENRE" \
        - "$outfile"
7
Kambus

Mp3fsを使用してflacをmp3に一括エンコードする方法

プログラムを使用してflacファイルをmp3に変換する代わりに、mp3fsを使用してそれらを仮想mp3として表示したり、コピージョブをキューに入れることができるプログラムを使用したりできます。それは私にとって素晴らしくうまく機能します。

Mp3fsとultracopierをダウンロードしてインストールします。

Sudo apt-get install mp3fs ultracopier

実行するmp3fsごとにflacディレクトリとmp3ディレクトリのペアを作成します。私はデュアルコアCPUを持っているので、2つ実行します。 flacファイルがあるパーティションにflacディレクトリを保持している場合は、それらをすばやく移動できます。そのパーティションは、私のシステムでは「ストレージ」と呼ばれています。

cd /media/Storage
mkdir mp3fs mp3fs/flac_1 mp3fs/mp3_1 mp3fs/flac_2 mp3fs/mp3_2

コマンドラインから、または/etc/fstabにディレクトリを追加することでディレクトリをマウントできます。マウント時に仮想mp3のビットレートとエンコードアルゴリズムを構成することもできます。私は320kbpsの固定ビットレートのmp3が欲しいのですが、ラメは可能な限り最高のmp3を生成するのに必要なすべての時間を費やす可能性があります。

コマンドライン:

mp3fs -b 320 -oquality=0 /media/Storage/mp3fs/flac_1 /media/Storage/mp3fs/mp3_1 -o allow_other,ro
mp3fs -b 320 -oquality=0 /media/Storage/mp3fs/flac_2 /media/Storage/mp3fs/mp3_2 -o allow_other,ro

ヒューズが文句を言うなら、

フューザーマウント:/etc/Fuse.confを開くことができませんでした:アクセスが拒否されました
fusermount:オプションallow_otherは、etc /Fuse.confで「user_allow_other」が設定されている場合にのみ許可されます

次に、user_allow_other/etc/Fuse.confオプションのコメントを解除するか、次のコマンドで読み取り可能にします。

Sudo chmod 644 /etc/Fuse.conf

または/etc/fstabから:

mp3fs#/media/Storage/mp3fs/flac_1 /media/Storage/mp3fs/mp3_1 Fuse user,ro,allow_other,bitrate=320,quality=0 0 0
mp3fs#/media/Storage/mp3fs/flac_2 /media/Storage/mp3fs/mp3_2 Fuse user,ro,allow_other,bitrate=320,quality=0 0 0

ディレクトリを/etc/fstabに追加した後、を使用してそれらをマウントできます。

Sudo mount -a

完了!ウルトラコピー機を起動します。 gnomeパネルまたは使用しているものにインジケーターアイコンが配置されます。それをクリックし、[コピーを追加]を選択します。 2つのコアを使用するために2回実行しました。ファイルブラウザを使用して、いくつかのflacをflac_1に移動します。 mp3_1ディレクトリに移動し、mp3をウルトラコピーウィンドウの1つにドラッグして、コピーキューを開始します。 Ultracopierはファイルの宛先を尋ねます。これで、1つのコアがflacのバッチをmp3にエンコードするのに忙しくなりました。

他のコアを使用するには、flacファイルをflac_2に移動し、mp3をmp3_2から2番目のウルトラコピーウィンドウにドラッグします。

更新:ウルトラコピーの代わりに、現在MiniCopierを使用していますが、少し使いやすくなっています。以下のコメントを参照してください。

1
Arjan Drieman

id3cp FLACはID3を使用しないため、機能しません。代わりにVorbisタグを使用します。

avconvには、変換を通じてタグを維持するオプションがあります。それは一種の気まぐれで、 コーデックの組み合わせに応じた値 ですが、あなたの場合(バージョン9.16-6)では次のように機能します:

avconv -i in.flac -map_metadata 0:g:0 out.mp3

これをフォルダ内のすべてのFLACファイルに(再帰的に)適用するのはこれと同じくらい簡単です:( bashを使用)

for f in */**/*.flac; do
  avconv -i "${f}" -map_metadata 0:g:0 "`echo "${f}" | sed -e s/flac$/mp3/`";
done

avconvは自動的にlameを使用することに注意してください。品質などを管理するためのオプションがさらにあります。小切手 man avconv詳細については。

0
Raphael