यदि आप ffmpeg चला रहे हैं तो आप आसानी से प्रगति पट्टी को कार्यान्वित कर सकते हैं। प्रति सेकंड
frame= 3366 fps=465 q=31.0 Lsize= 6474kB time=140.35 bitrate= 377.9kbits/s
और यह ताज़ा किया जाता है ~ दो बार: जबकि चल रहा है ffmpeg के उत्पादन की तरह कुछ है। आप उस पंक्ति को पार्स कर सकते हैं और प्रगति को प्रदर्शित करने के लिए आवश्यक डेटा प्राप्त कर सकते हैं। जब आप कमांड लाइन में भागते हैं, तो आप केवल एक पंक्ति को हर समय अद्यतन करते देखते हैं, लेकिन \ r के बाद लाइन लिखने के लिए ffmpeg क्या होता है। यही कारण है कि आप कई लाइनें नहीं देखते हैं। हालांकि, प्रोग्राम के त्रुटि आउटपुट पर StreamReader.ReadLine() का उपयोग करते समय, आपको प्रत्येक अपडेट के लिए एक पंक्ति मिलती है।
आउटपुट पढ़ने के लिए नमूना कोड निम्नानुसार है। आपको किसी भी रेखा को अनदेखा करना होगा जो 'फ्रेम' से शुरू नहीं होता है, शायद BeginErrorReadLine() + ErrorDataReceived का उपयोग करें यदि आप लाइनों को एसिंक्रोनस आदि पढ़ना चाहते हैं, लेकिन आपको विचार मिलता है (मैंने वास्तव में इसका परीक्षण किया है):
using System;
using System.Diagnostics;
using System.IO;
class Test {
static void Main (string [] args)
{
Process proc = new Process();
proc.StartInfo.FileName = "ffmpeg";
proc.StartInfo.Arguments = "-i " + args [0] + " " + args [1];
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.UseShellExecute = false;
if (!proc.Start()) {
Console.WriteLine ("Error starting");
return;
}
StreamReader reader = proc.StandardError;
string line;
while ((line = reader.ReadLine()) != null) {
Console.WriteLine (line);
}
proc.Close();
}
}
कोई भी? चलो, किसी ने .net –