hsafavi Ответов: 1

Как я могу поймать устройства, использующие ffmpeg и C#?


Я хочу поймать устройства с помощью ffmpeg.exe я использовал класс Process и связанную с ним команду ffmpeg, но безуспешно

Что я уже пробовал:

я использовал следующий код, но на выходе ничего не вышло!! я думаю, что это происходит потому, что процесс вышел, как только process.start() был выполнен. как я могу это сделать?

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();
    }
}

1 Ответов

Рейтинг:
2

Graeme_Grant

Вы хотите "захватить" результат? Это должно ответить на ваш вопрос: Захват вывода консоли из приложения .NET (C#) - переполнение стека[^]


hsafavi

нет, это не работает. процесс.Результатом StandardOutput.ReadToEnd() является пустая строка. я думаю потому что процесс вышел

Graeme_Grant

Вы пробовали использовать его так, как они описывают? Решение было принято, значит, оно должно сработать. startInfo.RedirectStandardOutput, согласно связанному решению, указано, что оно должно быть установлено на true, нет false.

hsafavi

Я так и сделал но безуспешно

Graeme_Grant

Существует более одного ответа на эту ссылку... Вы смотрели на решение под ним? Решение от ShitalShah[^]

hsafavi

опять безрезультатно