使用Pipe在FFMPEG上输入和输出?

时间:2015-03-02 18:24:59

标签: c# ffmpeg pipe

我想使用ffmpeg将视频数据包转换为mjpeg,理想情况下,我想管道gob数据包并通过管道接收输出。

我正在使用C#进程来调用ffmpeg:

-f h264 -i pipe:-an -f mjpeg -q:v 1 pipe:

我使用进程.StandardInput.BaseStream管道源数据流,并从.StandardOutput.BaseStream获取返回的数据。

问题是,FFmpeg不发送数据。它坐着,显然在等待。没有错误。没有任何内容写入StandardOutput。

如果我自己尝试每个管道,它可以正常工作。这些工作:

a)传入源文件位置并通过管道获取返回的帧数据(字节写入StandardOutput)

b)通过管道传递源字节并要求Ffmpeg将结果保存到文件

这不起作用:

c)管道输入数据,并通过管道输出数据。

从@nmaier之前的回答到这个问题(Can I use ffmpeg to output jpegs to a memory stream instead of a file)我认为管道输入/管道输出应该有效。但事实并非如此。

我做错了什么?

感谢。

1 个答案:

答案 0 :(得分:1)

在一个程序中使用多个管道/多个方向似乎有一个警告。也许到目前为止你还没有实现一些多线程?

当谷歌搜索(尝试“Windows匿名管道等待终止”或“Windows匿名管道等待终止”)我发现这个: http://blogs.msdn.com/b/oldnewthing/archive/2011/07/07/10183884.aspx

本文介绍使用管道时可能出现的死锁。