ffmpeg输出管道到命名窗口管道

时间:2015-08-22 15:26:37

标签: c# windows ffmpeg pipe named-pipes

此问题与我之前提出的问题有关:Converting raw frames into webm live stream

我想将视频传输到ffmpeg并通过另一个管道将其读回来,但我无法将ffmpeg.exe的输出传递给Windows上的命名管道。

我在C#中对管道的定义:

NamedPipeServerStream p_to_ffmpeg;
NamedPipeServerStream p_from_ffmpeg;
p_to_ffmpeg = new NamedPipeServerStream("to_ffmpeg", PipeDirection.Out, 1, PipeTransmissionMode.Byte);
p_from_ffmpeg = new NamedPipeServerStream("from_ffmpeg", PipeDirection.In, 1, PipeTransmissionMode.Byte);

然后我在一个单独的流程中使用以下选项启动ffmpeg.exe-f rawvideo -vcodec rawvideo -video_size 656x492 -r 10 -pix_fmt rgb24 -i \\.\pipe\to_ffmpeg -c:v libvpx -pass 1 -f webm \\.\pipe\from_ffmpeg

ffmpeg.exe拒绝写入管道,但出现以下错误:File '\\.\pipe\from_ffmpeg' already exists. Overwrite ? [y/N]

当我更换"输出管道时#34;使用文件名,它就像魅力:-f rawvideo -vcodec rawvideo -video_size 656x492 -r 10 -pix_fmt rgb24 -i \\.\pipe\to_ffmpeg -c:v libvpx -pass 1 -f webm output.webm

如何让ffmpeg写入windows中的命名管道?

编辑:当我强制使用ffmpeg' -y选项写入管道时,出现以下错误:Could not write header for output file #0 (incorrect codec parameters ?): Error number -32 occurred

1 个答案:

答案 0 :(得分:3)

似乎可以通过在ffmpeg命令中添加-y -f rawvideo -vcodec rawvideo -video_size 656x492 -r 10 -pix_fmt rgb24 -i \\.\pipe\to_ffmpeg -c:v libvpx -f webm \\.\pipe\from_ffmpeg选项并为管道指定缓冲区大小来解决问题。

我的ffmpeg命令(请参阅airgistal的评论,为什么我也删除了p_from_ffmpeg = new NamedPipeServerStream(pipename_from, PipeDirection.In, 1, PipeTransmissionMode.Byte, System.IO.Pipes.PipeOptions.WriteThrough, 10000, 10000); 标志):SearchResponse

定义命名管道如下:

class MyClass
{
    public SearchResponse GetSearchResponse()
    {
        return null;
    }
}
相关问题