お前らのショボイAvisynthスクリプト貼ってくださいpart3
1 :
名無しさん@編集中 :
2009/02/18(水) 21:23:14 ID:goZAzE5q
Vim compiler file
Avisynthスクリプトのデバッグ用に
" Vim compiler file
" Compiler: vdub
" Last Change: 19-Feb-2009.
"" 使い方 {{{1
" VirtualDub 付属の vdub.exe のパスを設定。
" $HOME/vimfiles/compiler に vdub.vim として、このスクリプトを置く。
" .vimrc に以下を記入。
" :grep や :make の実行後、自動的に QuickFix ウィンドウを開く
" (注意: vim7 以降で利用可能)
"
ttp://vimwiki.net/?tips%2F66 "au QuickfixCmdPost make,grep,grepadd copen
"au QuickfixCmdPost l* lopen
" ScriptClip などのデバッグ用
" ctrl + return で VirtualDub を編集中のスクリプトを読み込ん
" で起動。
"au BufRead *.avs,*.avsi map <C-CR> :!start "E:/home/hoge/bin/VirtualDub/VirtualDub.exe" "%:p"<CR>
"" 使用上の注意 " AviSynthスクリプト名、及びパスにマルチバイト文字や半角スペ " ースを使わないこと。そうしないと、エラーの箇所にジャンプし " ない。 " AviSynthスクリプトの返り値が clip でないときは、デバッグの " ときスクリプトの最後にでも BlankClip を置いておく。}}} if exists("current_compiler") finish endif let current_compiler = "vdub" if exists(":CompilerSet") != 2 " older Vim always used :setlocal command -nargs=* CompilerSet setlocal <args> endif " :help errorformat set efm=%-GVirtualDub%.%#,%-GCopyright%.%#,%-Gavi%.%#,%Z(%f\\,\ line\ %l),%Z(%f\\,\ line\ %l\\,\ column\ %c),%A%m,%-G%.%# CompilerSet makeprg=E:/home/hoge/bin/VirtualDub/vdub\ % " vim:set fdm=marker:
まじでvim設定乙 しかしあの荒らしは酷かったな
前回張った入門者用(MeGUI用)スクリプトの対となるバッチ処理プログラムです DGIndex(Audio)からリファレンスAVSを参照してファイル名を変換します Avisynthスクリプトじゃないですが対となるので、どうぞ、お許しください AVS名生成.bat @echo off :FILEDROP VERIFY OTHER 2>nul SETLOCAL ENABLEEXTENSIONS IF ERRORLEVEL 1 echo 拡張機能を有効にできません rem rem ファイル名に連続するスペースがあるものは対応しきれていません 連続するスペースは1個のスペースとしてファイル名の調整をしてください rem rem バトルスターギャラクティカ 第1話 (序章).mpg ソースファイル名 ※この時点でスペースを調整する方が無難 rem バトルスターギャラクティカ 第1話 (序章) Tc0 L2 2ch 48 384 DELAY -93ms.mp2 DGIndexで自動作成 <このバッチ処理にドロップすると生成される rem バトルスターギャラクティカ 第1話 (序章).d2v DGIndexで自動作成 rem バトルスターギャラクティカ 第1話 (序章) DELAY -93msAM.avs AVS名生成バッチで自動生成したAVSファイル名(A,M,Dを選択する) rem バトルスターギャラクティカ 第1話 (序章).d2v MeGUIに自動生成したAVSで読込するとd2v名不一致になる rem
CD %~p1 for /f "tokens=1-20" %%1 in ("%~n1") do (if %%2==T80 (if %%5==DELAY set newname=%%1 %%5 %%6D&&set option=%%2 %%3 %%4&&goto :start)) for /f "tokens=1-20" %%1 in ("%~n1") do (if %%3==T80 (if %%6==DELAY set newname=%%1 %%2 %%6 %%7D&&set option=%%3 %%4 %%5&&goto :start)) for /f "tokens=1-20" %%1 in ("%~n1") do (if %%4==T80 (if %%7==DELAY set newname=%%1 %%2 %%3 %%7 %%8D&&set option=%%4 %%5 %%6&&goto :start)) for /f "tokens=1-20" %%1 in ("%~n1") do (if %%2==Tc0 (if %%7==DELAY set newname=%%1 %%7 %%8AM&&set option=%%2 %%3 %%4 %%5 %%6&&goto :start)) for /f "tokens=1-20" %%1 in ("%~n1") do (if %%3==Tc0 (if %%8==DELAY set newname=%%1 %%2 %%8 %%9AM&&set option=%%3 %%4 %%5 %%6 %%7&&goto :start)) for /f "tokens=1-20" %%1 in ("%~n1") do (if %%4==Tc0 (if %%9==DELAY set newname=%%1 %%2 %%3 %%9 %%10AM&&set option=%%4 %%5 %%6 %%7 %%8&&goto :start)) echo 現在このレイアウトには対応していません &&pause&&exit :start set reference=D:\DVD-R\新規差分ファイル(20090207-)\リファレンス.avs set convert=D:\DVD-R\新規差分ファイル(20090207-)\convert.cmd set rewrite= %option% set findstr=Undefined type nul>temp.tmp echo:%newname%.avs>>temp.tmp echo:%reference%>>temp.tmp echo:%rewrite%>>temp.tmp echo:%findstr%>>temp.tmp if exist "%newname%.avs" (echo %newname%.avsが存在します &&pause&&del temp.tmp&&exit) if not exist "%reference%" (echo "%reference%"が存在しません &&pause&&del temp.tmp&&exit) call cmd /v:on /c "%convert%" echo %newname%.avsを作成しました
echo: findstr /n "!" "%reference%" echo: echo このバッチ処理では「!」があるものは出力時に削除されてしまいます「!=」を「<>」等に変更してください echo (上記空欄にソース行が表示された場合「!」が含まれています ソースを確認の上対処してください) pause del temp.tmp exit
convert.cmd @echo off set newname=nul set reference=nul set rewrite=nul set findstr=nul for /f "usebackq tokens=1* delims=" %%a in (temp.tmp) do (if !newname!==nul (set newname=%%a) else ( if !reference!==nul (set reference=%%a) else (if !rewrite!==nul (set rewrite=%%a) else (if !findstr!==nul (set findstr=%%a))))) type nul>"%newname%" for /f "usebackq tokens=1* delims=" %%a in ("%reference%") do (set line=%%a&&set out=!line:%findstr%=%rewrite%!&&echo:!out!>>"%newname%") goto :eof
>>6 すいません どうも空白が詰められてしまったようでわかりにくいですが、上記例題のrem文3行は下の2行より空白が1バイト多いものとしてお考えください
尚、1バイトの空白は重要なものもありますので無闇に詰めないでください ※convert.cmdはサブルーチンになります
>>6 後、前回のソースで以下の部分が変わりました ※バッチ処理で"Undefined"のところが書き変わります
global Plugin="C:\Program Files\AviSynth 2.5\plugins+\" global Audio_mp2="Undefined" global Audio_ac3="Undefined"
#-------------------------------------------------
# DGIndex / READ Video_File.d2v Audio_File.mp2(ac3)
#-------------------------------------------------
#----------------------AV_Get---------------------
function AV_Get(string "mode", string "script_path", bool "AC3_DownMixS")
{
Video_path = Leftstr(script_path,Findstr(script_path,"DELAY") -2 )
Error_name = Rightstr(script_path,Findstr(Revstr(script_path),"\") - 1)
Video = Exist(Video_path+".d2v") ? MPEG2Source(Video_path+".d2v") : Assert(false,+Error_name+".d2v"+" : File not found")
Audio_Delay = Midstr(script_path,Findstr(script_path,"DELAY") + 6 )
Audio_Delay = Leftstr(Audio_Delay,Findstr(Audio_Delay,"ms") - 1 )
Audio_option= mode<>"D" ? Audio_mp2+" DELAY "+Audio_Delay+"ms.mp2" : Audio_ac3+" DELAY "+Audio_Delay+"ms.ac3"
Exist(Video_path+Audio_option) ? nop() : Assert(false,+ Error_name+Audio_option+" : File not found")
st_ch = AC3_DownMixS ? 2 : 6
Audio_Source= mode=="D" ? "Effect_AC3(NicAC3Source(Video_path+Audio_option,st_ch))" : "NicMPG123Source(Video_path+Audio_option)"
Eval("AudioDub(Video," + Audio_Source + ")")
return last
}
>>6 たびたび申し訳ありません for /f の後ろの空白1バイトが詰まっていました お手数ですがエラーがでたら対処をお願いします
>>6 どうも、マルチチャンネルだと雑音が入るみたいなので修正版をおいときます
#--------------------Effect_AC3------------------
function Effect_AC3(Audio)
{
org_ch=Audiochannels(Audio)
F_L= org_ch>=1 ? GetChannel(Audio,1).AmplifydB(8.80) : nop()
F_C= org_ch>=2 ? GetChannel(Audio,2).AmplifydB(8.80) : nop()
F_R= org_ch>=3 ? GetChannel(Audio,3).AmplifydB(8.80) : nop()
S_L= org_ch>=4 ? GetChannel(Audio,4).AmplifydB(8.80) : nop()
S_R= org_ch>=5 ? GetChannel(Audio,5).AmplifydB(8.80) : nop()
LFE= org_ch>=6 ? GetChannel(Audio,6).AmplifydB(8.80) : nop()
org_ch==1 ? MergeChannels(F_L) : nop()
org_ch==2 ? MergeChannels(F_L,F_C) : nop()
org_ch==3 ? MergeChannels(F_L,F_C,F_R) : nop()
org_ch==4 ? MergeChannels(F_L,F_C,F_R,S_L) : nop()
org_ch==5 ? MergeChannels(F_L,F_C,F_R,S_L,S_R) : nop()
org_ch==6 ? MergeChannels(F_L,F_C,F_R,S_L,S_R,LFE) : nop()
return last
}
>>6 追伸 入門者の方へ もし、デスクトップにショートカットを作成して使用する場合はプロパティーの「作業フォルダ」を空白にすればドロップ元へ
ファイルが作成されます また、DOS窓のウィンドウサイズ(幅)を110くらいにすればコメントが見やすくなると思います
>>7 とりあえず修正
CD %~p1 > cd %~dp1
echo:%newname%.avs>>temp.tmp > echo:%~dp1%newname%.avs>>temp.tmp
>>6 さらに修正 if exist "%~dp1%newname%.avs" (echo %~dp1%newname%.avsが存在します &&pause&&del temp.tmp&&exit)