Как рассчитать продолжительность файла MP3 в удаленном месте без загрузки всего файла?

Я веду независимый музыкальный сайт. У нас есть огромный репозиторий файлов MP3, хранящихся на нашей CDN Amazon S3. Мы никогда не заботились о сохранении продолжительности аудио в базе данных при загрузке.

Теперь мне нужна длина каждого из этих файлов в минутах и ​​секундах. Я не уверен, установлена ​​ли информация TLEN ID3 во всех файлах, но я точно знаю, что все файлы имеют битрейт 128 кбит/с.

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


person Munim    schedule 11.06.2012    source источник
comment
Я думаю, что здесь уже был дан ответ: stackoverflow.com/questions/2602612/   -  person    schedule 11.06.2012
comment
@sputnik Я не говорю о размере файла в байтах. Я говорю о длине звука в файле MP3 в минутах и ​​секундах.   -  person Munim    schedule 11.06.2012


Ответы (1)


Почти все mp3-файлы имеют кадр Xing/VBRi в начале файла, который можно использовать для расчета продолжительности файла с очень небольшой загрузкой.

В PHP вы, вероятно, бы:

  • прочитайте первые 10 байтов, чтобы получить размер части id3
  • прочитать n количество байтов, где n - длина части id3
  • прочитать количество байтов, необходимых для кадра Xing/VBRi
  • разобрать и закрыть соединение

Прочтите http://www.codeproject.com/Articles/8295/MPEG-Audio-Frame-Header#XINGHeader для анализа кадров Xing и VBRi.

person Esailija    schedule 11.06.2012