2014年3月29日土曜日

Ffmぺsync ver.1.0 プロシージャ解説1 ファイルの動画形式判定(おおまか版)について

Ffmぺsync ver.1.0  ffmpeg.exeを手軽に使うためのファイル同期風フロントエンドVBスクリプト 本編 プロシージャ解説1 ファイルの高速動画判定についてです。
本編のこの部分を修正した。具体的には動画として判断するファイル形式の追加。
'***2014/3/29 update st
Function bDogaTypeExt( poItem )
Dim sType , bType , sExt , bExt, bExt1
 sType = Lcase(Trim(poItem.Type))
 bType  = Instr(sType , "ビデオ") > 0 or Instr(sType , "ムービー") > 0
 sExt = Lcase(Trim(oWSFSO.GetExtensionName(poItem.path)))
 bExt = Instr(sExt , "av") > 0  or Instr(sExt , "as") > 0 or Instr(sExt , "wm") > 0 or Instr(sExt , "mp") > 0  or Instr(sExt , "mo") > 0  or Instr(sExt , "ts") > 0
 bExt1 = Instr(sExt , "rm") > 0 or Instr(sExt , "fl") > 0 or Instr(sExt , "sw") > 0 or  Instr(sExt , "ps") > 0 or Instr(sExt , "vo") > 0   or Instr(sExt , "og") > 0
 '***↑↑↑↑↑Windowsで非動画判定ファイルは拡張子をここに登録すれば動画判定が真↑↑↑↑
bDogaTypeExt = bType or bExt or bExt1
End Function
'***2014/3/29 update ed

この修正でFfmpegで変換できる動画ファイルの形式を増やす事ができました。
 .avi
 .mpa
 .mp4
 .mpeg
 .mpg
 .mov 
 .asf
 .wmv
 .ps
 .ts
 .m2ts
 .vob
 .ogv
 .flv
 .swf
FFmpeg - ウィキペディア の「2 サポートしているファイル形式」を見ると、多いよねーサポートしてるファイル形式。知らないのもかなりある。
 
 面倒くさがってワイルドカードでファイルを何でも無節操に片っ端からFFmpegに放り込むと、当然サポートしていないファイルは変換エラーとなるわけで、その分処理は遅くなるし不安定にもなる。
 最初は判定に拡張子は利用せずFileObject.Typeのファイル種類に"ビデオ"や"ムービー"な文字列があった場合は拡張子に関係なく動画として判断するようにしていたが、調べると動画として判断してくれるファイルはかな~り少なく、またパソコンにより(OSの違いか?)結構な違いが出た。メインパソコンは動画として判断しても違うパソコンでは動画として判断してくれないとかorz
 素早く確実に判定するにはやっぱりファイル形式で見るのがいいなーとGetExtensionName(FileObject.Path)でファイルの拡張子を取得。 拡張子の中に動画な文字が入っているなら動画と判断するようにした。
 ただしリリース直後のバージョンは最低限自分のパソコンにあった動画形式のファイルの取り込みと変換ができるように調整したにすぎないので、それ以外はFFmpegで変換可能動画ファイルであっても動画ファイルと判断されずに門前払いヨロシクと跳ねられていた。
 仕事も落ち着いて週末になり時間が取れたので、各種形式のファイルを集めてFfmpesyncを通してそれなりに変換できた拡張子の差分を追加したのがついさっき。
 ちなみに用意した中でダメはDV形式だった。音声は出たんだけどねー映像が真っ黒orz

 ちなみに動画判定はエンコード時にもう一つかけていて、それちらはMP4限定で間口をかなり狭く作っています。

※追記
 次のネタに各種変換していたら縦横サイズ自動判定にミスを見つけてコソット修正

0 件のコメント:

コメントを投稿