02/06 13:58
Carlo
Avrei bisogno di catturare le info che ffmpeg visualizza su Console, dopo essere stato lanciato da codice C# WinForm.
Allego un progetto con un pulsante [ vai ] che manda in esecuzione ffmpeg per strimmare un file in locale (solo per capire cosa mi serve).
dropbox.com/s/8t8q7dn7scpucw6/…
(si può scaricare senza registrarsi)
Nel progetto è incluso ffmpeg e un file video da 5''. Questo per ricevere aiuti anche da chi non conosce ffmpeg.
Praticamente il programma lancia ffmpeg con:
si apre la finestra CMD e vorrei copiare i messaggi che si susseguono in una listView.
Ho provato con [ vai2 ] (incluso nel progetto):
la console resta nera e l'evento si scatena solo alla fine e comunque non ricevo i dati.
Sulla finestra output di VS i dati compaiono ma solo alla fine del filmato che dura soli 5 secondi, serve solo per provare.
Qualsiasi metodo per intercettare cosa viene mostrato sulla finestra di ffmpeg mi va bene.
Grazie a chiunque si interesserà al problema.
Allego un progetto con un pulsante [ vai ] che manda in esecuzione ffmpeg per strimmare un file in locale (solo per capire cosa mi serve).
dropbox.com/s/8t8q7dn7scpucw6/…
(si può scaricare senza registrarsi)
Nel progetto è incluso ffmpeg e un file video da 5''. Questo per ricevere aiuti anche da chi non conosce ffmpeg.
Praticamente il programma lancia ffmpeg con:
System.Diagnostics.Process.Start(@"cmd.exe", "/c ffmpeg -re -i test.mp4.....
si apre la finestra CMD e vorrei copiare i messaggi che si susseguono in una listView.
Ho provato con [ vai2 ] (incluso nel progetto):
private void button2_Click(object sender, EventArgs e) { System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd.exe", "/c ffmpeg -re -i test.mp4 -c:v libx264 -preset veryfast -maxrate 500k -bufsize 1000k -pix_fmt yuv420p -g 50 -c:a aac -b:a 160k -ac 2 -ar 44100 -f flv udp://127.0.0.1:23000"); procStartInfo.RedirectStandardOutput = true; procStartInfo.UseShellExecute = false; procStartInfo.CreateNoWindow = false; System.Diagnostics.Process proc = new System.Diagnostics.Process(); proc.StartInfo = procStartInfo; proc.OutputDataReceived += cmd_DataReceived; proc.EnableRaisingEvents = true; proc.Start(); proc.BeginOutputReadLine(); // string result = proc.StandardOutput.ReadLine(); // errore sincrono asincrono // string result = proc.StandardOutput.ReadToEnd(); // errore sincrono asincrono // Console.WriteLine(result); } public void cmd_DataReceived(object sender, DataReceivedEventArgs e) { Console.WriteLine("dati in arrivo"); // controllo preliminare sull'output di VS Console.WriteLine(e.Data); // controllo preliminare sull'output di VS }
la console resta nera e l'evento si scatena solo alla fine e comunque non ricevo i dati.
Sulla finestra output di VS i dati compaiono ma solo alla fine del filmato che dura soli 5 secondi, serve solo per provare.
Qualsiasi metodo per intercettare cosa viene mostrato sulla finestra di ffmpeg mi va bene.
Grazie a chiunque si interesserà al problema.
Ultima modifica effettuata da Carlo 02/06 14:22
in programmazione tutto è permesso