2009年5月10日日曜日

マルチスレッド対応 lameフロントエンド (もどき) v2.3a


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


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





GWが終わったら、バグ取りと機能改善したものをリリースするよ(´・ω・`)、…と言って修正を開始し、とりあえず問題無く動くレベルになったので、リリースしてみた。

今回は、エンコードファイルのフィルタリング機能(ファイル名・ファイルサイズ・アクセス時間・更新時間で判別)と、スレッド数の上限の撤廃をメインに、いろいろ修正した。


以下テンプレ。

どういう処理をするのか、などの解説はこちら

特徴

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

今回の変更・更新

  • thread_mtlamef.rbを最適化。全行数が340行から40行に。
  • スレッド数を無限に(エンコードするファイルの数だけ)増やせるようにした。
  • 特定の文字列を含んだファイルやディレクトリを参照すると、強制終了する問題を一つ修正。
    →未発見のものが他にも沢山ありそうな気が...
  • エンコードファイルフィルタリングを出来るようにした(ファイル名、ファイルサイズ、最終アクセス日時、最終更新日時)
  • ディレクトリを変更する(cdする)時に、範囲外のディレクトリを選択すると必ず落ちる問題を解決。
  • ディレクトリ選択時に、"/"でルートディレクトリに移動できない問題を修正。

解決していない問題

  • mp3ファイルの再エンコードが終わってからでないとwavファイルのエンコードが開始できない。
  • ディレクトリごとにしかエンコードできない(ファイルを個別にエンコードすることはできない)
  • CUIである。
  • aiffなどの形式に対応していない。
  • サブディレクトリの数が多いと、マシンスペックによってはディレクトリ一覧表示処理が遅くなる(ディレクトリ数を確認するため)
  • Windows用実行ファイルの起動に、5~10秒ほどかかってしまう。
  • バグが取りきれていない可能性が…(´;ω;`)ウッ…

必ず必要なもの



プログラム本体のダウンロードはこちらから。

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


スレッド数の制限が無くなった、ということで、同時に64スレッド実行してみた。

見事にタスクマネージャーがlameだらけに。
エンコテストなので、同じ曲を複数回リネームしてエンコードしているが、気にしないで欲しいんだ…('A`)

0 件のコメント: