|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Mar 2009
Сообщений: 357
|
как вытащить информацию из потокового радио (не ID3)
есть адрес типа ...radio.com:80/stream/1032
при проигрывании винампом информация об исполнителе видна. но при попытке прочитать ID3 через ничего не получается. т.е. это событие даже не испускается. но ведь как-то винамп узнает информацию? |
|
|||||
Modus ponens
|
Посмотреть спецификацию MP3, посмотреть, как записывается кадр, и как рассчитывается его длина, считать кадры, а между ними будет попадаться ID3...
__________________
Hell is the possibility of sanity |
|
|||||
Регистрация: Dec 2009
Сообщений: 20
|
осмелюсб предположить, что речь в данном случае идет не о ID3, а о метатегах IceCast/ShoutCast. В этом случае есть свое решение, со своими минусами, тем не менее вполне рабочее.
|
|
|||||
Регистрация: Mar 2009
Сообщений: 357
|
wvxvw, вы видели хоть один плеер, работающий по такому алгоритму?
Limeflash, именно! ShoutCast. можете рассказать об этом решении? имхо, можно просто открывать страницу sendToUrl и парсить ответ, но я не нашел тэгов, имеющих отношение к треку. |
|
|||||
Modus ponens
|
Я так подозреваю, что винамп именно так и работает... если речь идет о ID3... А ShoutCast на сколько я понимаю - это текстовая оболочка по типу HTTP протокола... и к ID3 имеет мало / никакого отношения. Если бы флеш умел показывать заголовки присланые при соединении - может быть у вас бы и получилось, а так - ну не знаю, есть вариант сначала коннектится сокетом / URLStream'ом а потом грузить звук, но тут возникнет проблема безопасности, и 9 из 10, что на сайте радио не будет файла политик.
__________________
Hell is the possibility of sanity |
|
|||||
Регистрация: Mar 2009
Сообщений: 357
|
ShoutCast при успешном коннекте (наверное, и при получении каждого фрагмента) в первых 8192 байтах шлет метаданные. а вот как их вытащить, а, главное, как прочитать? пробовал при событии PROGRESS помещать звук в ByteArray. но при попытке ReadBytes вылетает ошибка о конце файла. возможно, надо слушать событие SOUND_COMPLETE, но оно, почему-то,не диспатчится.
|
|
|||||
Регистрация: Jan 2009
Сообщений: 1,651
|
Событие SOUND_COMPLETE вообще-то возникает, когда закачка звука закончилась. И id3 теги не читает флеш по той же причине - он не хочет их читать, пока не закачает до конца видео, видишь ли.
А в вашем случае есть два способа: 1. Параллельно с загрузкой Sound открывать поток классом URLStream, читать байты, парсить данные, закрывать URLStream. Делать это периодично, раз в 20 сек например. 2. не парить себе мозги. shoutcast показывает статистику в html, вот например. Открыть из флеша html-страничку и выпарсить оттуда то, что нужно - нет проблем. |
|
|||||
Регистрация: Mar 2009
Сообщений: 357
|
iflamberg, я ошибся. имелось ввиду SAMPLE_DATA. а как именно извлечь информацию из этих байтов?
проблема в том, что не о всех сайтах отображается информация. например http://streamer-mtc-aa03.somafm.com:80/stream/1018 (http://64.12.61.3:80/) раз в 20 сек - мало. трек сменился, а название старое. быстрее - нагрузка канала. за секунду при битрейте 96 кбс грузится 21 кб, страница - 10 кб. если парсить каждую секунду - расход трафика увеличиться на 50%. интересно, как можно узнать момент смены трека? Последний раз редактировалось loover; 10.12.2009 в 03:15. |
|
|||||
Регистрация: Jan 2009
Сообщений: 1,651
|
Цитата:
Но, насколько я знаю, никто этого так и не сделал до сих пор. Поищите в Интернете по "actionscript get metadata from stream sound" или "actionscript get id3 from sream sound" - все пришли ко второму варианту. Вообще shoutcast умеет отдавать на сокет xml с такими данными по запросу, что уменьшает передаваемые данные, но вот беда, если плеер на другом хостинге, то будет проблемы с crossdomain, и нет никакой возможности научить shoutcast отдавать при подключении crossdomian.xml по порту. |
|
|||||
Регистрация: Mar 2009
Сообщений: 357
|
посмотрел код одного веб плеера, работающего с di.fm (код доступен на html странице). оказывается, он подписан на разные события, в т.ч. - на получение метаданных. но мне кажется, можно сделать проще. если запросить канал на di.fm он вернет разные данные, в т.ч. - имя трека и его длительность. нужно просто запустить таймер и по окончании песни получить новую порцию данных.
|
Часовой пояс GMT +4, время: 19:18. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|