2009年1月6日火曜日

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

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


ここより下の情報は古いです…(´・ω・`)スマソ



冬休みもそろそろ終了ということで、頭の運動になるかと思い「lameのエンコードをマルチスレッド処理するプログラム v1.1」を更に改良(?)してみた。

特徴

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

1.1からの変更点

  • カレントディレクトリの指定を可能にした。
  • 同じディレクトリを複数回登録しないようにした。
  • 一部のオプションをlameのデフォルト設定で動かせるようにした。
  • Windows版とUnix版の違いを無くした。
  • lameのパスにスペースが含まれているとうまく処理できない問題を修正。

解決していない問題

  • Unix系OSでの拡張子の大文字・小文字問題(.WAV、.wAv等が処理できない)
  • mp3ファイルの再エンコードが終了しないとwavファイルのエンコードを開始できない。
  • mp3の再エンコードのみを行うことができない。
  • エンコードに失敗しても「全ての処理が完了しました」と出る。
今回からは、Windowsでは全てOne-Click Ruby Installerを使用した。 One-Click Ruby Installer for Windowsは以下で入手できる。 http://rubyforge.org/frs/?group_id=167
インストール後の「ディスク上のサイズ」が150MB近くになるんだよな…これ。サイズ自体は80MB無いのに… それでも、これ無いと動かないしな…
使用方法やRubyバイナリのインストール方法はv1.0と同じで…
http://projectzero-swb.blogspot.com/2008/12/lame.html

「lameのエンコードをマルチスレッド処理するプログラム」本体は、いつも通りゲイツドライブからダウンロードできるようにした。  
旧バージョンの管理が大変なので、全てMulti thread Media Encoder Frontendに纏めました。
http://mtmef.g.hachune.net/

解決できていない問題がたいして減っていない件。 …まぁいいか。
マルチスレッドCPUはPentium4があったが、マルチコアCPUはPhenom x4が初めてなんだよな…そういえば。
全然知識が無い時に、何故CPU使用率が50%で固定になるのか、悩んだんだよなぁ…'`,、('∀`) '`,、
BIOSでHyper-Threadingをoffにしたらやたら不安定になったりとか…

最近は「多コア化」がメインなんだよな… マルチスレッド対応してないと、エンコードとかはどんどん辛くなっていきそうだな… Cellみたいなヘテロコアを有効に使うアプリケーションの開発って、やはり難しいのだろうか…?

GUIで作りたいな、という希望が自分の中にあったりするが… CUIのままじゃ「lameフロントエンドもどき」…だしなぁ…

0 件のコメント: