头像
s_wordfeng
帖子: 2
注册时间: 2017-08-14 20:15

[挖坑] 在 VapourSynth 内跨进程调用 AviSynth 滤镜

据我所知,现有的在 VS 内调用 AVS 滤镜的方案多少都有一些问题。除了兼容性之外,还有由于 AVS 单线程特性带来的效率问题,和 64 位 VS 没有办法调用 32 位 AVS 滤镜的问题。

参考 MP_Pipeline,我打算做一个类似的实现,不同的是管理 AVS 子进程的是 VS Plugin。具体一点,VS Plugin (master) 会启动一些 AVS worker 进程,在每个 worker 上调用各自的滤镜(脚本),并且每个 worker 都会进行 prefetch 以利用多核 CPU。 master 在配置好 worker 的滤镜之后, worker 之间的数据交互可以直接进行,不需要再通过 master。进程之间的控制指令通过 RPC 方式调用,帧数据使用共享内存方式传输。

这种方式优势在于完全隔离 VS 和 AVS 的内存空间以避免兼容问题,Pipeline 方式使 AVS 充分利用多核心,并且 VS 可以调用 32 位或者 64 位的 AVS。更进一步,可以把 RPC&SHM 部分的协议做成通用的东西,这样未来还可以实现 VS 多进程,甚至分布式压制。

由于我对 AVS 和 VS 内部的实现还不是非常了解,对于这个思路还请各位大佬指教一下。坑放在 https://github.com/swordfeng/vapoursynt ... p-avisynth ,依赖 boost 和 thrift,还是只挖了一点的状态。
头像
tundrawork
帖子: 1
注册时间: 2017-08-14 23:23

Re: [挖坑] 在 VapourSynth 内跨进程调用 AviSynth 滤镜

给真正的大佬跪了。

回到 “VapourSynth”