Bagaimana saya bisa menangkap perangkat menggunakan ffmpeg dan C#?

pemrograman


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?

C#
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.

C#
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.

コメント

タイトルとURLをコピーしました