我在C#应用程序中通过ProcessStartInfo调用FFmpeg但是,我无法继续收到错误;
预设'lossless_slow'的文件没有 结果
这是我的C#代码;
var processinfo = new ProcessStartInfo();
processinfo.FileName = "FFmpeg\\bin\\ffmpeg.exe";
processinfo.Arguments = "-i C:\Temp\input.mp4 -y -acodec aac -strict experimental -ab 96k -vcodec libx264 -vpre lossless_slow -crf 22 -threads 0 C:\Temp\output.mp4"
processinfo.RedirectStandardOutput = true;
processinfo.RedirectStandardError = true;
processinfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
processinfo.UseShellExecute = false;
processinfo.LoadUserProfile = true;
processinfo.EnvironmentVariables.Add("HOME", @"C:\Users\wonea\.ffmpeg");
var reg = System.Diagnostics.Process.Start(processinfo);
string output = string.Empty;
string error = string.Empty;
using (System.IO.StreamReader myOutput = reg.StandardOutput)
{
output = myOutput.ReadToEnd();
}
using (System.IO.StreamReader myError = reg.StandardError)
{
error = myError.ReadToEnd();
}
现在我把我的预设放在文件夹
中C:\ Users \ wonea \ .ffmpeg
并将其包含在Windows路径用户变量HOME中。从命令行运行FFmpeg时这很好用,但是当我在C#应用程序中发出命令时失败,为什么!?谢谢你的帮助......!
另外值得注意的是,我正在将该服务作为“网络服务”运行。
答案 0 :(得分:0)
设置HOME变量在这里看起来不错。
我唯一看到的是在你设置HOME的代码是@“C:\ Users \ wonea.ffmpeg”,你提到的文件是:C:\ Users \ wonea.ffmpeg
其中一个是拼写错误吗?
答案 1 :(得分:0)
在这种情况下,我总是启动procmon工具,它可以显示应用程序的所有文件操作。您可以根据预设文件的名称设置过滤器,并查看ffmpeg尝试找到它的位置。