johnsonspn
帖子: 8
注册时间: 2020-05-31 18:18

[求助]如何将帧序列导入VS

如题,在一个文件夹中有且只有一定数量的图像帧,将它们导入VS并设定帧率,请问该如何编写脚本?
在这方面我只会简单的合成操作(如longvideo = a+b+c),在导入大量图像帧时在效率上是不可行的。
还有什么高效率的方法?请大佬们给予指导,非常感谢。
附原来编写的脚本:
import vapoursynth as vs
import mvsfunc as mvf
import sys
import havsfunc as haf
import vsTAAmbk as taa
import CSMOD as cs
import nnedi3_resample as nnrs
import adjust
core = vs.get_core(threads=8)
core.max_cache_size = 8000
a=r"C:\Users\guanyi\Documents\after\000000.png"

src = core.lsmas.LWLibavSource(a,threads=1)
src = core.imwri.Read(a, alpha=False)
src = mvf.ToYUV(src,css='420',depth=16)
src.set_output()
johnsonspn
帖子: 8
注册时间: 2020-05-31 18:18

Re: [求助]如何将帧序列导入VS

简而言之,就是如何将大量图像文件导入VS,并合成为视频
头像
Sakura2020
帖子: 15
注册时间: 2020-03-19 15:22

Re: [求助]如何将帧序列导入VS

如果只是帧序列,写个for循环就好了,这是python语法的问题
比如有 0.png, 1.png, ... 999.png 共1000帧,像这样导入
result = core.imwri.Read(r"C:\image\0.png")
for i in range(1, 1000):
    image = "C:\\image\\" + str(i) + ".png"
    image = core.imwri.Read(image)
    result += image

result.set_output()

当然拿到帧序列往往可能以 000, 001, ... 的方式命名,用rjust()方法填充一下
result = core.imwri.Read(r"C:\image\000.png")
for i in range(1, 1000):
    image = "C:\\image\\" + str(i).rjust(3,'0') + ".png"
    image = core.imwri.Read(image)
    result += image

result.set_output()

要注意的是imwri.Read()读取图像后,默认格式是 30fps RGB 8bit,记得自己修改
以及,src = core.lsmas.LWLibavSource(a,threads=1) 这样的语句是没有必要的
johnsonspn
帖子: 8
注册时间: 2020-05-31 18:18

Re: [求助]如何将帧序列导入VS

问题已解决,谢谢大家。

回到 “VapourSynth”