590 :
548 :
2007/03/18(日) 05:01:55 ID:9cpA2I4U0 フォルダ内の動画ファイルのコーデック・AVIのバージョン、フレームレートを調査し、 条件に該当するファイルだけを、変換プログラムに送るスクリプト 集めて見ないで溜まっている動画ファイルを、DivX再生機能付きDVDプレイヤーで再生するために開発しました。 言語はuwsc // ここから public sinkupass="F:\freeware\真空\SinkuHadouken.exe" // 真空波動研.exe の場所(フルパス) 各自の環境で変更 public avimuxpass="F:\freeware\AVI-Mux_GUI-1.17.7\AVIMux_GUI.exe" // AVIMux_GUI.exe の場所(フルパス) 各自の環境で変更 public toMuxCount public toMuxFile[100] srcDir="K:\Down\新しいフォルダ (7)" // 調べるファイルのあるディレクトリ dstDir="M:\tst" AVIMuxで変換したファイルの収納先 toMuxCount=0 sinkuID=getID("","TSHDK_MAIN") ifb sinkuID<1 THEN exec(sinkuPass) sleep(2) sinkuID=getID("","TSHDK_MAIN") endif filecount=GETDIR( srcDir,"*.avi") for i=0 to filecount-1 filename=GETDIR_FILES[i] print filename checkAviOne(sinkuID,srcDir,dstDir,filename) next filecount=GETDIR( srcDir,"*.wmv") for i=0 to filecount-1 filename=GETDIR_FILES[i] MediaCoderID=GETID("MediaCoder","#32770") DROPFILE(MediaCoderID,srcDir,filename) next (続く)
SCKEY(sinkuID,VK_ALT,VK_F,VK_C) Avi2to1All(srcDir,dstDir) exec("notepad.exe "+ GET_UWSC_DIR+"\UWSC.LOG") procedure checkAviOne(sinkuID,srcDir,dstDir,filename) SendStr(0,"") DROPFILE(sinkuID,srcDir,filename) sleep(6) ACW(sinkuID) MOUSEORG(sinkuID) SCKEY(sinkuID,VK_CTRL,VK_C) sleep(1) Str=GetStr(0) ifb Str="" then sleep(10) ACW(sinkuID) MOUSEORG(sinkuID) SCKEY(sinkuID,VK_CTRL,VK_C) Str=GetStr(0) endif title=token(chr($0d),str,true) // 一行目を取り出す pram=token(chr($0d),str,true) // 二行目を取り出す aviVer=token(" ",pram,true) aviVer=COPY(aviVer,POS("A",aviVer),LENGTH(aviVer)-POS("A",aviVer)+1) str=COPY2(pram,POS("Bit ",pram)+Length("Bit "),POS("fps",pram)+Length("fps")) size=token(" ",pram) codec=COPY(str,0,POS(" ",str,-1)-1) fps=COPY2(str,POS(" ",str,-1),POS("fps",str)-1) print aviVer+" "+size+" "+codec+" "+fps+"fps" //続く
str=aviVer+" "+size+" "+codec+" "+fps+"fps" title=COPY(title,0,length(title)) fpsF=val(fps)>31 codecF= (POS("DivX",codec)=0) and (POS("Xvid",codec)=0) ifb fpsF or codecF then print filename+"をMediaCoderで変換予約" MediaCoderID=GETID("MediaCoder","#32770") DROPFILE(MediaCoderID,srcDir,filename) else ifb aviVer="AVI2.0" then print filename+"をAVI2.0->AVI1.0に変換予約" SCKEY(sinkuID,VK_ALT,VK_F,VK_C) ToMuxFile[ToMuxCount]=fileName ToMuxCount=ToMuxCount+1 endif endif fend function COPY2(str,from,to ) result=COPY(str,from,to-from) fend procedure Avi2to1All(srcDir,dstDir) for i=0 To ToMuxCount-1 filename=ToMuxFile[i] print srcDir+"\"+filename+"をAVI2.0->AVI1.0に変換実行" onefileAvi2to1(srcDir,dstDir,filename) next fend // 続く
procedure onefileAvi2to1(srcDir,dstDir,fname) fNameSrc=srcDir+"\"+fname fNameDst=dstDir+"\"+fname muxID=GETID("AVI-Mux GUI","#32770") ifb muxID<1 THEN exec(avimuxpass) sleep(2) muxID=GETID("AVI-Mux GUI","#32770") endif muxID=GETID("AVI-Mux GUI","#32770") sleep(2) ACW(muxID,158,244,613,473,0) mouseorg(muxID) BTN(RIGHT,CLICK,30,66,31) SCKEY(muxID,VK_DOWN,VK_RETURN) openID=GETID("ファイルを開く","#32770") ACW(openID,136,319,656,323,0) SENDSTR(openID,fNameSrc,1,true) SCKEY(openID,VK_ALT,VK_O) sleep(2) ACW(muxID,158,244,613,473,0) mouseorg(muxID) BTN(LEFT,CLICK,105,67,32) BTN(LEFT,CLICK,117,136,109) sleep(1) BTN(LEFT,CLICK,519,413,203) (続く)
saveID=GETID("名前を付けて保存","#32770") ACW(saveID,136,319,656,323,0) SENDSTR(saveID,fNameDst,1,true) SCKEY(saveID,VK_ALT,VK_S) infID=GETID("Information","#32770") while infID=-1 sleep(1) infID=GETID("Information","#32770") wend SCKEY(saveID,VK_RETURN) // 終了ダイアログに「OK」 ACW(muxID,158,244,613,473,0) //処理し終わったファイルをdelする mouseorg(muxID) sleep(1) SCKEY(muxID,VK_ALT,VK_F4) sleep(2) fend //スクリプトここまで
●AVIMux_Guiの設定 右側のOutput/generalを押して、 左上のStandard output fortmat をAviに 右側のOutput/Avi file structureを押して、 チェックボックス use Open-DML outputをオフに (これがoffであればAVI1.0を出力する) ●MediaCoderの設定 左下の設定 Video Backend/MEncoder Codec/Xvid Picture FrameRate 23.976 Audio Source MPlayer Encoder LAME MP3 真空波動研とAviMux_Guiは起動した状態でなくてもスクリプトが起動させてくれますが、 MediaCoderは自動起動しませんので、さきに起動した状態でスクリプト実行してください