Как узнать битрэйт, не скачивая mp3?

Нужно скачать из вконтакте только 320kbs mp3 — как определять битрэйт не скачивая сам трэк? И вообще есть наработки по вконтакте аудио?

image
  • Вопрос задан
  • 16033 просмотра
Пригласить эксперта
Ответы на вопрос 7
Читаете только несколько байт заголовка трека. По этим данным определяете битрейт.
Ответ написан
Комментировать
whitequark
@whitequark
На чем-нибудь Unix-образном можно сделать так, если известен список адресов:

Команда curl --range 0-2048 $url | file - выведет информацию о заголовке файла, в т.ч. битрейт, например:
/dev/stdin: Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v2, 80 kbps, 22.05 kHz, JntStereo

Если есть файл со списком адресов (который наверняка можно получить greasemonkey-скриптом), то выкачать только те файлы, в которых битрейт 320 килобит, можно так:
for url in $(cat list_of_the_music); do
  if curl --range 0-2048 $url | file - | grep 320 >/dev/null; then
    wget $url
  fi
done
Ответ написан
arty87
@arty87
Расширение MusicSig для Хрома добавляет данную функциональность.
Ответ написан
Комментировать
barmaley_exe
@barmaley_exe
Расширения для вконтакта делают так: узнают продолжительность трека (Вконтакт пишет, сколько длится трек), отправляют HEAD запрос на файл (отдаются только заголовки), из ответа на который узнают вес файла в байтах. Ну а дальнейшее дело арифметики — поделить длину файла на продолжительность.
Ответ написан
@S1ashka
ЕМНИП, при добавлении к себе на страницу песни, код такой:

<input type="hidden" id="audio_info420508_90476677_46809501_2795" value="http://cs4704.userapi.com/u66844845/audio/65a9e87b88b8.mp3,219">

в поиске вроде не работает
тем не менее последний параметр — время в секундах
берем размер в килобайтах, делим на 128 и делим на время
с файлом в примере — порядка 187 килобит/с
Ответ написан
Комментировать
@S1ashka
и вот еще… гуглить не забывайте
на одну позицию выше чем ваш вопрос на хабре =)
www.designaeon.com/read-mp3-tags-without-downloading-it/
Ответ написан
Комментировать
@xaoc80
В линуксе можно сделать так: ffprobe [ссылка на файл]
Покажет всю метаинформацию
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы