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

时间:2013-10-28 10:26:11

标签: ffmpeg c#

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

我可以轻松将其编码为视频文件。

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

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

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

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

1 个答案:

答案 0 :(得分:5)

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

  1. 设置StartupInfo.RedirectStandardOutput = trueStartupInfo.UseShellExecute = false
  2. 使用pipe:调用ffmpeg而不是输出文件名,这将使其写入标准输出。此外,由于无法再根据文件名确定格式,因此请确保使用-f <format>开关。
  3. 开始这个过程。
  4. Process.StandardOutput.BaseStream.BaseStream读取,因此当StreamReader .StandardOutput Process.StandardOutput.BaseStream不会弄乱任何内容时,进程正在运行到您的内存流中。
  5. 阅读{{1}}。
  6. 中仍然保留的任何内容
  7. 利润。
  8. 我在前一段时间编写了一个thumbnailer(BSD 2子句),它有实际的代码来证明这一点。如果它是最终来自ffmpeg的图像或视频无关紧要。