0
コマンドプロンプトでffmpegを使って複数のビデオファイルを同時に実行するC#プログラムを作成していますが、インスタンスは一度に開きます。複数のCMDインスタンスをC#で同時に開こうとしています
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");
}
}
}
'cmd.StandardOutput.ReadToEnd()'ブロックの実行でした。なぜここにそれが必要ですか? –
一部のデバッグから残っている必要があります。私は時々スマートではない –
多分offtopic。なぜffmpeg.exeを実行するcmd.exeを実行したいのですか? ffmpegを直接実行するプロセスを開始する方がよいでしょう。 – gsharp