Я столкнулся с проблемой получения некоторых странных и неправильных метаданных из некоторых видеофайлов, с которыми я работал, и мне не удалось найти шаблон или какой-либо другой тип обработки, используя код и такие инструменты, как ffmpeg, mp4box, ffprobe, mediainfo, mplayer, чтобы получить реальную продолжительность видео.
Определение реальной продолжительности видео было требованием для проекта, над которым я работал, и единственный способ, который я нашел, чтобы получить его всегда правильно, - это перекодировать видеофайл с помощью ffmpeg и заставить закодированные файлы игнорировать метаданные исходного файла, например:
ffmpeg -i INPUT_FILENAME -acodec copy -vcodec copy -map_metadata -1 OUTPUT_FILENAME"
(Это может работать быстрее, чем вы ожидаете. Я был удивлен, для типа контента и среды, которую я использовал, среднее время составило 2 секунды)
... а затем получить продолжительность, используя инструмент по вашему выбору. Мне нравится mediainfo, кстати:- "mediainfo FILE --Inform =" Video;% Duration% "дает вам продолжительность в миллисекундах.