当vspipe调用Python主程序时,我们如何设置输出节点?
以下内容不起作用:
def main(argv):
...
...
vapoursynth code
...
clip.set_output()
if __name__ == "__main__":
main(sys.argv[1:])这也不是:
....
if __name__ == "__main__":
clip = main(sys.argv[1:])
clip.set_output()错误消息是:检索输出节点失败。指定的索引无效?
发布于 2017-07-10 21:20:00
很抱歉回答得这么晚,但我认为这需要解决:
当脚本是__name__解释器的主要目标时,Python变量通常包含"__main__"。
然而,鲜为人知的是,因为没有文档记录:当vspipe或任何其他基于vsscript的应用程序运行您的脚本时,字符串"__vapoursynth__"存储在__name__中。
因此你的支票应该是这样的:
if __name__ == "__vapoursynth__":
clip = main()
clip.set_output()发布于 2017-04-15 04:46:18
如果您的VapourSynth脚本没有使用输入视频文件名进行参数化,即输入文件名在脚本中是硬编码的,例如,在语句中
video = core.ffms2.Source("InputVideo.mkv")你可以直接写整个脚本-
(没有定义main()函数(示例代码的第一行)
和末尾的if块)
- or -
将它们替换为
def main():在开始时,
if __name__ == "__main__":
main()在最后。
你可以把vspipe看作一个专门的Python解释器,这样它就可以(从你的命令clip.set_output()中)知道要传输哪个视频,例如在命令中
vspipe -y -p your_script.vpy - | ffmpeg -i - output.mp4或者例如在命令中从哪个视频输出未压缩的视频
vspipe -y -p your_script.vpy uncompressed_output.y4mhttps://stackoverflow.com/questions/42279927
复制相似问题