[ad_1]
Saya ingin menangkap perangkat menggunakan ffmpeg.exe. saya menggunakan kelas Proses dan perintah ffmpeg terkait tetapi tidak berhasil
Apa yang saya coba:
saya menggunakan kode berikut tetapi hasilnya tidak ada!! Saya pikir ini terjadi karena proses keluar segera setelah process.start() dijalankan. bagaimana saya bisa melakukan itu?
static void Main(string[] args) { ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.CreateNoWindow = false; startInfo.UseShellExecute = false; startInfo.FileName = "ffmpeg.exe"; startInfo.Arguments = "-list_devices true -f dshow -i dummy"; startInfo.RedirectStandardOutput = false; try { using (Process process = Process.Start(startInfo)) { while (!process.StandardOutput.EndOfStream) { string line = process.StandardOutput.ReadLine(); Console.WriteLine(line); } process.WaitForExit(); } } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.ReadKey(); } }
Solusi 1
Anda ingin “menangkap” hasilnya? Ini seharusnya menjawab pertanyaan Anda: Menangkap keluaran konsol dari aplikasi .NET (C#) – Stack Overflow[^]
Solusi 2
Saya memiliki masalah yang sama. Saya mengalihkan keluaran standar, tetapi FFmpeg mengeluarkan pesan teks ke kesalahan standar.
static void Main(string[] args) { ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.CreateNoWindow = false; startInfo.UseShellExecute = false; startInfo.FileName = "ffmpeg.exe"; startInfo.Arguments = "-hide_banner -list_devices true -f dshow -i dummy"; startInfo.RedirectStandardError = true; try { using (Process process = Process.Start(startInfo)) { while (!process.StandardError.EndOfStream) { string line = process.StandardError.ReadLine(); Console.WriteLine(line); } process.WaitForExit(); } } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.ReadKey(); } }
Tip: gunakan -hide_banner dalam argumen ffmpeg dan langkah Anda selanjutnya akan lebih mudah 🙂
Saya harap ini membantu seseorang.
[ad_2]
コメント