【发布时间】:2014-05-30 07:50:55
【问题描述】:
我正在尝试使用 System.Diagnostics.Process 执行 this code。它在命令行中运行良好。但在 C# 中,| 字符失败。
var myProcess = new Process();
var p = new ProcessStartInfo();
var sArgs = " -i emp.mp3 -f wav - | neroAacEnc -ignorelength -q 0.5 -if - -of emp.mp4";
p.FileName = "ffmpeg.exe";
p.CreateNoWindow = false;
p.RedirectStandardOutput = false;
p.UseShellExecute = false;
p.Arguments = sArgs;
myProcess.StartInfo = p;
myProcess.Start();
myProcess.WaitForExit();
它给出了以下错误:
无法为“|”找到合适的输出格式:参数无效
我在 stackoverflow 上环顾四周,发现以下提示,但它也不起作用:
var psi = new ProcessStartInfo("ffmpeg.exe");
psi.Arguments =
"\"-i emp.mp3 -f wav -\" | \"neroAacEnc -ignorelength -q 0.5 -if - -of emp.mp4\"";
psi.CreateNoWindow = false;
psi.UseShellExecute = false;
var process = new Process { StartInfo = psi };
process.Start();
process.WaitForExit();
给出以下错误:
无法识别的选项'i emp.mp3 -f wav -'
未能设置值“|”对于选项'i emp.mp3 -f wav -'
【问题讨论】:
-
“|” character 不是 ffmpeg 的参数,它是 shell 中的命令重定向运算符(管道),用于将一个程序的输出重定向到另一个程序的输入。
-
您知道如何在不使用管道并使用 C# 代码的情况下重定向输入吗?
-
您可以调用
cmd.exe并将完整的命令传递给它。 -
谢谢,我以前试过,但肯定漏掉了什么,因为它现在可以正常工作了!
标签: c# command-line ffmpeg