perl

日曜プログラムはやり出すと面白いのが困りもの。時間を忘れないように気をつけないと。:-)

  1. File::Findする
  2. 真空波動拳SuperLiteに/sオプション付きで渡す
  3. 結果がクリップボードに収納されるので、それをWin32::Clipboard->Get()で取り出す

という感じで目論み通りできそう。codecs.iniに定義されている800弱の拡張子に対して判定してくれるようなので、一般的に使われる音声、画像フォーマットであればほぼ問題なくカバーしているでしょう。具体的な出力は↓のような感じ。

  • avi(divx)の場合
RIFF AVI2.0 640x480 24Bit DivX 5.1.1 23.98fps 34520f 1550.67kb/s MPEG1-LayerIII 48.00kHz 192.00kb/s CBR JointStereo/MS LAME-Info 59991f [LAME3.95  CBR 192kb/s AutoStereo] 00:24:00
314,746,880Bytes
MPEG2 720x480 29.97fps 4:3 9000.00kb/s MPEG1-LayerII 48.00kHz 256.00kb/s CBR Stereo 00:30:10
1,417,885,696Bytes
  • mp3の場合
MPEG1-LayerIII 44.10kHz 128.00kb/s CBR JointStereo/MS 9956f 00:04:19
4,152,176Bytes

こんな事仕様書に書いてあるわけ無いので、勝手に解析するしかないですが、音声と画像の二パターンに分けて処理するだけで何とかなりそう。出力項目が定型化されているのであれば、splitするだけで大丈夫そうだし。やり出すときりがなくなりそうなので、今日はこれにておしまい。

微妙に気になるのは、スクリプト動作中に他のアプリケーションがクリップボードを変更してしまうと、それでアウトなのです。明示的に動かしているアプリケーションであれば、運用でカバーできますが、バックグラウンドで動いているやつはどうしようもないなあ。クリップボードに対する排他処理なんて知らないし..まあ、とりあえず動く物を作ってから考えよう。