2009年1月26日月曜日

LAMEをマルチスレッドで実行するプログラムを作ってみた v1.3a

09.07.26 追記
Multi thread Media Encoder Frontend(マルチスレッド対応 マルチフロントエンド(もどき))をリリース。
マルチスレッド対応 lameフロントエンド (もどき)より、
高性能で安定性も高い…と思う。
GUIも付いたので、マウスだけでも操作できます。
http://mtmef.g.hachune.net/




ようやくいろんなレポートが片付いてきたので、lameをマルチスレッドで実行するプログラム v1.2を修正・改良してみた。
今回は、ログの作成機能を主に追加してみた。

特徴

  • lameのエンコード処理を並列して行うことができ、Corei7などのマルチコア・マルチスレッドCPUも有効に使える。
  • ディレクトリごとに一気にエンコードが可能。
  • 一度設定するだけで2回目以降の設定は不要。
  • wav→mp3変換とmp3→mp3変換に対応。
  • Rubyがインストールしてあれば、Windows、Unix、Linux、MacOSXなどの、どんなOSでも使用することができる。
  • プロセスを多重起動しているだけなので、音質に影響するということがない。
  • 大量のファイルを登録しても、登録エラーなどが発生しない(ハズ)
  • エンコードのログを残せる。
  • エンコードにかかった時間を計測できるようにしたので、ファイルやlameバイナリを統一すればベンチマークとして使える…かもしれない。

1.2からの変更点

  • ログを残せるようにした。
  • エンコードにかかった時間を計測できるようにした。
  • エンコードに失敗した場合、通知するようにした。
  • 同じファイルを2回以上エンコードしてしまうかもしれない問題を修正。
  • その他、様々な問題を修正。

解決していない問題

  • Unix系OSでの拡張子の大文字・小文字問題(.WAV、.wAv等が処理できない)
  • mp3ファイルの再エンコードが終了しないとwavファイルのエンコードを開始できない。
  • mp3の再エンコードのみを行うことができない。
  • ディレクトリ名を打ち込むのが果てしなく面倒くさい。 … v1.4で解決する予定。
試しに暴走Pの2ndアルバム、「少女の空想庭園」を、Phenomx4搭載のはつねサーバで、全曲(-v -V 0)でエンコードした結果…
1スレッド: 158秒
2スレッド並列: 72秒
3スレッド並列: 45秒
4スレッド並列: 33秒
5スレッド並列: 31秒
6スレッド並列: 31秒
7スレッド並列: 35秒
8スレッド並列: 35秒

バックグラウンドで仮想マシンやら何やら、大量に動いている状態で実験したので、ベンチマークの結果としては微妙だが、 クアッドコアの性能が十分に生かされている………と思う。

しかし、その過程で、「鏡音レンの暴走.wav」がエンコードできないという問題が発生。 …lameのshift-jis ダメ文字問題のことをすっかり忘れていた…

今回も、Windowsでは全てOne-Click Ruby Installerを使用。 One-Click Ruby Installer for Windowsは以下で入手できる。
http://rubyforge.org/frs/?group_id=167
英語のインストーラーしか無いが、全部デフォルト設定でおkなので困ることはないと思う。


プログラムの本体はいつも通りゲイシドライブからダウンロードできるようにしてみた。

旧バージョンの管理が大変なので、全てMulti thread Media Encoder Frontendに纏めました。
http://mtmef.g.hachune.net/

0 件のコメント: