繁体   English   中英

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

[英]ffmpeg output pipeing to named windows pipe

这个问题与我之前的问题有关: 将原始帧转换为webm直播

我想将视频传输到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] File '\\\\.\\pipe\\from_ffmpeg' already exists. Overwrite ? [y/N]

当我用文件名替换“输出管道”时,它就像魅力一样: -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

似乎可以通过在ffmpeg命令中添加-y选项并为管道指定缓冲区大小来解决问题。

我的ffmpeg命令(请参阅airgistal的评论为什么我也删除了-pass 1标志): - -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

并定义命名管道如下:

p_from_ffmpeg = new NamedPipeServerStream(pipename_from, 
    PipeDirection.In, 
    1, 
    PipeTransmissionMode.Byte, 
    System.IO.Pipes.PipeOptions.WriteThrough, 
    10000, 10000);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM