スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
(この一行は、各記事の最後に固定表示するサンプルです。テンプレートを編集して削除もしくは非表示にしてください。)

#21 ニッチな?MP3の自動再エンコード・ツール

rogo1b.jpg

とても珍しく、ソフトウェアで小細工の巻。

MP3再エンコード・ツール「MP3 Re-enc」を作った。

ダウンロード
ver.1.0 MP3Reenc10.rar 初期版
ver.1.1 MP3Reenc11.rar エンコードCBR→VBR対応へ修正
ver.1.2 MP3Reenc12.rar 2重起動を無効化した
ver.1.3 MP3Reenc13.rar WAV~MP3展開作業のフォルダーを指定可能に。その他バグ修正
ver.1.4 MP3Reenc14.ZIP 使用中(出力中)のファイルを処理してしまいエラーとなるバグ修正。[WinXP対応]
ver.1.5 MP3Reenc15.ZIP ini設定に「元のMP3ファイル削除」指定を追加。[WinXP対応]
ver.1.6 MP3Reenc16.ZIP Windows7環境での起動エラーを修正。[WinXP, Win7対応]
ver.1.7 MP3Reenc17.ZIP 1.6でチープになった文字仕様プログレスバーをグラフィカルへ戻した。[WinXP, Win7対応]
ver.1.7.3 MP3Reenc173.ZIP 不具合は無いがプログレスバー表示部分の処理を変更。[WinXP, Win7対応]

今更VB6だじぇ! 今更32bitだじぇ!
実行すると、設定に従い特定のファイル名を再エンコードして閉じる。
ニッチな用途かも知れないが、ある環境下ではとても重宝する・・・ハズ。

他の必要ファイル:
Visual Basic 6.0 SP6 ランタイムライブラリ (導入する)・・・Windows7 では不要かも!?
VBMP3.DLL  (MP3Reencと同じフォルダーへ置く)
gogo.dll  ※1 (MP3Reencと同じフォルダーへ置く)
 
※1 「午後のこ~だ for Windows Ver3.13a のダウンロード」で入手、インストール後プログラムフォルダからgogo.dllをコピー




◆概要、用途

例えばこんなバッチ処理が出来る。
フォルダーAには日々MP3ファイルが作られ・・・

[PC]
フォルダーA
 [ ほげほげ 2013年06月12日.mp3 ]
 [ ほげほげ 2013年07月25日.mp3 ]
 [ ヤレヤレ 2013年08月03日.mp3 ]・・・無視

  ↓ 頭が「ほげほげ」に一致するものに限り再エンコード

フォルダーA
 [ ほげほげ 2013年06月12日_ORG.mp3 ]←元のファイルは"_ORG"を付け次回は対象にしない。
 [ ほげほげ 2013年07月25日_ORG.mp3 ]
フォルダーB
 [ ほげほげ2013-06-12.mp3 ] ←再エンコードされたMP3ファイル
 [ ほげほげ2013-07-25.mp3 ]

※一時的なWAV~MP3展開フォルダーは指定出来る。
※再エンコードのファイル名(頭の部分だけ)はこの様に指定も可能。
 [ hogehoge2013-06-12.mp3 ]
 [ hogehoge2013-07-25.mp3 ]

動作条件は全てテキストファイル「MP3Reenc.ini」に設定する。(タイトル、ファイルの数は無制限)


言い換えると、出来上がったMP3ファイルに対して、
a.元のMP3ファイルはそのまま持っておきたい!(フォルダーA)
b.それとは別に、サイズの小さい(高圧縮率)MP3ファイルを作りたい!(フォルダーB)

肝心な事を言っていないねw
上記のファイル名がそれとなく物語っているけれど、これはRadika(ラジコアプリ)の録音ファイルを想定している。
自分が使用しているRadikaはMP3出力設定が番組別に出来ない。
だから、番組毎に圧縮と出力先を分けたい

もう少し肝心な事。
前述bのサイズの小さいMP3ファイルは、外出先で使うモバイルのプレイヤーに入れている。
転送を早く済ませたいので、サイズの小さいファイルが望まれる。音質は問わない。

更に肝心な事。
フォルダーBは、ごにょごにょ...Dropboxフォルダーに入れておけば...

と言う事ダ!


◆動作イメージ

実行すると「WAVデコード→MP3エンコード」の順にバッチ処理が行われ、画面を閉じる
数分間も画面に変化が無いんじゃアレなので、処理の経過はプログレス・バーで表現した。

「MP3Reenc.exe」を実行すると・・・

①元のMP3ファイルをWAVデコード。
20_MP3Reenc01.jpg

②出来たてのWAVファイルをMP3エンコード
21_MP3Reenc02.jpg
③そのWAVファイルは削除
④元のMP3ファイルは、ファイル名の末尾に「_ORG」を追加して次回再エンコードの対象から外す。
 ↓
画面が消え、処理完了!

てな感じだす。

デモ・モードを用意してあるので、動作イメージを見たい場合は設定ファイル「MP3Reenc.ini」を一時的にリネームするか、別フォルダーへ移動するべし。

[2013/9/4追記]
実行すると設定した「MP3Reenc.ini」のお膳立てに従って全自動で処理して画面を閉じるのである。
このツールは他のプログラムから実行する事を想定している。
(自分は Radika の”録音終了時実行コマンド”に指定)


◆今後の予定

無い!
ワシはプログラマーではないので今はコレが精一杯。
バグ修正は何とか出来てるYO!
ソースを見れば、その稚拙さが分かっていただけると思う。

今までVB6はチョイチョイ作ってきたけれど、コーディングに関しては、コマンド、パラメーター、関数など、いちいち覚えていない(いや覚える必要が無い)のでWEBで調べたり、ソースを借りてコピペ→改造だらけ。
今回も完成したら全てを忘れてしまうに違いない。(笑)

VB6まで何となく続けてこれたのは、感覚的にはVB2からあまり変わっていない気がするからだろう。
VB.NETはいじる予定は無い。

bug fix、update
ver.1.0 初期版
ver.1.1 設定ファイルのVBR指定が反映されずCBRエンコードだったたためVBR対応。
ver.1.2 2重起動によりプログラムに不具合発生するため、2重起動を無効化した。
ver.1.3 WAV~MP3展開作業のフォルダーを指定可能に。その他バグ修正。
ver.1.4 出力中ファイルを処理しエラーとなる現象を回避する修正。Radika番組2重録音の時間差終了の対策。
ver.1.5 エンコード後、元のMP3ファイルが不要なら削除可能に。ini設定に含めた。
ver.1.6 Windows7環境での起動エラーを修正。
ver.1.7 1.6でチープになった文字仕様プログレスバーをグラフィカル仕様に変更。
ver.1.7.3 不具合は無いがプログレスバー表示処理関連の関数の差し替え、負荷を若干抑えたつもり。

[2014/4/22追記]
そうそう。再エンコードmp3が出来るフォルダーはDropBoxに指定しちゃダメだ!
お話した通り、プレーンなWAVファイルを書き出してMP3書き出すのだからね。作業の過程が通信されちゃうでしょ!
だから、ver.1.3.0としてどこか作業フォルダーでWAVとMP3の書き出し、MP3を最終的なフォルダーへ移動する仕様に予定してもいいね。 自分はPC自体をWEBサーバーにしているので、別にいいのだけれど。

[2014/9/9追記]
ver.1.3ではMP3出力先とは別にWAV~MP3作業フォルダーを指定出来る様にしたため、DropBoxフォルダーへのMP3出力が適切に出来る様になった。
やはりDropBoxからのDownloadは早いからね、是非利用したくて仕様変更する気になった。
ああ、自分が作ったソースなのに見るのが大変! 暫く変更は無いかな。 でもWAV展開の直後に訳の分からないエラーで止まる事があるんだよな。 これが訳が分からない。
[2014/12/9追記]
盲点を発見してしまった!
Radika(ラジコ)で番組を2重録音中、片方だけ終了させると録音最中の方もエンコードやファイル名変更「_ORG」をしようとしてしまう。 多分エラーになるな。
直す予定だが、数秒間ファイルサイズの変化を見るか?ロック状態を見るか?方法を模索中。
[2014/12/10追記]
ver.1.4で早速↑の処置。
[2015/1/5追記]
ver.1.5 Updateは機能追加。元のMP3ファイルが不要な場合を考慮し削除可能に。
これで最後かな~。 もうWindowsXP & VisualBasic6.0は終わりにしようと思う。
[2015/9/28追記]
ようやくメインPCをWindowsXPから7(64)へ移行完了。 Windows7ではver.1.5までは動作しない事が判明!
ただ、再エンコード使用のPCはいまだにXPだから良いのだけれどね。さて、今時の言語を習得する気力も無いし・・・
[2015/11/13追記]
ver.1.5まではWindows7環境で起動エラーとなっていた。 エンコード&デコードの進行表示プログレスバーを担当する MSCOMCTL.OCX が使用不可能な状態。 このため Ver1.6ではプログレスバーの仕様をOCXを使わない文字列表示でエラーを回避する処置をした。 これにより、プログレスバーの表現がダサダサに(笑)
[2015/11/18追記]
ver.1.7ではver.1.6でエラー回避で処置した文字列表現のプログレスバーがとてもチープだったため、新たな方法でグラフィカルなプログレスバーに変更した。(以前のMSCOMCTL.OCXを使わないやり方)
[2015/12/15追記]
ver.1.7.3 プログレスバー表示処理タイミングに使っていた関数SleepをTimerへ差し替えた。 微妙に負荷が下がっている事も期待。


◆感想

再エンコードの自動処理はニッチなのか、こんなツールは見当たらない。
しかしどうしても必要で、昨年(2012)同様の処理を行うDosバッチを自力で作って1年ほど使用したと思う。 当時はデコード&エンコードのエンジンに lame.exe を使っていた。 しかしさすがに16ビットエミュレーション。 処理時間が異常にかかりCPU負荷が100%で他のアプリの割り込みを許さない感じだった。 HDDアクセスランプは点きっぱなし。PCの寿命が縮まるんじゃないかと・・・

さて、重い腰を上げてVB6で改めて作り直した本ツール。
デコード&エンコードに必要なDLLはこの2つを使わせていただいた。
 VBMP3.DLL デコード用
 gogo.dll エンコード用

どちらも面倒な宣言などはソースが用意されていたので、処理のコーディングに集中できた。
出来上がってみれば、CPU負荷は70%程度に減り処理時間も半分になった。
これはヒジョーに嬉しい。
VBMP3.DLL、gogo.dllの作者様に感謝!

ま、小細工は自分で何とかすらー!(笑)


尚、当記事のMP3 Re-enc実行結果については責任を負わない。


◆Radika入手、そして再生・録音が失敗する場合の処置・・・備忘録

そもそもこれはRadika前提なのである。
Radikaは番組別の出力の自由度が無いからMP3 Re-encを作ったワケで、まずRadikaがちゃんと使えなければならない。 そんなこんなで導入の備忘録をココに。

1.Radika ver1.71 を入手・・・つくったもの公開所
2.受信トラブルの処方箋・・・必要ファイルまとめ ※独自に集めたもの
※ RadikaはMicrosoft .NET Framework 3.5 も当然必要。これはWindows Updateにて。

1を展開して2の解凍済ファイルを上書き&追加したうえでRadikaを起動する。(新しくフォルダを作るところから)
これで自分の環境ではフックを使わずとも問題なく受信できている。(ダメもとでPC再起動してみる)


2016/10/14 追記
radikoが最近タイムフリーになった影響でradikaが聴取不可能になっていたのだが、前述に含まれている「AYTHKeyGet.exe」に問題があるらしく、こちらを参照させていただき入手したものに差し替えたところ無事解消。再生&録音は快適に出来ている。 ちなみにhostsの編集については、自分の場合はNHKらじるの部分だけ追加している
ありがたや~~~ありがたや~~~

スポンサーサイト
(この一行は、各記事の最後に固定表示するサンプルです。テンプレートを編集して削除もしくは非表示にしてください。)
(この一行は、各ページ下部に固定表示するサンプルです。テンプレートを編集して削除もしくは非表示にしてください。)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。