Ich habe Schwierigkeiten, die Länge/Dauer eines Videos mit FFMPEG zu bekommen. Unten ist der Code, den ich von Google bekommen habe, aber wenn ich die Methode benutze, gibt sie einen leeren String zurück. Habe irgendwelche Verbesserungen vorgenommen, aber keinen Erfolg. Kann mir bitte jemand sagen, was hier schief läuft?Die Länge des Videos mit ffmpeg/ffprobe funktioniert nicht
private static void GetVideoDuration()
{
string basePath = Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar;
string filePath = basePath + @"1.mp4";
string cmd = string.Format("-v error -select_streams v:0 -show_entries stream=duration -of default=noprint_wrappers=1:nokey=1 {0}", filePath);
Process proc = new Process();
proc.StartInfo.FileName = Path.Combine(basePath, @"ffprobe.exe");
proc.StartInfo.Arguments = cmd;
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.ReadToEnd()) != null)
{
Console.WriteLine(line);
}
proc.Close();
}
Sie müssen RedirectStandardOutput und lesen Sie alle Ausgaben von FFMPEG. FFMPEG hat "viel" Text dort hingelegt. Nach dem Start von FFMPEG muss WaitForExit zuerst FFMPEG den Auftrag beenden lassen. –
Funktioniert der Befehl 'ffprobe', wenn Sie ihn manuell ausführen, nicht über die Befehlszeilenschnittstelle? Dies sollte versucht werden, bevor Sie versuchen, es zu skripten. – LordNeckbeard
Nein Ich habe ffprobe nicht mit der Befehlszeilenschnittstelle versucht, aber ich habe einige ffprobe-Befehle ausprobiert, indem ich sie in den obigen Code einfüge, aber jedes Mal geben sie leere Zeichenfolgen als Ausgabe zurück. Der traurige Teil ist, dass sie nur die Videodauer zurückgeben sollen Ich brauche. –