Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Video 以编程方式在视频剪辑上添加100个图像覆盖_Video_Video Processing_Avisynth - Fatal编程技术网

Video 以编程方式在视频剪辑上添加100个图像覆盖

Video 以编程方式在视频剪辑上添加100个图像覆盖,video,video-processing,avisynth,Video,Video Processing,Avisynth,我正在寻找一个编程视频编辑解决方案,它可以提供API,用于在视频1080p剪辑的特定坐标下,在特定时间/帧中添加图像和文本覆盖,以及将大小调整为720p等 我尝试了AviSynth,但由于内存不足错误,在总共约400次覆盖后被阻止-请参阅 还有什么我可以尝试的吗?示例代码非常棒?您可以选择商业解决方案,我建议您使用,例如Adobe After Effects,它有一个API,您可以使用JavaScript jsx文件控制 商业视频和合成解决方案通常比免费/开源替代方案更健壮,具有更好的缓存和缓冲

我正在寻找一个编程视频编辑解决方案,它可以提供API,用于在视频1080p剪辑的特定坐标下,在特定时间/帧中添加图像和文本覆盖,以及将大小调整为720p等

我尝试了AviSynth,但由于内存不足错误,在总共约400次覆盖后被阻止-请参阅


还有什么我可以尝试的吗?示例代码非常棒?

您可以选择商业解决方案,我建议您使用,例如Adobe After Effects,它有一个API,您可以使用JavaScript jsx文件控制

商业视频和合成解决方案通常比免费/开源替代方案更健壮,具有更好的缓存和缓冲能力,这意味着它们可以在不耗尽内存的情况下为合成添加更多层

作为旁注:我在这里指的是后效事件,尽管它是面向构图的。对于简单的图像和文本覆盖,Adobe Premier或其他非线性编辑器将是一个更自然的选择,但它没有AFAIK脚本界面,Adobe网站上没有为此列出任何资源。但是,也可以使用AE创建长序列,并且可以使用添加到场景中的元素执行更多操作

如果您已经熟悉JavaScript,那么很明显,这只是阅读API文档中的对象、方法和属性等的问题。我在下面的文档中添加了链接

Adobe也有自己的JavaScript编辑器,但不是必需的,可以在以下位置找到:

Mac OS X:

/Applications/Utilities/Adobe Utilities CS6/ExtendScript Toolkit CS6/
窗口:

C:\Program Files\Adobe\Adobe Utilities - CS6\ExtendScript Toolkit CS6
以下示例取自创建一个comp,然后向其添加一个文本层“转到站点以获取完整脚本”:

//如有必要,创建项目 var proj=应用程序项目; 如果proj proj=app.newProject; //创建名为“我的文本组件”的新组件 变量compW=160;//补偿宽度 var compH=120;//补偿高度 变量compL=15;//补偿长度秒 var compRate=24;//复合帧速率 var compBG=[48/255,63/255,84/255]//comp背景色 var myItemCollection=app.project.items; var myComp=myItemCollection.addComp'my text',compW,compH,1,compL,compate; mycop.bgColor=compBG; 然后添加一个文本层:

var文本; 虽然myFile.eof{ text=myFile.readln; 如果text==text=\r; mycop.layers.addTexttext; } 您还可以使用JavaScript/jsx文件控制Photoshop/Illustrator,因此在这里您可以制作强大的组合/效果等。这让我想起了好的旧AREXX:-

在Auto desk购买了使用Python的Flame和Combustion等解决方案后,不再提供类似的API,但这里的价格范围相对较高

如果商业变体不是一个选项,那么您可以研究Blender,它还为Python提供了API

但请注意,Blender主要是面向3D的,但也可以用于视频合成

示例取自将文本写入屏幕:

def写入: 在屏幕上写字 宽度=render.getWindowWidth 高度=render.getWindowHeight OpenGL设置 bgl.glMatrixModebgl.GL_投影 bgl.glLoadIdentity bgl.2D0,宽度,0,高度 bgl.glMatrixModelbgl.GL_模型视图 bgl.glLoadIdentity 绘图程序 font\u id=logic.font\u id blf.positionfont_id,宽度*0.2,高度*0.3,0 建筑物尺寸单位id,50,72 blf.drawfont\u id,你好,世界 当然,你也可以编写程序脚本,比如FFmpeg,它本身就非常强大和灵活

您可以通过在命令行中向其添加参数来编写脚本,例如:

显示视频帧最后一行中从右向左滑动的文本行。假定文件“LONG_LINE”包含一行,没有换行符

drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
您只需将其放入某种批处理文件并运行它。当然,限制是您需要进行一些尝试和错误操作,以使文本和图像准确地显示在您希望的位置

我从未尝试过数百层,我怀疑它是否有内置的缓冲区/缓存来处理大量的层,但它值得一试,因为它在其他方面既免费又强大

资源:
我在寻找AdobePremier的API,但没有考虑AdobeAfterEffects:我熟悉JavaScript,所以我相信AfterEffects将是一个完美的选择。谢谢