gpt4 book ai didi

python - 模拟具有多个导出的管道。 python 够快吗?

转载 作者:太空宇宙 更新时间:2023-11-04 11:01:20 24 4
gpt4 key购买 nike

我有来自 ffmpeg 的输入字节。我想将此输出发送到其他几个 ffmpeg 进程。因为我不能为此使用 Unix 管道、套接字、..(或者我可以吗?)我使用 python 作为管道的接收端。然后一个子程序将接收到的数据复制到所有先前“注册”的导出。

感觉不对!

具体我的感觉是,这意味着大量的内存复制。它现在有效。但我真的很想了解这样做的“正确方法”。

    def writeData(self,data):
"""Write 'data' to all outputs"""
if len(self.outlets) > 0:
for outlet in self.outlets:
outlet.writeData(data)
else:
self.logger.warn("Received data but no outlets registred (yet?)")

最佳答案

编辑:感谢 Phil,他更正了早期版本中的错误(请参阅评论)。

使用bash,你可以做到

ffmpeg ... | tee >(ffmpeg ...) >(ffmpeg ...) >(ffmepg ...) > /dev/null

这会将第一个 ffmpeg 的输出通过管道传递给其他三个。

如果你不使用bash,你可以手动创建命名管道,将它们连接到ffmpeg进程并使用tee管道到命名管道:

mkfifo pipe1 pipe2
ffmpeg ... < pipe1
ffmpeg ... < pipe2
ffmpeg ... | tee pipe1 pipe2 | ffmpeg ...
rm pipe1 pipe2

上面的bash 代码基本上是一样的。命名管道的创建和删除是透明的。

关于python - 模拟具有多个导出的管道。 python 够快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4962431/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com