Какой самый простой / быстрый способ получить его длину, битрейт, размер и т. Д.?
Размер файла вы можете получить с помощью запроса HTTP HEAD. Если под «длиной» вы подразумеваете время воспроизведения в секундах, вы не сможете получить его, не загрузив весь файл. Вы можете догадаться , выбрав первые несколько кадров MP3, посмотрев на их битрейт и предположив, что остальная часть файла имеет тот же битрейт, но учитывая популярность кодирования с переменной битовой скоростью, вероятность этого быть близким к точному - довольно низкий.
Теги ID3 теоретически могут содержать информацию, которая может позволить вам лучше угадать длину в тегах ASPI и ETCO. Но на практике они встречаются очень редко.
Как я могу загрузить только часть тега ID3 в MP3, чтобы получить эту информацию?
Для тегов ID3v2 захватить начало файла. (Возможно, что кадры ID3v2 будут где-то еще, но на практике они всегда есть.) Вы не можете сказать, как долго тег будет впереди. Для текстовых тегов вы, вероятно, найдете нужную информацию в первых 512-1024 байтах. К сожалению, все больше и больше MP3-файлов имеют встроенные изображения обложек альбомов, которые могут быть намного длиннее; попытайтесь выбрать библиотеку ID3, которая будет изящно игнорировать усеченную информацию ID3.
Теги ID3v1 находятся в конце файла. Опять же, вы не можете сказать, как долго они будут. И, конечно, вы не знаете заранее, есть ли в файле теги ID3v1, теги ID3v2, оба или нет. Обычно в наши дни лучше использовать ID3v2.
Чтобы прочитать часть файла через HTTP, вам нужен заголовок Range . Это тоже не везде поддерживается.
Таким образом, с этим достаточно проблем, поэтому лучшим вариантом может быть отказ от простого извлечения всего файла.