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

标签 python unix

我有来自 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/

相关文章:

android - 当设备位于 Android P 上时,有什么方法可以使用 ADB 跳过 Android 设备设置向导?

python - 使用不正确的 python 版本从 .deb 文件安装程序

c - 逐行读取文件并在c中进行比较

unix - 在哪里可以获得UNIX系统调用的列表?

python - 如何在 python 脚本中导入绘图?

python - 我的代码性能不佳

python - 提高从 HSV 到 RGB 的色彩空间转换算法的速度

c - 什么是 CPU_STATE_MAX?

linux - 通过find命令在AWK上应用Unix的Head

unix - 如何将目录树添加到 ClearCase 存储库?