在windows上管道stdout到运行linux的docker容器

时间:2015-04-13 14:34:18

标签: windows ffmpeg docker boot2docker piping

我需要将仅在Windows上运行的程序的输出传输到另一个仅在Linux上运行的程序。 (这些程序在功能上与FFMPEG非常相似,因此用于测试我在Windows上将FFMPEG标准输出到Linux上的FFMPEG标准输出。)

我正在使用Docker在Windows上运行Linux容器。 Docker支持从主机到Docker容器的管道数据,如下所示:

ffmpeg -i <input> -c:a copy -v:a copy -f mpegts - | docker run ffmpeg-container -f mpegts -i - -c:a copy -c:v copy <output>

但Windows上的Docker在虚拟机中运行,并且没有本机客户端,这意味着我无法直接管道到容器。到目前为止,我还没有能够通过Windows上的虚拟机找到有关管道数据的任何示例或讨论。

我尝试过使用netcat等替代解决方案进行管道处理,但吞吐量太慢了:

视窗:

ffmpeg -i <input> -c:a copy -v:a copy -f mpegts - | ncat <ip address> <port>

Linux的:

nc -l <ip address> <port> | ffmpeg -f mpegts -i - -c:a copy -c:v copy <output>

纯粹在Windows中转码产生大约100 FPS,而netcat解决方案以0.1 FPS运行。我希望直接使用滚边会带来更好的效果。

我尝试过的其他解决方案涉及使用UDP将数据从FFMPEG流式传输到FFMPEG - 只是为了让输出来自stdout,但数据在传输过程中已损坏。我怀疑问题出在无序到达的数据包中。

任何与此类似的解决方案都将不胜感激。内容是视频数据,因此使用FFMPEG获取数据的解决方案是可以接受的。

0 个答案:

没有答案