这个问题与我的之前的问题有关:将原始帧转换为WebM实时流
我想将视频导入到ffmpeg中,并通过另一个管道读取返回数据,但是我无法在Windows上将ffmpeg.exe
的输出导出到命名管道。
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]
当我将“输出管道”替换为文件名时,它可以正常运行:-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中写入命名管道?
编辑:当我强制使用-y
选项向管道写入时,会出现以下错误:Could not write header for output file #0 (incorrect codec parameters?): Error number -32 occurred
输入#0,rawvideo,来自'\\.\pipe\to_ffmpeg': Duration: N/A, start: 0.000000, bitrate: 77460 kb/s Stream #0:0: Video: rawvideo (RGB[24] / 0x18424752), rgb24, 656x492, 77460 k b/s, 10 tbr, 10 tbn, 10 tbc [libvpx @ 03a9ff80] v1.4.0 输出#0,webm,到'\\.\pipe\from_ffmpeg': Metadata: encoder : Lavf56.40.101 Stream #0:0: Video: vp8 (libvpx),yuv420p,656x492,q=-1--1,pass 1,200 kb/ s,10 fps,1k tbn,10 tbc Metadata: encoder : Lavc56.58.100 libvpx 流映射: Stream #0:0 -> #0:0 (rawvideo (native) -> vp8 (libvpx))
- Lucas