版面规则
提问时请注意:尽量详细描述操作过程、AVS脚本内容等,最好能写出片名,只贴图有时无法看出问题原因。
提示:发布原创内容请尽量使用附件上传。使用网盘会出现过期失效的问题,请注意。
alexz220
帖子: 115
注册时间: 2012-07-21 17:15

求一份AVS複製N次就能一鍵壓完N集的腳本寫法

就是AVS里用变量表示文件名,
压制时根据AVS文件名自动获取输入及输出文件名。
逐个改名伤不起啊 {:cat_5} 求指导 {:cat_5}
头像
mawen1250
核心会员
核心会员
帖子: 670
注册时间: 2011-07-24 20:33

Re: 求一份AVS複製N次就能一鍵壓完N集的腳本寫法

思路:
用ScriptFile()获取脚本的文件名,利用AVS自带的string和int处理方式获取对应disc的string和对应m2ts的string,为了方便起见,disc文件夹名需要格式化为只需要数字就能区分的形式——否则的话就要借助于Select()函数根据索引手动指定各个disc的文件夹名。

以Hunter X Hunter为例,这里的string是和MPP的string参数(记住MPP整个大引号括起来的部分实际上就是一个string型参数,MPP本身的作用类似于Eval()函数)连接在一起,如果是直接用的话就和lwlvs的string参数连接在一起:
LWLibavVideoSource("D:\Hunter X Hunter\Vol."+dstr+"\BDMV\STREAM\000"+mstr+".m2ts", threads=1)
[syntax="avisynth"]epstr = LeftStr(ScriptFile(), 3)
epnum = Eval(epstr)
dnum = epnum<14 ? 01+(epnum-01)/3 : epnum<27 ? 05+(epnum-14)/3 : epnum<39 ? 09+(epnum-27)/4 : epnum<49 ? 12+(epnum-39)/4 : epnum<60 ? 15+(epnum-49)/4 : epnum<76 ? 18+(epnum-60)/4 : epnum<91 ? 22+(epnum-76)/4 : 26+(epnum-91)/4
dstr = String(dnum, "%02.0f")
mnum = epnum<14 ? 04+(epnum-01)%3 : epnum<27 ? 04+(epnum-14)%3 : epnum<39 ? 04+(epnum-27)%4 : epnum<49 ? 04+(epnum-39)%4 : epnum<60 ? 04+(epnum-49)%4 : epnum<76 ? 04+(epnum-60)%4 : epnum<91 ? 02+(epnum-76)%4 : 02+(epnum-91)%4
mstr = String(mnum, "%02.0f")

MP_Pipeline("""

LWLibavVideoSource("D:\Hunter X Hunter\Vol."""+dstr+"""\BDMV\STREAM\000"""+mstr+""".m2ts", threads=1)

""")[/syntax]

然后用bat写个循环把这个Template.avs复制成001.avs到105.avs,就直接可以压了。
alexz220
帖子: 115
注册时间: 2012-07-21 17:15

Re: 求一份AVS複製N次就能一鍵壓完N集的腳本寫法

mawen1250 写了:思路:
用ScriptFile()获取脚本的文件名,利用AVS自带的string和int处理方式获取对应disc的string和对应m2ts的string,为了方便起见,disc文件夹名需要格式化为只需要数字就能区分的形式——否则的话就要借助于Select()函数根据索引手动指定各个disc的文件夹名。

以Hunter X Hunter为例,这里的string是和MPP的string参数(记住MPP整个大引号括起来的部分实际上就是一个string型参数,MPP本身的作用类似于Eval()函数)连接在一起,如果是直接用的话就和lwlvs的string参数连接在一起:
LWLibavVideoSource("D:\Hunter X Hunter\Vol."+dstr+"\BDMV\STREAM\000"+mstr+".m2ts", threads=1)
[syntax="avisynth"]epstr = LeftStr(ScriptFile(), 3)
epnum = Eval(epstr)
dnum = epnum<14 ? 01+(epnum-01)/3 : epnum<27 ? 05+(epnum-14)/3 : epnum<39 ? 09+(epnum-27)/4 : epnum<49 ? 12+(epnum-39)/4 : epnum<60 ? 15+(epnum-49)/4 : epnum<76 ? 18+(epnum-60)/4 : epnum<91 ? 22+(epnum-76)/4 : 26+(epnum-91)/4
dstr = String(dnum, "%02.0f")
mnum = epnum<14 ? 04+(epnum-01)%3 : epnum<27 ? 04+(epnum-14)%3 : epnum<39 ? 04+(epnum-27)%4 : epnum<49 ? 04+(epnum-39)%4 : epnum<60 ? 04+(epnum-49)%4 : epnum<76 ? 04+(epnum-60)%4 : epnum<91 ? 02+(epnum-76)%4 : 02+(epnum-91)%4
mstr = String(mnum, "%02.0f")

MP_Pipeline("""

LWLibavVideoSource("D:\Hunter X Hunter\Vol."""+dstr+"""\BDMV\STREAM\000"""+mstr+""".m2ts", threads=1)

""")[/syntax]

然后用bat写个循环把这个Template.avs复制成001.avs到105.avs,就直接可以压了。
{:cat_5} {:cat_5} {:cat_5} 泪流满面 {:cat_5} {:cat_5} {:cat_5}
cunhan
核心会员
核心会员
帖子: 214
注册时间: 2010-09-20 22:09

Re: 求一份AVS複製N次就能一鍵壓完N集的腳本寫法

mawen1250 写了:思路:
用ScriptFile()获取脚本的文件名,利用AVS自带的string和int处理方式获取对应disc的string和对应m2ts的string,为了方便起见,disc文件夹名需要格式化为只需要数字就能区分的形式——否则的话就要借助于Select()函数根据索引手动指定各个disc的文件夹名。

以Hunter X Hunter为例,这里的string是和MPP的string参数(记住MPP整个大引号括起来的部分实际上就是一个string型参数,MPP本身的作用类似于Eval()函数)连接在一起,如果是直接用的话就和lwlvs的string参数连接在一起:
LWLibavVideoSource("D:\Hunter X Hunter\Vol."+dstr+"\BDMV\STREAM\000"+mstr+".m2ts", threads=1)
[syntax="avisynth"]epstr = LeftStr(ScriptFile(), 3)
epnum = Eval(epstr)
dnum = epnum<14 ? 01+(epnum-01)/3 : epnum<27 ? 05+(epnum-14)/3 : epnum<39 ? 09+(epnum-27)/4 : epnum<49 ? 12+(epnum-39)/4 : epnum<60 ? 15+(epnum-49)/4 : epnum<76 ? 18+(epnum-60)/4 : epnum<91 ? 22+(epnum-76)/4 : 26+(epnum-91)/4
dstr = String(dnum, "%02.0f")
mnum = epnum<14 ? 04+(epnum-01)%3 : epnum<27 ? 04+(epnum-14)%3 : epnum<39 ? 04+(epnum-27)%4 : epnum<49 ? 04+(epnum-39)%4 : epnum<60 ? 04+(epnum-49)%4 : epnum<76 ? 04+(epnum-60)%4 : epnum<91 ? 02+(epnum-76)%4 : 02+(epnum-91)%4
mstr = String(mnum, "%02.0f")

MP_Pipeline("""

LWLibavVideoSource("D:\Hunter X Hunter\Vol."""+dstr+"""\BDMV\STREAM\000"""+mstr+""".m2ts", threads=1)

""")[/syntax]

然后用bat写个循环把这个Template.avs复制成001.avs到105.avs,就直接可以压了。
既然还是要用bat,就直接让bat写avs啦。

例如

代码: 全选

set dstr=1
set mstr=1
echo LWLibavVideoSource("D:\Hunter X Hunter\Vol.%dstr%\BDMV\STREAM\000%mstr%.m2ts", threads=1) >>1.avs
头像
msg7086
帖子: 600
注册时间: 2011-02-19 0:49

Re: 求一份AVS複製N次就能一鍵壓完N集的腳本寫法

Welcome to rake
[syntax=ruby]
eps=ENV['eps']
file "#{eps}.avs" => ['main.avs'] do
avs = File.read 'main.avs'
avs = avs.gsub('main.dgi', "#{eps}.dgi")
File.write "#{eps}.avs", avs
end
[/syntax]

我都是先把m2ts给软链接到目录下,然后批量按顺序改名,再走rake批量搞的。
Delogo LGD Collections 各种台标下载 | Home Of VapourSynth Evolution

<回答が無い理由>
1. 誰も知らない
2. 質問文が意味不明
3. 知ってるが、お前の態度が気に入らない
4. 良いボケが思いつかない
alexz220
帖子: 115
注册时间: 2012-07-21 17:15

Re: 求一份AVS複製N次就能一鍵壓完N集的腳本寫法

msg7086 写了:Welcome to rake
[syntax=ruby]
eps=ENV['eps']
file "#{eps}.avs" => ['main.avs'] do
avs = File.read 'main.avs'
avs = avs.gsub('main.dgi', "#{eps}.dgi")
File.write "#{eps}.avs", avs
end
[/syntax]

我都是先把m2ts给软链接到目录下,然后批量按顺序改名,再走rake批量搞的。
MR前辈方便发个DGIndexIM的链接吗?
水平太低GOOGLE没搜到 {:cat_5}
头像
msg7086
帖子: 600
注册时间: 2011-02-19 0:49

Re: 求一份AVS複製N次就能一鍵壓完N集的腳本寫法

alexz220 写了:MR前辈方便发个DGIndexIM的链接吗?
水平太低GOOGLE没搜到 {:cat_5}
http://forum.doom9.org/showthread.php?t=170237

You need a license to use DGDecIM
Delogo LGD Collections 各种台标下载 | Home Of VapourSynth Evolution

<回答が無い理由>
1. 誰も知らない
2. 質問文が意味不明
3. 知ってるが、お前の態度が気に入らない
4. 良いボケが思いつかない
alexz220
帖子: 115
注册时间: 2012-07-21 17:15

Re: 求一份AVS複製N次就能一鍵壓完N集的腳本寫法

msg7086 写了:
alexz220 写了:MR前辈方便发个DGIndexIM的链接吗?
水平太低GOOGLE没搜到 {:cat_5}
http://forum.doom9.org/showthread.php?t=170237

You need a license to use DGDecIM
Thank you~

回到 “AviSynth”