C#应用程序 - 从命令行运行FFMpeg不起作用
问题描述:
我试图从C#中的命令行运行FFMpeg。以前我是从“CMD.exe”运行它的,它工作正常,但是需要本地安装ffmpeg来配置我的系统环境变量。所以我想直接从“ffmpeg.exe”运行它。我正在使用下面的代码(所有路径都是正确的),并且什么也没有发生:C#应用程序 - 从命令行运行FFMpeg不起作用
string programToRun = "C:\\Users\\dkahn\\Documents\\PlaybackTool\\PlaybackTool\\Desktop\\Source\\Player\\Player\\ffmpeg\\ffmpeg.exe";
string directoryName = "C:\\Users\\dkahn\\Documents\\PlaybackTool\\PlaybackTool\\Desktop\\Source\\Player\\test\\test1-1.mp4";
string command = "@ffmpeg -i test1-1.mp4 -r 1 -s 180x101 test1-1\\output_%04d.png";
Process cmd = new Process();
cmd.StartInfo.FileName = programToRun;
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;
cmd.StartInfo.WorkingDirectory = directoryName;
cmd.Start();
cmd.StandardInput.WriteLine(command);
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
cmd.WaitForExit();
有没有人有任何见解?
答
这就是我解决这个问题的方法。
var startInfo = new ProcessStartInfo(AppDomain.CurrentDomain.BaseDirectory + "ffmpeg.exe");
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.WorkingDirectory = path + "\\";
startInfo.Arguments = "-ss " + _startTime + " -i " + info.FullName + " -t " + _duration + " -map 0 -c copy -c:a copy " + "sample" + GetExtension(info);//-acodec
var processn = Process.Start(startInfo);
processn.EnableRaisingEvents = true;
processn.WaitForExit();
其中path是您的目录,info是您要处理的文件。
“ffmpeg.exe”的参数是“@ ffmpeg”的一部分吗? – dcg
也许不是,那是当我从命令行(cmd.exe)运行它时。但我试图删除它,它仍然无法正常工作。 –
尝试将'cmd.StartInfo.Arguments'设置为'-i test1-1.mp4 -r 1 -s 180x101 test1-1 \\ output_%04d.png'并删除使用'StandardInput'的行。 – dcg