CDを取り込んだwmaファイルをFLACフォーマットに一気に変換する。






あんまり書かない技術ネタです。




昔から、買いためていたCDを取り込んでいます。(リッピングといいます)




Windows7のパソコンを使っていますんで、標準のWindows Media Playerを使って取り込んでいます。




取り込んだCDの音質を落としたくないので、WMAロスレスフォーマットで保存しています。




WAVで保存という手もアリマスが、圧縮されないのでたいへんなディスクスペースが必要になってしまいます。




最近、PandaBoardというコンピュータ基板が余ったので、コレの活用方法を考えていたら、GeekBoxという




テレビにつなげて音楽やビデオ再生に使うソフトウエアをインストールできることがわかったので、これを実装してみました。




海外ユーザ向けの部分が強いですが、日本語対応も出来ているし、なかなか便利なのです。




ところがこのGeekBoxでは取りためたCDのWMAファイルが再生できません。ショック。




FLACという同じようにロスレスの圧縮フォーマットにしておけば自由に再生できると説明があります。




で、WindowsパソコンのHDDに保管してあるWMA音楽データファイルを一気にFLAC形式に変換することを決意しました。




いろいろ調べてみると以下のコマンドを使うことで、HDDのフォルダ以下にあるすべてのWMAファイルをFLACに変換できます。




for /f "tokens=*" %n in ('dir /b /s *.wma') do ffmpeg -i "%n" "%n.flac"




これはコマンドプロンプト上で実行するんですが、現在あるフォルダの位置から下のすべてのサブフォルダにあるWMAファイルを見つけ出します。(dir /s /b コマンド)




そこで見つけたファイル名を %n という変数に入れて ffmepegに入れて、FLACに変換します。




5/8追記:上記命令のうちFFMPEGの後ろにあるファイル名指定変数 %n ですが 「"」ダブルコーテーションでくくるのを追加しました。 FOR文で取得したパス、ファイル名にスペースが含まれているときにうまく動かないための対策です。




なお、前提として、FFMPEGというとっても便利なコンバートソフト(我がねこライブカメラでも多用して、お世話になってます)を




インストールしてある必要があります。




FFMPEGは賢くて指定する入力と出力のファイル名の情報からほとんどの場合、自動的に変換するべき作業を解釈して処理してくれます。




ここからはFFMPEGのインストール方法です。




まずはFFMPEGのWindows版のインストールなんですが、ダウンロードするソフトの圧縮形式が7zです。




7Zを解凍できないヒトは7ZIPプログラムをあらかじめダウンロードしてインストールしておきましょう。




Windows版32ビット用スタティック版




スタティックというのは、FFMPEGが利用する各種のソフトツールをWindowsのパソコンの中のソフトウエアに依存するのでなくて、無駄なようですがすべてFFMPEGのプログラムの中に一緒に組み込んでしまう。というものです。




このおかげでライブラリソフトウエアを準備することなく、このソフトウエアファイルのダウンロードだけですべてが事足ります。




32ビットではなくて64ビットのOSを使っているヒトはこちらから。




Windows版64ビット用スタティック版




で、ダウンロードしたファイルを適当なHDDの保管場所に解凍します。(うっかり消したりしなけりゃ、ダウンロードフォルダでもいい。)




インストール作業は不要なんですが、実行ファイルの場所をWindowsに教えてやる必要があります。




実行ファイルとはこんなファイル3点の入っているフォルダです。




ffmpeg.exe
ffplay.exe
ffprobe.exe





私の例ですとこんなパスで、実行ファイルの入っているbinフォルダが構成されています。




C:\Users\私のユーザ名\Downloads\ffmpeg-20121105-git-c995644-win64-static\ffmpeg-20121105-git-c995644-win64-static\bin




これをコピーして、PATHに追加します。PATHへの追加方法は以下を参考にどうぞ。




http://next.matrix.jp/config-path-win7.html




さて、うまく行くのかテストです。 コマンドプロンプトを開いてください。(黒い画面)




コマンドプロンプトでffmpegと入力すると以下のようなメッセージが表示されてエラーで終了するはずです。




G:\バックアップ\backup\new>ffmpeg
ffmpeg version N-50354-g2ecf564 Copyright (c) 2000-2013 the FFmpeg developers
built on Feb 27 2013 17:51:13 with gcc 4.7.2 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
le-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmp3
-enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --
--enable-libxavs --enable-libxvid --enable-zlib
libavutil 52. 17.103 / 52. 17.103
libavcodec 54. 92.100 / 54. 92.100
libavformat 54. 63.100 / 54. 63.100
libavdevice 54. 3.103 / 54. 3.103
libavfilter 3. 41.100 / 3. 41.100
libswscale 2. 2.100 / 2. 2.100
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 2.100 / 52. 2.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfi


Use -h to get full help or, even better, run 'man ffmpeg'

G:\バックアップ\backup\new>








ここまでくればもう、あとは実行あるのみです。




コマンドプロンプト上で変換したいWMAファイルのある最上位ディレクトリに移動して




くだんのコマンドを実行します。




上に示した一行のコマンドをコピーして貼り付けます。後はEnterをオスだけ。




ディレクトリツリーにある、WMAファイルを探し出して、一つ一つFLACに変換します。WMAはオリジナルとして残ります。




for /f "tokens=*" %n in ('dir /b /s *.wma') do ffmpeg -i "%n" "%n.flac" .




5/8追記:上記命令のうちFFMPEGの後ろにあるファイル名指定変数 %n ですが 「"」ダブルコーテーションでくくるのを追加しました。 FOR文で取得したパス、ファイル名にスペースが含まれているときにうまく動かないための対策です。(この記事の上のほうでも同じ追記をしてます。)





このコマンドをバッチファイルに組み込むときには、% を %% 二つに変更してください。




5/8追記: こんなことをやった動機ですが、WINAMPというとっても便利がソフトウエアがあってCDのリッピングなどはこれひとつで全部できていたんです。久しぶりにWINAMPをインストールして使おうとしたら取り込んだCDの曲目を自動検出する機能がうまく動かなくなってました。(WINAMPも更新をやめている) それでやむなく。





リッキーの夢は相変わらずです。。。





よかったらポチッとお願いします。


関連記事