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

Re: MP_Pipeline 0.16 - 多进程运行avs脚本 [2014-01-11]

问一下,老是出现
Script error: expected a, or (
(*.avs, line 2, column 15)
这是怎么回事?
代码如下
LoadPlugin("D:\MeGUI\MeGUI_2356_x86\tools\MP_Pipeline_0.16\x64\MP_Pipeline.dll)
MP_Pipeline("""
LoadPlugin("D:\MeGUI\MeGUI_2356_x86\tools\lsmash\LSMASHSource.dll")
LWLibavVideoSource()
### ###
LoadPlugin("D:\MeGUI\MeGUI_2356_x86\tools\flash3kyuu_deband\flash3kyuu_deband.dll")
f3kdb(range=9, Y=32,Cb=32,Cr=32,grainY=0,grainC=0,sample_mode=2,opt=-1,mt=true, dither_algo=3,
keep_tv_range=false, input_depth=16, output_depth=8)
### prefetch: 16, 0
### ###
""")
头像
upyzl
帖子: 446
注册时间: 2010-12-25 18:44
来自: 湘/京
联系: 网站

Re: MP_Pipeline 0.16 - 多进程运行avs脚本 [2014-01-11]

望月凝香 写了:问一下,老是出现
Script error: expected a, or (
(*.avs, line 2, column 15)
这是怎么回事?
代码如下
LoadPlugin("D:\MeGUI\MeGUI_2356_x86\tools\MP_Pipeline_0.16\x64\MP_Pipeline.dll)
MP_Pipeline("""
LoadPlugin("D:\MeGUI\MeGUI_2356_x86\tools\lsmash\LSMASHSource.dll")
LWLibavVideoSource()
### ###
LoadPlugin("D:\MeGUI\MeGUI_2356_x86\tools\flash3kyuu_deband\flash3kyuu_deband.dll")
f3kdb(range=9, Y=32,Cb=32,Cr=32,grainY=0,grainC=0,sample_mode=2,opt=-1,mt=true, dither_algo=3,
keep_tv_range=false, input_depth=16, output_depth=8)
### prefetch: 16, 0
### ###
""")
第1行少个反引号
头像
望月凝香
帖子: 40
注册时间: 2013-08-07 17:04

Re: MP_Pipeline 0.16 - 多进程运行avs脚本 [2014-01-11]

噗……谢谢了,我傻叉了。
头像
望月凝香
帖子: 40
注册时间: 2013-08-07 17:04

Re: MP_Pipeline 0.16 - 多进程运行avs脚本 [2014-01-11]

但是问题又来了,那个MP_PIPELINE_BRANCH_ID应该是怎么用的?是不是要有什么前置语句?
我直接把说明文档里面的格式复制进去,说不知道MP_PIPELINE_BRANCH_ID是什么。
看到是String,那么把这个替换成"a""b""c",但是在Windows任务管理器里面看不到有什么区别,还是三个MPP.dll.slave.exe。
所以在前面是不是要声明什么啊?
还有就是H.264 Encoder(avs4x264喂给的x264_64)会占用主要的CPU还有内存,内存会在13**.*MB上不动了,而avs4x264则大概在800-1000MB(貌似这个正常)。我系统总内存16G,这时MPP线程开的不多,总占用6.7GB左右。所以x264_64为啥内存占用始终在这么大?
头像
SAPikachu
帖子: 192
注册时间: 2011-02-28 19:55
联系: 网站

Re: MP_Pipeline 0.16 - 多进程运行avs脚本 [2014-01-11]

望月凝香 写了:但是问题又来了,那个MP_PIPELINE_BRANCH_ID应该是怎么用的?是不是要有什么前置语句?
我直接把说明文档里面的格式复制进去,说不知道MP_PIPELINE_BRANCH_ID是什么。
看到是String,那么把这个替换成"a""b""c",但是在Windows任务管理器里面看不到有什么区别,还是三个MPP.dll.slave.exe。
所以在前面是不是要声明什么啊?
MP_PIPELINE_BRANCH_ID只在包含### branch的脚本块内有效,一般来说没有用。
望月凝香 写了: 还有就是H.264 Encoder(avs4x264喂给的x264_64)会占用主要的CPU还有内存,内存会在13**.*MB上不动了,而avs4x264则大概在800-1000MB(貌似这个正常)。我系统总内存16G,这时MPP线程开的不多,总占用6.7GB左右。所以x264_64为啥内存占用始终在这么大?
x264参数贴一下?
T: @SAPikachu
头像
望月凝香
帖子: 40
注册时间: 2013-08-07 17:04

Re: MP_Pipeline 0.16 - 多进程运行avs脚本 [2014-01-11]

是avs脚本还是x264?
x264的话我因为以前老是搞崩溃干脆不鸟他用默认设置了……要是能告诉我不会崩溃且效率更高的x264设置万分感谢!
“program --preset slow --tune animation --crf 16 --qpmax 50 --output "output" "input" ”
补充一下,一般此时x264会有30%-50%的CPU占用。
接着还有别的问题
MCTD那段里面我是这样声明的:

代码: 全选

### ###
LoadPlugin()
Import()
#降噪
SetMemoryMax(1024)
MCTD(settings="low", sigma=2, sharp=false, limit=4, chroma=true, GPU=false,  fixband=false, protect=true, AA=false, deblock=true, useQED=true, edgeclean=false, stabilize=false,  enhance=false)
#降噪
### prefetch: 16, 0
### branch: 4, 4
### ###
但是那四个线程内存占用还是奔着14**MB到顶不动了,而且无论我怎么改SetMemoryMax()的参数都这样……

最后,如果使用inherit start来在最开始的时候加载滤镜,那么最后一个段落之后好像不能再加一行"### ###",否则会报错说最后不是Clip。但是如果不加的话最后一个段落就没办法用分支了,是这样吗?
头像
SAPikachu
帖子: 192
注册时间: 2011-02-28 19:55
联系: 网站

Re: MP_Pipeline 0.16 - 多进程运行avs脚本 [2014-01-11]

望月凝香 写了:是avs脚本还是x264?
x264的话我因为以前老是搞崩溃干脆不鸟他用默认设置了……要是能告诉我不会崩溃且效率更高的x264设置万分感谢!
“program --preset slow --tune animation --crf 16 --qpmax 50 --output "output" "input" ”
补充一下,一般此时x264会有30%-50%的CPU占用。
接着还有别的问题
MCTD那段里面我是这样声明的:

代码: 全选

### ###
LoadPlugin()
Import()
#降噪
SetMemoryMax(1024)
MCTD(settings="low", sigma=2, sharp=false, limit=4, chroma=true, GPU=false,  fixband=false, protect=true, AA=false, deblock=true, useQED=true, edgeclean=false, stabilize=false,  enhance=false)
#降噪
### prefetch: 16, 0
### branch: 4, 4
### ###
但是那四个线程内存占用还是奔着14**MB到顶不动了,而且无论我怎么改SetMemoryMax()的参数都这样……

最后,如果使用inherit start来在最开始的时候加载滤镜,那么最后一个段落之后好像不能再加一行"### ###",否则会报错说最后不是Clip。但是如果不加的话最后一个段落就没办法用分支了,是这样吗?
1. 于是现在我不太明白你觉得内存有什么问题了,是x264占用1.3g还是slave占用1.3g?x264的话我不记得一般会占用多少,但是1.3G看起来也不算很离谱。如果是说slave的话,确定SetMemoryMax真的改了?

2. MCTD是temporal滤镜,一般来说用branch会大量浪费cpu运算力导致速度下降,特别chunk size设得这么小的话更加悲剧。建议不用branch然后SetMemoryMax(3072)。

3. 关于inherit,那是个bug,下个版本会修复。目前可以在最后一个### ###之后加上一行last来解决。
T: @SAPikachu
头像
望月凝香
帖子: 40
注册时间: 2013-08-07 17:04

Re: MP_Pipeline 0.16 - 多进程运行avs脚本 [2014-01-11]

1.264会占用大概13**MB内存,而MCTD对应的branch每个占有相差不大的14**内存,然后都不往上升了。
2.经过我反复测试,branch: 4时差不多正好能占满所有CPU。其中(Lwli+HQDring) 2 branch, f3dkb 1 branch, MCTD 4 branch。由于不知道怎么回事的原因,SetMemoryMax不管用,所以我放弃了SMM(3072)。
3.inherit那个bug能修复最好了。但是个人最期望能及时终结使用完毕的slave。不知道是我设置有问题还是别的什么回事,用完(CPU使用长期为零,且终结后不影响继续编码)的slave不会自己终结,且会占用大量内存,只好手动终结。
头像
SAPikachu
帖子: 192
注册时间: 2011-02-28 19:55
联系: 网站

Re: MP_Pipeline 0.16 - 多进程运行avs脚本 [2014-01-11]

1. CPU占用率不等于速度,你确定用branch后fps真的高了?
2. 把你说SMM(3072)不管用的完整脚本贴一下看看?
3. 用完的slave是指编码完毕后slave还不退出?理论上编码进程退出后所有slave应该都会自动结束才对。
T: @SAPikachu
头像
望月凝香
帖子: 40
注册时间: 2013-08-07 17:04

Re: MP_Pipeline 0.16 - 多进程运行avs脚本 [2014-01-11]

1.亲测,可以从1.24fps提高到1.49fps
2.

代码: 全选

LoadPlugin()
#多线程
MP_Pipeline("""
#多线程
SetMemoryMax(1024)
LoadPlugin()
#导入视频
Clip10=""
#文件源
LWLibavVideoSource(Clip10)
#导入视频流
LoadPlugin()
Import()
#Dering
HQDeringmod(lsb_in=False, lsb=True, lsb_out=True, tv_range=False, nrmode=2, Y=3, U=3, V=3)
#Dering
### branch: 2
### ###
LoadPlugin()
#去色带
SetMemoryMax(1024)
f3kdb(range=9, Y=32,Cb=32,Cr=32,grainY=0,grainC=0,sample_mode=2,opt=-1,mt=true,  dither_algo=3, keep_tv_range=false, input_depth=16, output_depth=8)
#去色带
### ###
LoadPlugin()
Import()
#降噪
SetMemoryMax(1024)
MCTD(settings="low", sigma=2, sharp=false, limit=4, chroma=true, GPU=false,  fixband=false, protect=true, AA=false, deblock=true, useQED=true, edgeclean=false, stabilize=false,  enhance=false)
#降噪
### prefetch: 16, 0
### branch: 4
### ###
""")
LoadPlugin和Import我就不打了

3.指的是用MeGUI载入avs脚本、Queue和start三步开始后都会出现多于8个slave线程。特别是载入avs脚本那一步,会出现多于20个slave线程。这些线程在各自步骤结束后如果不手动终止会一直在那里占用内存但不占用CPU,导致直接爆内存(压制步骤我一般是CPU在80-100%变动,而内存在80-90%变动,所以如果之前slave不清理会爆内存)。

回到 “AviSynth”