2009年7月25日土曜日

マルチスレッド対応 マルチフロントエンド(もどき) を作ってみた

だいぶ前、マルチスレッド対応 lameフロントエンド(もどき)を更新すると言って早一ヶ月…。
ようやくそれなりのモノが完成したので公開することにしてみることにした。

以前作っていたマルチスレッド対応 lameフロントエンド(もどき)を元に、

・機能と安定性、起動速度の向上
・lame(mp3)以外のエンコーダー以外にも対応(設定ファイルで追加可能、NeroAacEnc(m4a)ogg Vorbisの動作を確認)
・コマンドラインで動作させられるものであれば、音楽だけでなく、動画等のエンコーダーにも対応させることが可能になった…かもしれない
・一応オブジェクト指向風味に

…などの改善を行った。
(元にしたと言っても、ソースは1から書き直していたりするのだが…)

その他にも、

・手軽にマルチスレッド化でき、どんなエンコーダーでもマルチコアCPUを有効に使える
・ファイルの名前、サイズ、最終アクセス日時、最終更新日時でフィルタリングをかけ、対象ファイルを絞り込んだりできる
・相変わらずディレクトリ単位での一括エンコードに特化
・結構詳しいエンコードログを記録できる(バイナリ統一すればベンチマークとしても使える…かも?)
・実行ファイルのアイコンにディレクトリ(フォルダ)アイコンをドラッグアンドドロップすると、規定の設定で一発エンコードすることが可能

などといった特徴がある…と思う(´・ω・`)


プログラム本体は以下からダウンロードできます。
http://mtmef.g.hachune.net/

※09.07.27 neroAacEncのコマンドラインオプションが、"-b 256000"ではなく"-b 256"となっている問題を修正しました。
ついでに、ogg Vorbisでのエンコードにも対応させました。
これで、neroAacEncとogg Vorbisをマルチスレッド化できる…ハズ。

※09.08.07 lame ABRのオプションの"--a"とすべきところが、"-a"となっている問題、pdcurses.dllが見つからないと言われる問題を修正しました。
設定ファイルの"-a"となっているところを"--a"にするだけでも回避できます。

※09.08.15 追記
ブログだといろいろ見づらい上に分かりづらいので、一つに纏めてみた
ついでに使い方の解説もしています。
最新版のダウンロードはこちらのページから行えます。
http://mtmef.g.hachune.net/



デフォルトの設定ファイルでは、lame(mp3)かneroAacEnc(m4a)、ogg Vorbisのいずれかのバイナリが必要です。
lameのWindows用バイナリは以下からダウンロードすることが出来ます。
http://www.rarewares.org/mp3-lame-bundle.php
neroAacEncのバイナリは以下からダウンロードすることが出来ます。
http://www.nero.com/jpn/technologies-aac-codec.html
ogg Vorbisのバイナリは以下からダウンロードすることが出来ます。
http://www.rarewares.org/ogg-oggenc.php


フォルダごとに適当にドラッグアンドドロップで登録して、実行するとこんな感じになる。

4つを別々に登録したので、コマンドプロンプトのウィンドウが4枚開いているが、
一つのウィンドウの処理が終わるまで待ち、それが終わった瞬間次の処理に移るようにしているので、
ファイルの整合性に問題が出ることは無い。
ドラッグアンドドロップで大量に登録しても、処理待ち状態になって、他の処理が終了すれば自動的に次の処理が開始することになるので、指定されたスレッド数以上の処理をすること無く処理を行う事が出来る。


5月位からすこーしずつ作り続けて、ようやくここまで…(ヽ´ω`)
後は、ディレクトリ選択や設定変更をGUI上で出来るようにすれば…
ドラッグアンドドロップでのエンコードに対応したんで、そろそろ(もどき)外してもいいかな…('A`)

それにしても、今マルチスレッド対応 lameフロントエンド(もどき)のソースを見ると、こりゃ汚いな…と。
非効率な上、やたらコケるという…
正直、あんなもんリリースしててごめんなさいと言わざるを得ない気が…(´・ω・`)

0 件のコメント: