使用spawnProcess扭曲管道两个进程

2 投票
1 回答
1110 浏览
提问于 2025-04-18 02:20

我正在尝试用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})

撰写回答