将FFMPEG的输出重定向到Windows

时间:2016-05-31 14:34:46

标签: windows ffmpeg named-pipes interprocess

我正在尝试将视频和音频数据流式传输到Windows上的两个单独的命名管道

ffmpeg.exe -f dshow -i video="My camera name":audio="My microphone name" -map 0:1 -ac 1 -f f32le \\.\pipe\audioStream -map 0:0 -f mjpeg \\.\pipe\videoStream

问题是FFMPEG似乎不明白输出\\.\pipe\audioStream\\.\pipe\videoStream是管道并将它们视为文件。

  1. 如果在FFMPEG启动时已经创建了管道,它想要覆盖它们并失败。
  2. 否则,它会抱怨该路径不存在且失败。
  3. 据我所知,指定pipe:协议应该可以解决问题,但我无法弄清楚如何正确使用它,即使使用单个管道也是如此。我试过了:

    1. pipe:pipeName
    2. pipe:pipe\pipeName
    3. pipe:\\.\pipe\pipeName
    4. pipe://pipeName
    5. pipe://pipe\pipeName
    6. pipe://\\.\pipe\pipeName
    7. 我总是得到相同的结果:输出被写入控制台而不是管道。如果在FFMPEG启动时管道已经存在,则没有任何东西连接到管道。

      是否可以在Windows上使用带有命名管道的FFMPEG?如果是,那么这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

根据我的经验,使用FFmpeg传递到多个输出从未用过。建立管道涉及阻塞类型的数据传输。馈送器FFmpeg希望馈送的程序在发送其他卡盘之前先“吃掉”一个数据卡盘。在有两个提要的情况下,FFmpeg不知道哪个提要的程序具有优先权,并且在有疑问时FFmpeg不执行任何操作,因此FFmpeg永远挂起,等待两个管道的另一端发生某些事情。