Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.12.2009, 02:32
loover вне форума Посмотреть профиль Отправить личное сообщение для loover Найти все сообщения от loover
  № 1  
Ответить с цитированием
loover
 
Аватар для loover

Регистрация: Mar 2009
Сообщений: 357
По умолчанию как вытащить информацию из потокового радио (не ID3)

есть адрес типа ...radio.com:80/stream/1032
при проигрывании винампом информация об исполнителе видна. но при попытке прочитать ID3 через
Код AS3:
sound.addEventListener(Event.ID3, id3Handler);
ничего не получается. т.е. это событие даже не испускается. но ведь как-то винамп узнает информацию?

Старый 09.12.2009, 02:38
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Посмотреть спецификацию MP3, посмотреть, как записывается кадр, и как рассчитывается его длина, считать кадры, а между ними будет попадаться ID3...
__________________
Hell is the possibility of sanity

Старый 09.12.2009, 03:05
Limeflash вне форума Посмотреть профиль Отправить личное сообщение для Limeflash Найти все сообщения от Limeflash
  № 3  
Ответить с цитированием
Limeflash

Регистрация: Dec 2009
Сообщений: 20
осмелюсб предположить, что речь в данном случае идет не о ID3, а о метатегах IceCast/ShoutCast. В этом случае есть свое решение, со своими минусами, тем не менее вполне рабочее.

Старый 09.12.2009, 04:24
loover вне форума Посмотреть профиль Отправить личное сообщение для loover Найти все сообщения от loover
  № 4  
Ответить с цитированием
loover
 
Аватар для loover

Регистрация: Mar 2009
Сообщений: 357
wvxvw, вы видели хоть один плеер, работающий по такому алгоритму?
Limeflash, именно! ShoutCast. можете рассказать об этом решении? имхо, можно просто открывать страницу sendToUrl и парсить ответ, но я не нашел тэгов, имеющих отношение к треку.

Старый 09.12.2009, 13:39
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 5  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Я так подозреваю, что винамп именно так и работает... если речь идет о ID3... А ShoutCast на сколько я понимаю - это текстовая оболочка по типу HTTP протокола... и к ID3 имеет мало / никакого отношения. Если бы флеш умел показывать заголовки присланые при соединении - может быть у вас бы и получилось, а так - ну не знаю, есть вариант сначала коннектится сокетом / URLStream'ом а потом грузить звук, но тут возникнет проблема безопасности, и 9 из 10, что на сайте радио не будет файла политик.
__________________
Hell is the possibility of sanity

Старый 09.12.2009, 21:09
loover вне форума Посмотреть профиль Отправить личное сообщение для loover Найти все сообщения от loover
  № 6  
Ответить с цитированием
loover
 
Аватар для loover

Регистрация: Mar 2009
Сообщений: 357
ShoutCast при успешном коннекте (наверное, и при получении каждого фрагмента) в первых 8192 байтах шлет метаданные. а вот как их вытащить, а, главное, как прочитать? пробовал при событии PROGRESS помещать звук в ByteArray. но при попытке ReadBytes вылетает ошибка о конце файла. возможно, надо слушать событие SOUND_COMPLETE, но оно, почему-то,не диспатчится.

Старый 09.12.2009, 21:21
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 7  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
Событие SOUND_COMPLETE вообще-то возникает, когда закачка звука закончилась. И id3 теги не читает флеш по той же причине - он не хочет их читать, пока не закачает до конца видео, видишь ли.
А в вашем случае есть два способа:
1. Параллельно с загрузкой Sound открывать поток классом URLStream, читать байты, парсить данные, закрывать URLStream. Делать это периодично, раз в 20 сек например.
2. не парить себе мозги. shoutcast показывает статистику в html, вот например. Открыть из флеша html-страничку и выпарсить оттуда то, что нужно - нет проблем.

Старый 10.12.2009, 02:46
loover вне форума Посмотреть профиль Отправить личное сообщение для loover Найти все сообщения от loover
  № 8  
Ответить с цитированием
loover
 
Аватар для loover

Регистрация: 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.
Старый 10.12.2009, 13:28
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 9  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
Цитата:
а как именно извлечь информацию из этих байтов?
читаем из URLStream с помощью readBytes в ByteArray. Из byteArray парсим в соответствии со спецификацией mp3. Чуда не будет - все ручками. Но теоретически это не сложно, существуют php-библиотеки, которые это делают, можно покопаться в них.


Но, насколько я знаю, никто этого так и не сделал до сих пор. Поищите в Интернете по "actionscript get metadata from stream sound" или "actionscript get id3 from sream sound" - все пришли ко второму варианту. Вообще shoutcast умеет отдавать на сокет xml с такими данными по запросу, что уменьшает передаваемые данные, но вот беда, если плеер на другом хостинге, то будет проблемы с crossdomain, и нет никакой возможности научить shoutcast отдавать при подключении crossdomian.xml по порту.

Старый 10.12.2009, 23:57
loover вне форума Посмотреть профиль Отправить личное сообщение для loover Найти все сообщения от loover
  № 10  
Ответить с цитированием
loover
 
Аватар для loover

Регистрация: Mar 2009
Сообщений: 357
посмотрел код одного веб плеера, работающего с di.fm (код доступен на html странице). оказывается, он подписан на разные события, в т.ч. - на получение метаданных. но мне кажется, можно сделать проще. если запросить канал на di.fm он вернет разные данные, в т.ч. - имя трека и его длительность. нужно просто запустить таймер и по окончании песни получить новую порцию данных.

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:18.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 19:18.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.