Есть много аудио файлов в джокере, закодированных с помощью VBR, которые не имеют точного тега продолжительности, и командная строка FFMpeg выдаст следующее:
Оценка длительности по битрейту, это может быть неточно
(и это действительно так)
Используя libav
, мы видим, что это проверено с помощью функции has_duration()
из libavformat/utils.c
У меня есть аудиоплеер, который должен получать точную информацию о длительности, используя libav
. Я попытался полностью декодировать файл и подсчитать общее количество декодированных семплов, что является обычной рекомендацией (и точной), но это может занять более 10 секунд на 60-минутном аудиофайле, что недопустимо.
Я заметил, что есть некоторые аудиодекодеры с закрытым исходным кодом и приложения для воспроизведения музыки c, которые могут сразу получить точную продолжительность для этих файлов. Должен быть какой-то дешевый способ определения точной продолжительности? Возможно, мне поможет фрагмент или высокоуровневое описание.