15 марта 2011 г.

Радио плеер для онлайн станций на Flash и AIR

Радио плеер

На работе потребовалось создать плеер для популярных станций, вещающих онлайн с которыми компания, где я работаю, подписала договор. Решил сделать попутно и свою версию, так сказать "для души". Сначала разрабатывалась версия для размещения в браузере, но потом я решил, что десктопное приложение будет удобнее и сделал еще и на AIR. Скачать можно здесь (для браузера) и здесь (как приложение).

Интересной особенностью потока аудио-данных во Флеш-плеере является сохранение всего(!) потока в оперативке. Я, грешным делом, сначала подумал, что это мемори-лики, но потом замерил размер объекта Sound и выделение памяти и понял, что Флеш-плеер накапливает данные, а подчищать их и не собирается.

Тщательно погуглив и изучив соответствующую документацию моя догадка только подтвердилась. К тому же, оказалось, что API Флеш-плеера не предусматривает стандартных средств очистки или обнуления. Пришлось делать несколько вульгарно. Каждые полчаса создается новое подключение к потоку, а старое обнуляется. Таким образом удалось избежать заполнения памяти (если плеер будет играть очень долго). Правда раз в полчаса возникает неприятная пауза в воспроизведении.

8 комментариев:

dacascas комментирует...

Ух ты, работает =))) Но только половина станций молчит... Можно мы его на своём блоге повесим??? Ссылку на вас оставим

Иван комментирует...

Можно конечно.

Со станциями - не знаю, у меня пропала только Metal-Radio.ru. Остальные вроде работали. Будет время - посмотрю.

dacascas комментирует...

Видимо там от сайтов зависит, кто доступен, а кто нет. На второй раз уже почти все работали

Иван комментирует...

Проверил, запросы уходят, действительно не все урлы доступны.

Анонимный комментирует...

Могли бы вы выложить .fla проект

Анонимный комментирует...

Я пытаюсь создать флэш плеер плеер на Adobe Flash CS3 Professional на action script 3
У меня не получается

Анонимный комментирует...

Просто нигде нет исходников(((

Иван комментирует...

К сожалению, код предоставить не могу. Тем более, что и делалось не в Adobe Flash CS*. Но если есть какие-то конкретные вопросы, что не получается, то могу написать в блог.

Отправить комментарий