2016年6月5日日曜日

WAVE→mp3、flac変換スクリプト


WAVEファイルとして保管していた音楽データをmp3とflacに変換するスクリプトを作った。
メタデータを予め冒頭部で準備しておき、while文で一気にmp3とflacを作成する。
キモは下記青字部の、「ifile01」〜「ifilexx」の変数名を作って、さらにその値を参照するところ。
 `eval echo '$'"ifile"$track`$ifile01
などとなり string_ifile変数に代入される。 evalする時に$が先に解釈されないようシングルコーテーションでくくっておくことが必要。
Windowsだったら変数を配列にするしかないと思うが、シェルスクリプトではこんなことも出来る。最初から配列にしておけば苦労しなかったが、シェルスクリプトの勉強になった。

スクリプトのファイル名「ffmpeg_wav.sh」
#!/bin/bash
music_path="/media/mobile/FAT32/Sound/○○"
m_ar="アーチスト名"; m_al="アルバム名"; m_da="2000"; m_ge="JPop"
tracks="14"
ifile01="01 曲1.wav";     m_ti01="曲1";
ifile02="02 曲2.wav";         m_ti02="曲2";

 (中略)
ifile14="14 曲14.wav";     m_ti14="曲14";

i=1
while [ $i -le $tracks ]
do
  track=`printf "%02d" $i`
  #インプットファイル名、タイトル名取り出し
  string_ifile=`eval echo '$'"ifile"$track`
  string_title=`eval echo '$'"m_ti"$track`
  #mp3変換
  ffmpeg -i "$music_path/$string_ifile" -acodec libmp3lame -ab 192k -ar 44100 -metadata "artist"="$m_ar" -metadata "album"="$m_al" -metadata "genre"="$m_ge" -metadata "date"="$m_da" -metadata "track"="$i" -metadata "title"="$string_title" "$music_path/$track"_"#$string_title.mp3"
  #flac変換
  ffmpeg -i "$music_path/$string_ifile" -acodec flac -metadata "artist"="$m_ar" -metadata "album"="$m_al" -metadata "genre"="$m_ge" -metadata "date"="$m_da" -metadata "track"="$i" -metadata "title"="$string_title" "$music_path/$track"_"$string_title.flac"
  i=`expr $i + 1`
done

音楽CDからのリッピングにはAsunderを使用。使い勝手はまずまずだが、CDDBからのデータ取得が1回しかできなかった。

0 件のコメント:

コメントを投稿