2016-07-11 6 views
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"); 
    } 
} 
} 
+0

'cmd.StandardOutput.ReadToEnd()'ブロックの実行でした。なぜここにそれが必要ですか? –

+0

一部のデバッグから残っている必要があります。私は時々スマートではない –

+0

多分offtopic。なぜffmpeg.exeを実行するcmd.exeを実行したいのですか? ffmpegを直接実行するプロセスを開始する方がよいでしょう。 – gsharp

答えて

0

cmd.StandardOutput.ReadToEnd()は実行をブロックします。なぜここにそれが必要ですか? - アレクセイ・L.

これが問題

関連する問題