- 这个问题与我之前的问题有关: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]
个
当我用一个文件名替换“输出管道”时,它的工作原理就像charm:-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条答案
按热度按时间xoshrz7s1#
这个问题似乎可以通过向ffmpeg命令添加
-y
(override)选项并指定管道的缓冲区大小来解决。我的ffmpeg命令(请参阅aergistal的评论,为什么我还删除了
-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
个并按如下方式定义命名管道:
字符串