मैं ffmpeg और C# का उपयोग करके डिवाइस कैसे पकड़ सकता हूँ?


मैं ffmpeg.exe का उपयोग करके डिवाइस पकड़ना चाहता हूं। मैंने प्रोसेस क्लास और संबंधित ffmpeg कमांड का उपयोग किया लेकिन कोई सफलता नहीं मिली

मैंने क्या प्रयास किया है:

मैंने निम्नलिखित कोड का उपयोग किया लेकिन आउटपुट कुछ भी नहीं है!! मुझे लगता है कि ऐसा इसलिए होता है क्योंकि प्रोसेस.स्टार्ट() निष्पादित होते ही प्रक्रिया बाहर निकल जाती है। मेरे द्वारा ऐसा कैसे किया जा सकता है?

सी#
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

आप आउटपुट को “कैप्चर” करना चाहते हैं? इसे आपके प्रश्न का उत्तर देना चाहिए: .NET एप्लिकेशन (सी#) से कंसोल आउटपुट कैप्चर करना – उत्कृष्ट पुस्तकालय[^]

समाधान 2

मेरी भी यही समस्या थी। मैं मानक आउटपुट को रीडायरेक्ट कर रहा था, लेकिन एफएफएमपीईजी टेक्स्ट संदेशों को मानक त्रुटि पर आउटपुट करता है।

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

युक्ति: ffmpeg तर्क में -hide_banner का उपयोग करें और आपका अगला कदम आसान हो जाएगा 🙂

मुझे आशा है कि इससे किसी को मदद मिलेगी।

コメント

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