我可以使用ffmpeg将JPEG输出到内存流而不是文件吗?

我有一个C#应用程序。 我有100个JPEG(例如)。

我可以轻松地将其编码为video文件。

当它在客户端应用程序上完成编码后,我将FTP上传到我的服务器。

如果我不能将video文件写入光盘而是将其写入内存流(或字节数组)并通过Web服务上传,那将是“更整洁”?

我已经查看了ffmpeg文档,但作为C#开发人员,我发现理解C示例并不自然。

我想我的第一个问题是可能的,如果有的话,任何人都可以在C#中发布示例代码吗? 目前我在C#中使用进程类来执行ffmpeg。

您的流程方法已经很好,只需要调整:

  1. 设置StartupInfo.RedirectStandardOutput = trueStartupInfo.UseShellExecute = false
  2. 使用pipe:调用ffmpeg而不是输出文件名,这将使其写入标准输出。 此外,由于无法再根据文件名确定格式,因此请确保使用-f 开关。
  3. 开始这个过程。
  4. Process.StandardOutput.BaseStream.BaseStream读取,因此StreamReader ,即.BaseStream不会弄乱任何东西),同时进程正在运行到您的内存流中。
  5. 读取Process.StandardOutput.BaseStream仍保留缓冲的任何内容。
  6. 利润。

我一会儿编写了一个缩略图 (BSD 2子句),它有实际的代码来certificate这一点。 无论是最终来自ffmpeg的图像还是video都无关紧要。