我想在不同时间在视频上叠加多个图像。我将用户函数定义为
function myFunction(clip c, int coordinateX, int from, int to) {
c = c.trim(0, from-1) + c.trim(from, to).Overlay(myImage, x=coordinateX, y=667, mask=myImageMask, opacity=1) + c.trim(to+1, 0)
return c
}
这本质上需要myImage
图像并将其放置在剪辑的特定部分。
我将我的函数称为
video = video.myFunction(320, 1, 187)
我有很多这样的(我正在尝试用多个图像制作某种动画)
video = video.myFunction(320, 1, 187)
video = video.myFunction(480, 1, 187)
video = video.myFunction(640, 1, 187)
video = video.myFunction(320, 187, 374)
video = video.myFunction(480, 187, 374)
video = video.myFunction(640, 187, 374)
video = video.myFunction(319, 374, 561)
如果这些调用少于 400 个,则一切正常。如果超过该限制,则会发生“内存不足”(我正在使用 VirtualDub)。
我想这是因为 AviSynth 必须处理所有调用才能找出输出(尽管这 100 只中只有约 3 个的呼叫与特定单帧)。如果我删除video =
在该行的开头,我可以有 10000 个,并且没有“内存不足”错误,但当然我没有视频输出。
有解决办法吗?视频剪辑上不同时间叠加数百/数千个图像?