我有一个C#应用程序。我有100个JPEG(例如)。
我可以轻松将其编码为视频文件。
当它在客户端应用程序上完成编码后,我将FTP上传到我的服务器。
如果我不能将视频文件写入光盘,而是将其写入内存流(或字节数组)并通过网络服务上传,那将会“更整洁”?
我已经查看了ffmpeg文档,但作为C#开发人员,我觉得理解C示例并不自然。
我想我的第一个问题是可能的,如果有的话,任何人都可以在C#中发布示例代码吗?目前我正在使用C#中的进程类来执行ffmpeg。
答案 0 :(得分:5)
您的流程方法已经很好,只需要调整:
StartupInfo.RedirectStandardOutput = true
和StartupInfo.UseShellExecute = false
。pipe:
调用ffmpeg而不是输出文件名,这将使其写入标准输出。此外,由于无法再根据文件名确定格式,因此请确保使用-f <format>
开关。 Process.StandardOutput.BaseStream
(.BaseStream
读取,因此当StreamReader
.StandardOutput
Process.StandardOutput.BaseStream
不会弄乱任何内容时,进程正在运行到您的内存流中。我在前一段时间编写了一个thumbnailer(BSD 2子句),它有实际的代码来证明这一点。如果它是最终来自ffmpeg的图像或视频无关紧要。