【发布时间】:2016-09-29 15:18:18
【问题描述】:
我正在尝试将视频和音频数据流式传输到 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 是管道并将它们视为文件。
- 如果 FFMPEG 启动时已经创建了管道,它想要覆盖它们并失败。
- 否则,它会抱怨路径不存在而失败。
据我了解,指定 pipe: 协议应该可以解决问题,但我无法弄清楚如何正确使用它,即使是使用单个管道也是如此。我试过了:
pipe:pipeNamepipe:pipe\pipeNamepipe:\\.\pipe\pipeNamepipe://pipeNamepipe://pipe\pipeNamepipe://\\.\pipe\pipeName
我总是得到相同的结果:输出被写入控制台而不是管道。如果 FFMPEG 启动时管道已经存在,则没有任何东西连接到管道。
是否可以在 Windows 上将 FFMPEG 与命名管道一起使用?如果是,这样做的正确方法是什么?
【问题讨论】:
-
我不知道,但是您是否考虑过使用库而不是命令行版本?启动一个子进程来为你做你的工作并不真正符合 Windows 之道。 :-)
-
我已经将它与单个输入和输出管道一起使用,没有问题...不需要使用
pipe:,我确实使用-y参数来强制覆盖。我确定它也适用于多个管道......也许你使用的是旧的 FFmpeg 版本?
标签: windows ffmpeg named-pipes interprocess