C#-提取图像时解析ffmpeg标准输出

lee*_*rog 5 c# ffmpeg

我正在通过从C#代码启动ffmpeg进程来提取单个视频帧。默认行为是将这些映像写入磁盘。但是为了加快处理速度,我想重定向ffmpeg标准输出以接收流并在程序中进一步处理它。

我正在使用与此类似的参数:

-i \"" + Filename + "\" -vf \"scale=640:-1\" -an -vframes 100 -r 1 -f image2 -
Run Code Online (Sandbox Code Playgroud)

这会将字节流重定向到标准输出,我可以使用将其重定向到程序process.StartInfo.RedirectStandardOutput = true

对于电影流,这可能很好用,因为我只有一个单一的输出,但是上面的调用将产生10个单个图像(当写入硬盘时),我如何解析标准输出的字节流并将其拆分为单个文件?

lee*_*rog 4

我找到了一个似乎有效的解决方案,但奇怪的是ffmpeg 文档中没有提到:用作image2pipe输出格式。

所以对于上面的例子来说,它是:

-i \"" + Filename + "\" -vf \"scale=640:-1\" -an -vframes 100 -r 1 -f image2pipe -
Run Code Online (Sandbox Code Playgroud)

这会将字节流重定向到标准输出并允许捕获和解析图像