5

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

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

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

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

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

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

4

1 回答 1

7

你的工艺方法已经不错了,只是需要调整一下:

  1. 设置StartupInfo.RedirectStandardOutput = trueStartupInfo.UseShellExecute = false
  2. 而不是输出文件名,调用 ffmpeg pipe:,这将使它写入标准输出。此外,由于无法再根据文件名确定格式,因此请确保也使用该-f <format>开关。
  3. 开始这个过程。
  4. 当进程运行到您的内存流中时,从Process.StandardOutput.BaseStream(读取.BaseStream,因此不会搞砸任何事情)。StreamReader.StandardOutput
  5. 读取仍然缓冲在Process.StandardOutput.BaseStream.
  6. 利润。

不久前我编写了一个缩略图(BSD 2-clause),它具有演示这一点的实际代码。最后是从ffmpeg出来的图像还是视频都没有关系。

于 2013-10-28T16:35:24.577 回答