【发布时间】:2011-12-30 15:16:48
【问题描述】:
我正在尝试将 ffmpeg 作为 .NET (C#) 中的进程启动,但在某些情况下,取决于参数(特别是,如果我省略视频参数以创建音频文件),它会停止.它启动,输出一些行,但随后停止(使用 0% CPU)。当父 .NET 进程被杀死时,它会继续,如果我让它继续,ffmpeg 会正确生成文件。我认为可能是由于使用Peek() 来查看流,所以我将其简化为以下行为,其行为相同:
_process = new Process
{
StartInfo =
{
UseShellExecute = false,
RedirectStandardOutput = false,
RedirectStandardError = true,
FileName = "c:\\ffmpeg.exe",
Arguments = string.Format(
"-i {0} {1} {2} {3} -y {4}", inputPath, videoArgs, audioArgs, options, outputPath)
}
};
_process.Start();
_process.WaitForExit();
ffmpeg 会在停止前输出有关输入视频/音频流的信息。通过命令提示符执行命令按预期工作。
有谁知道问题出在哪里?
编辑:
补充一下,我试过UseShellExecute = true(和RedirectStandardError = false),这很有效。但是,我仍然需要阅读输出,所以这对我没有帮助。
【问题讨论】: