首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AviSynth内存不足错误(图像覆盖的100秒)

AviSynth内存不足错误(图像覆盖的100秒)
EN

Stack Overflow用户
提问于 2013-09-10 13:57:27
回答 2查看 1.5K关注 0票数 0

我想在不同的时间在我的视频上覆盖多个图像。我将用户函数定义为

代码语言:javascript
复制
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图像,并将其放置在剪辑的特定部分。

我称我的职能为

代码语言:javascript
复制
video = video.myFunction(320, 1, 187)

我有一堆像这样的(我试图用多种图像制作某种动画)

代码语言:javascript
复制
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必须处理所有的调用才能计算出输出(尽管只有3次调用是与特定的单帧相关的)。但是,如果我在行的开头删除video =,我可能会删除其中的10000,并且没有“内存不足”错误,但我当然没有视频输出。

这件事有办法解决吗?在视频剪辑的不同时间,数百/数千张图像被覆盖?

EN

回答 2

Stack Overflow用户

发布于 2013-09-13 20:53:41

尝试使用SetMemoryMax()函数。但要确保你有足够的自由记忆。

还请注意,如果您在32位环境中工作,最大内存容量将是2GB.

票数 0
EN

Stack Overflow用户

发布于 2014-09-27 15:49:53

尝试在覆盖“YUY2 ()”之前将视频和所有图像转换为ConvertToYUY2颜色空间,这可能会减少每次调用的重转换量,如这里所解释的--假设您的视频和图像在RGB中的clip。您可能也可以尝试使用YV12颜色空间,也许它会节省更多的内存。请注意,它将导致轻微的质量下降,因为彩色通道已经降低了分辨率的格式,而不是YV24,而且也有转换错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18720919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档