ffmpeg에서 입력 한 바이트가 있습니다. 이 출력물을 다른 여러 ffmpeg 프로세스로 보내고 싶습니다. Unix Pipe, Socket, ..을 사용할 수 없기 때문에 파이썬을 파이프의 수신단으로 사용하고 있습니다. 서브 루틴은 이전에 등록 된 모든 콘센트에 수신 된 데이터를 복사합니다.여러 콘센트가있는 파이프를 에뮬레이트하십시오. 파이썬은 충분히 빠르지?
잘못된 느낌입니다.
특히 이것은 많은 메모리 복사를 의미한다는 느낌이 들었습니다. 바로 지금 작동합니다. 그러나 나는 이것을하기의 "옳은 길"에 대해 머리를 쓰는 것을 진지하게 좋아한다.
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?)")
티는 기본적으로 위의 파이썬 물건과 같은 일을하고, 오른쪽 : 그것은 당신이 설명하는지 만합니까? 파이썬 방법이 상당히 느린 지 궁금 해서요. 내가 융통성있게 파이썬을 선호하기 때문에 나는 묻는다. – Thorsten
@ 토르 스텐 : 저는 Greg를 따릅니다. 아마도 이것이 병목 현상이되지는 않을 것이지만, 정말로 확신하기 위해서 스스로 시도해야 할 것입니다. I/O는 대개 더 큰 덩어리로 이루어지기 때문에 파이썬이 많은 오버 헤드를 구성하지는 않을 것이라고 생각합니다. –
조심해서, 이것은 첫 번째, 두 번째 및 세 번째 ffmpeg의 출력을 네 번째 파이프로 파이프합니다. 더 나은 패턴은 "a | tee> (b)> (c)> (d)>/dev/null" – Phil