A
AHTUNG
Прохожие
- Автор темы
- #1
Вот что начитал про вынос метаданных из потока аудио сабж...
Итак, процедура выделения метаданных (названия песни) из потока выглядит так:
1.
Запрос метаданных
Это просто добавление нового поля в HTTP-запрос:
Icy-MetaData:1
То есть, весь запрос будет выглядеть так:
GET path HTTP/1.0
Icy-MetaData:1
Если будут запрашиваться метаданые, нужно уметь извлекать их из потока, иначе звуковой поток будет прерываться каждую секунду (хотя это хороший способ узнать, получаем ли мы метаданные вообще .
2.
Получение интервала метаданных
Один из заголовков, которые вернутся на ваш запрос, будет сообщать о том, как часто метаданные будут посылаться в потоке. В частности, сколько байт MP3-данных будет между блоками метаданных. Этот заголовок выглядит так:
icy-metaint: number
Возможно, нужно будет хранить это число.
3.
Получение данных
Считываем поток данных и считаем байты. Когда число байт стало равно number, мы дошли до блока метаданных. Первая часть блока – это указатель длины. Как уже говорилось, он равен (длина метаданных / 16). Умножаем его на 16, чтобы получить длину метаданных (максимальная длина метаданных = 4080). Теперь считываем это количество байт – и мы имеем строку, содержащую метаданные. Обнуляем счетчик данных и повторяем все заново.
Следует заметить, что чаще всего длина метаданных равна 0, то есть их просто нет в потоке. Метаданные, как правило, посылаются в двух местах: сразу после соединения и когда сменяются песни.
4.
Разбор метаданных
Часть строки метаданных должна выглядеть так:
StreamTitle='title of the song';
что нам и нужно было.
Вопрос заключаеться как это сделать в html-e чёб на странице при запросе появлялось название песни транслируемой в онлайне.. а лучше еси будет ява с запросом по времени..
Подскажате может кто сталкивалси с таким!
Сенкс зараннеееее..
Итак, процедура выделения метаданных (названия песни) из потока выглядит так:
1.
Запрос метаданных
Это просто добавление нового поля в HTTP-запрос:
Icy-MetaData:1
То есть, весь запрос будет выглядеть так:
GET path HTTP/1.0
Icy-MetaData:1
Если будут запрашиваться метаданые, нужно уметь извлекать их из потока, иначе звуковой поток будет прерываться каждую секунду (хотя это хороший способ узнать, получаем ли мы метаданные вообще .
2.
Получение интервала метаданных
Один из заголовков, которые вернутся на ваш запрос, будет сообщать о том, как часто метаданные будут посылаться в потоке. В частности, сколько байт MP3-данных будет между блоками метаданных. Этот заголовок выглядит так:
icy-metaint: number
Возможно, нужно будет хранить это число.
3.
Получение данных
Считываем поток данных и считаем байты. Когда число байт стало равно number, мы дошли до блока метаданных. Первая часть блока – это указатель длины. Как уже говорилось, он равен (длина метаданных / 16). Умножаем его на 16, чтобы получить длину метаданных (максимальная длина метаданных = 4080). Теперь считываем это количество байт – и мы имеем строку, содержащую метаданные. Обнуляем счетчик данных и повторяем все заново.
Следует заметить, что чаще всего длина метаданных равна 0, то есть их просто нет в потоке. Метаданные, как правило, посылаются в двух местах: сразу после соединения и когда сменяются песни.
4.
Разбор метаданных
Часть строки метаданных должна выглядеть так:
StreamTitle='title of the song';
что нам и нужно было.
Вопрос заключаеться как это сделать в html-e чёб на странице при запросе появлялось название песни транслируемой в онлайне.. а лучше еси будет ява с запросом по времени..
Подскажате может кто сталкивалси с таким!
Сенкс зараннеееее..