流式传输ffmpeg.exe标准输出

时间:2012-11-11 17:19:51

标签: c# ffmpeg

我需要将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流?

0 个答案:

没有答案