Я пытаюсь передать поток в ffmpeg и записать его вывод, чтобы я мог передать другой поток в моем коде.Вот пример кода, который просто останавливает продолжение процесса после того, как я пишу в его StandardInput.BaseStream
.
internal class Program
{
private static void Main(string[] args)
{
var inputFile = @"C:\Temp\test.mp4";
var outputFile = @"C:\Temp\test.mp3";
var process = new Process
{
StartInfo = new ProcessStartInfo
{
RedirectStandardInput = true,
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false,
CreateNoWindow = true,
Arguments = "-i - -f mp3 -",
FileName = "ffmpeg.exe"
},
EnableRaisingEvents = true
};
process.ErrorDataReceived += (sender, eventArgs) => Console.WriteLine(eventArgs.Data);
process.Start();
process.BeginErrorReadLine();
using (var input = new FileStream(inputFile, FileMode.Open))
using (var output = new FileStream(outputFile, FileMode.Create))
{
input.CopyTo(process.StandardInput.BaseStream);
process.StandardOutput.BaseStream.CopyTo(output);
}
process.WaitForExit();
Console.WriteLine("done");
Console.ReadLine();
}
}
Этот пример почти такой же, как в ответе на этот вопрос: https://stackoverflow.com/a/8999542/2277280
Что я делаю не так?Почему процесс не продолжается?Это специфично для ffmpeg?