Я изо всех сил пытаюсь получить длину/продолжительность видео с помощью FFMPEG. Ниже приведен код, который я получил от Google, но когда я запускаю метод, он возвращает пустую строку. Какие бы хитрости я не мог, но не успел. Может ли кто-нибудь, пожалуйста, направить меня, что здесь происходит не так?Получение длины видео с использованием ffmpeg/ffprobe не работает
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();
}
Вы должны RedirectStandardOutput и прочитать весь вывод из FFMPEG. FFMPEG помещает там «много» текста. После запуска FFMPEG сначала WaitForExit, чтобы FFMPEG завершил работу. –
Работает ли команда 'ffprobe', если вы запускаете ее вручную, не зашифрованную с помощью интерфейса командной строки? Это нужно попробовать, прежде чем приступать к скрипту. – LordNeckbeard
Нет. Я не пробовал ffprobe с использованием интерфейса командной строки, но я попробовал несколько команд ffprobe, установив его в код выше, но каждый раз они возвращают пустую строку в качестве вывода, а печальной частью является то, что они должны возвращать только продолжительность видео, что точно Мне нужно. –