Как получить реальную, фактическую продолжительность файла MP3 (VBR или CBR) на стороне сервера

Раньше я вычислял длительность серверных MP3-файлов с помощью ffmpeg, что, похоже, работало нормально. Сегодня я обнаружил, что некоторые из расчетов были неверными. Почему-то по какой-то причине ffmpeg неправильно рассчитает длительность, и, похоже, это происходит только с mp3-файлами с переменной скоростью.

При локальном тестировании я заметил, что ffmpeg напечатал две дополнительные строки зеленым цветом.

Используемая команда:

<code>ffmpeg -i song_9747c077aef8.mp3
</code>

ffmpeg говорит:

<code>[mp3 @ 0x102052600] max_analyze_duration 5000000 reached at 5015510
[mp3 @ 0x102052600] Estimating duration from bitrate, this may be inaccurate
</code>

После хорошей, теплой сессии Google я обнаружил несколько сообщений на эту тему, но решения не было найдено.

Затем я попытался увеличить максимальную продолжительность:

<code>ffmpeg -analyzeduration 999999999 -i song_9747c077aef8.mp3
</code>

После этого ffmpeg вернул только вторую строку:

<code>[mp3 @ 0x102052600] Estimating duration from bitrate, this may be inaccurate
</code>

Но в любом случае рассчитанная продолжительность была просто неправильной. Сравнивая это с VLC, я заметил, что там правильная продолжительность.

После дополнительных исследований я наткнулся на mp3info - которую я установил и использовал.

<code>mp3info -p "%S" song_9747c077aef8.mp3
</code>

mp3info затем вернулCORRECT длительность, но только как целое число, которое я не могу использовать, поскольку мне нужно более точное число здесь. Причина этого была объяснена в комментарии ниже пользователемblahdiblah - mp3info просто извлекает информацию ID3 из файла и фактически не выполняет никаких вычислений.

Я также пытался использовать mplayer для получения длительности, но, как и ffmpeg, mplayer возвращает неправильное значение.

Ответы на вопрос(4)

Ваш ответ на вопрос