Я пытаюсь получить продолжительность и количество кадров из файла WebM с помощью FFMPEG и libavformat. Я адаптирую некоторый код, который изначально был написан для работы с MP4, а при передаче MP4 он работает нормально.Поиск продолжительности/количества кадров WebM с использованием FFMPEG/libavformat
У меня есть FFMPEG 2.1, скомпилированный с помощью синтаксического анализатора и декодера vp8 и демультиплексора matroska.
У меня есть указательна видеопоток, *video_st
. Код ищет количество кадров в video_st->nb_frames
и на время в video_st->duration
. Кажется, что они оба равны 0.
В документах API для video_st->duration
(https://ffmpeg.org/doxygen/trunk/structAVStream.html#a4e04af7a5a4d8298649850df798dd0b) говорится, что «если исходный файл не указывает продолжительность, но определяет биттрейт, это значение будет оцениваться по битрейту и размеру файла. " Я могу подтвердить, что этот файл задает длительность и биттрейт (поскольку я тестировал его на своем рабочем столе с помощью ffmpeg -i
). Поэтому кажется странным, что это возвращает 0. Возможно, моя конфигурация сборки FFMPEG неверна?
Что касается nb_frames
, в документах указано «количество кадров в этом потоке, если известно, или 0». Есть ли что-нибудь, что я могу сделать, если это вернет 0? Опять же, ffmpeg -i
действительно возвращает оценку для fps; это было бы достаточно хорошим, так как я мог бы оценить количество кадров с этим и продолжительностью.
Спасибо!
Спасибо! Отличное объяснение. Использование частоты кадров для оценки количества кадров достаточно для моих целей, и ваше предложение о продолжительности работы. Мне просто нужно выяснить, как оценивать немного более точно, поскольку я иногда вижу пару черных кадров в конце или последнюю пару кадров отключается. – gcgrant