我正在制作一个C#程序,它在命令提示符下一次通过ffmpeg运行多个视频文件,但即使我在代码中找不到问题,也只会打开一个实例。
private void Render()
{
length = listBox1.Items.Count;
for (int x = 0; x < length; x++) {
ThreadStuff tws = new ThreadStuff(listBox1.Items[x].ToString(),x);
Thread t = new Thread(new ThreadStart(tws.ThreadProc));
t.Start();
}
public class ThreadStuff
{
public ThreadStuff(string filename, int x)
{
Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = false;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();
cmd.StandardInput.WriteLine("ffmpeg -i \"" + filename + "\" tmp" + x.ToString() + ".mp4");
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
cmd.WaitForExit();
Console.WriteLine(cmd.StandardOutput.ReadToEnd());
using (System.IO.StreamWriter file =
new System.IO.StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "list.txt", true))
{
file.WriteLine("file tmp" + x.ToString() + ".mp4");
}
}
public void ThreadProc()
{
Console.WriteLine("Done");
}
}
}
答案 0 :(得分:0)
cmd.StandardOutput.ReadToEnd()阻止执行。你为什么需要它? - Aleksey L。
这是问题