5

我需要即时将标准输出从 ffmpeg.exe 直接传输到 Web 响应流。我使用 Process/RedirectStandardOutput/etc 设置命令行来管道输出流没有问题。

但是,问题似乎是 Process.StandardOutput 的输出不是正确的原始格式。像这样的东西(伪代码):

var ffpsi = new ProcessStartInfo("ffmpeg.exe", "-i input.mp3 -acodec copy -f mp3 -")
ffpsi.UseShellExecute = false;
ffpsi.RedirectStandardOutput = true;
var ffmpegProcess = new Process();
ffpmpegProcess.StartInfo = ffpsi;

ffmpegProcess.Start();

var outputFile = new FileStream("out.mp3");
ffmpegProcess.StandardOutput.BaseStream.CopyTo(outputFile);

创建一个比原始文件大一点的文件,它显然不是有效的 MP3。

我已经使用基本流的各种编码复制策略并从异步回调中获取数据,但似乎没有任何效果。

这里有什么想法吗?我想这归结为如何将 ffmpeg stdout 的原始二进制输出转换为可以传递给响应流的 .NET 流?

4

0 回答 0