使用spawnProcess扭曲管道两个进程
我正在尝试用Python2.7和Twisted来连接两个进程。
我想做的是:
myImagesPipesGenerator | ffmpeg -i -
myImagesPipesGenerator这个程序在标准输出(stdout)上不断输出一系列BMP格式的图片。FFmpeg则从标准输入(stdin)获取这些图片,并把它们编码成视频。
所以我需要:
generatorTransport = reactor.spawnProcess(myInputProtocol, "myImagesPipesGenerator", ["myImagesPipesGenerator",], env=None, childFDs={0:'w', 1:'r', 2:'r'})
ffmpegTransport = reactor.spawnProcess(myOutputProtocol, "ffmpeg", ["ffmpeg","-i","-"], env=None, childFDs={0:__What_to_use_here__, 1:'r', 2:'r'})
如何获取生成器的输出文件描述符,以便我可以在ffmpegTransport的childFDs中使用它?
谢谢你的帮助,
1 个回答
2
自己创建一个管道:
read, write = os.pipe()
然后把文件描述符传递给你希望子进程使用的地方。大概是这样的:
generatorTransport = reactor.spawnProcess(..., childFDs={1: write})
ffmpegTransport = reactor.spawnProcess(..., childFDs={0: read})