2016-06-04 4 views
1

FFMPEG 비디오 스트림을 C# 창에 전달할 수 있습니까? 이제는 새 창에서 새 프로세스로 열립니다. 단지 자신의 SessionWindow로 전달하기 만하면됩니다.ffmpeg 스트림을 C# 창에 전달

public void ExecuteCommandSync(String command, String args) 
{ 
    try 
    { 
     System.Diagnostics.ProcessStartInfo procStartInfo = 
     new System.Diagnostics.ProcessStartInfo("\"" + command + "\"", args); 

     procStartInfo.RedirectStandardOutput = true; 
     procStartInfo.UseShellExecute = false; 

     procStartInfo.CreateNoWindow = true; 

     System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
     proc.StartInfo = procStartInfo; 
     proc.Start(); 

     string result = proc.StandardOutput.ReadToEnd(); 

     Debug.WriteLine(result); 
    } 
    catch (Exception objException) 
    { 

    } 
} 

private void button2_Click(object sender, EventArgs e) 
{ 
    String runPlay = @"C:\FFMPEG\bin\ffplay.exe"; 
    String Random = "udp://127.0.0.1:1234"; 

    this.ExecuteCommandSync(runPlay, Random); 
} 

PS :이 같은 ffplay 실행이 순간 . 이 응용 프로그램을 원격 데스크톱처럼 보이게하고 작동 시키려면 Windows Media Player를 사용하고 싶지 않습니다.

답변

0

답변을 찾은 것처럼 보입니다.

Process ProcFFplay = new Process(); 
     ProcFFplay.StartInfo.FileName = @"C:\FFMPEG\bin\ffplay.exe"; 
     ProcFFplay.StartInfo.Arguments = @"-probesize 32 udp://192.168.88.228:12340"; 
     ProcFFplay.StartInfo.CreateNoWindow = true; 
     ProcFFplay.StartInfo.RedirectStandardOutput = true; 
     ProcFFplay.StartInfo.UseShellExecute = false; 
     ProcFFplay.EnableRaisingEvents = true; 
     ProcFFplay.OutputDataReceived += (o, k) => Debug.WriteLine(k.Data ?? "NULL", "ffplay"); 
     ProcFFplay.ErrorDataReceived += (o, k) => Debug.WriteLine(k.Data ?? "NULL", "ffplay"); 
     ProcFFplay.Exited += (o, k) => Debug.WriteLine("Exited", "ffplay"); 
     ProcFFplay.Start(); 
     Thread.Sleep(4500);//this is time which you need to wait to get first frames approximately 
     SetParent(ProcFFplay.MainWindowHandle, this.panel1.Handle); 
     MoveWindow(ProcFFplay.MainWindowHandle, -5, -30, 1200, 800, true); //these parameteres may look weird but you hide top "stripe" using them. 

즐기십시오.