ОсновноеRadiotalkПользовательское
Общие вопросы по интернет радио вещанию
6   •   Посмотреть все темы

Делаем себе флеш плеер (Action Script 3.0)

 

468
Klef @Klef
tarasian666 пишет:

у меня работало без "кросдомена" когда в параметрах публикации поставил access network only но аналайзер только не работал

+1 забыл указать, что то большинство переперий с флеш плеером стали забываться :)

p.s. если не нужен аналайзер, то лучше делать на AS2.0, ибо там нет проблем с "правами", воспроизведением ABR, и при фалбаке icecast (пример моно найти на девианте)

Отредактировано Klef - 29.07.2010
3
Alek @Alek
Все получилось.

Создал кроссдомен файл и поставил на сайт. А в АС3 плеера поставил строчку Security.loadPolicyFile("http://ссылка/на_кроссдомен_на_сайте/crossdomain.xml");
Причем кроссдомен.ХМЛ не на сервере айскаста

2
Трололо @Трололо
Всем здрасти.

Столкнулся со следующей проблемой. В момент, когда в эфир выходит ведущий (замещая собой музыку, играющую в режиме нон-стоп), звук в флеш плеере начинает дико тормозить, воспросизводиться рывками с периодичностью секунды в 2-3. То же самое случается, когда ведущий отсосединяется, и поток возвращается обратно на нон-стоп. В чем может быть причина данной ситуации?

P.S. На сервере стоит связка Icecast + Ices. Ведущий соединяется с сервером через SHOUTcast DSP Plug-In for Winamp

6245
Тарас @tarasian666
проблема в AS 3.0
пишите на AS 2.0

2
Трололо @Трололо
Благодарю

Отредактировано Трололо - 23.10.2010
1
s4 @s4
если поток не имеет названия можно дописывать 'stream.nsv' > "http://ip/;stream.nsv"

____ мой пример с использованием из JavaScript ________

[mono]
import flash.media.Sound;
import flash.external.ExternalInterface;

var url:String = "**********";
var req:URLRequest = new URLRequest(url);
var context:SoundLoaderContext = new SoundLoaderContext(2500, false);
var mySound:Sound = new Sound();
var chanel:SoundChannel;
var playStat:Boolean = false;
var sound_vol:SoundTransform = new SoundTransform();

ExternalInterface.addCallback("PlayerDoPlay", doPlay);
ExternalInterface.addCallback("PlayerDoStop", doStop);
ExternalInterface.addCallback("PlayerDoMute", doMute);

function doPlay(){
if (!playStat){
playStat = true;
mySound.load(req,context);
chanel = mySound.play();
} else doStop();
}
function doStop(){
if (playStat){
playStat = false;
chanel.stop();
mySound.close();
var newSound:Sound = new Sound();
mySound = newSound;
}
}
function doMute(){
if (chanel.soundTransform.volume){
sound_vol.volume = 0
chanel.soundTransform = sound_vol;
} else {
sound_vol.volume = 1
chanel.soundTransform = sound_vol;
}
}
doPlay();[/mono]

6245
Тарас @tarasian666
s4 пишет:

если поток не имеет названия можно дописывать 'stream.nsv' > "http://ip/;stream.nsv"

касается shoutcast и не только можно но и нужно )

1
diedbubble @diedbubble
Мужики, нужна помощь, никак не могу решить две проблемы с радио написанным по данному туториалу.

Проблема первая. Аналайзер.
Когда запускаю swf'фку в просмотрщике - аналайзер работает нормально, все показывает.
Но если смотреть флешку в браузере (Opera 10.63) то Аналайзера нету, его п р о с т о - н е т . Флешка же автора работает нормально.
Код аналайзера я не трогал, по сути изменил только дизайн.

Что же я делаю не так? Почему аналайзера нет в моей версии радио?


Линк на радио **********
import flash.display.Graphics;

var p_stat:int=0;
var v_stat:int=0;
var req:URLRequest = new URLRequest("http://178.250.240.120:8000/radio");
var req2:URLRequest = new URLRequest("http://178.250.240.120:8000/radio.aac");
var context:SoundLoaderContext = new SoundLoaderContext(4000, false);
var potok:Sound = new Sound();
var chanal:SoundChannel = new SoundChannel();
var soud_vol:SoundTransform = new SoundTransform();
var analo:Shape = new Shape();
var graf:Shape = new Shape();
var bytes:ByteArray = new ByteArray();
var n1:Array = new Array(256);
var i:int = 0;
var n:int = 0;
const xn:int = 138;
const yn:int = 40;
const razm:int = 90;
const visot:int = 25;
const cvet:int = 0x999999;

play_buton.addEventListener(MouseEvent.CLICK, play_nazh);
play_buton2.addEventListener(MouseEvent.CLICK, play_nazh2);
vol_buton.addEventListener(MouseEvent.CLICK, vol_nazh);

v_stat=3;
vol_ur(v_stat);
vol_buton.gotoAndStop(v_stat);

this.addChildAt(analo,numChildren - 1);
this.addChildAt(graf,numChildren - 1);

function play_nazh(event:MouseEvent):void
{
if (p_stat==0) {
p_stat=1;
play_buton.gotoAndStop(2);
play_buton2.gotoAndStop(1);
potok.load(req,context);
chanal=potok.play();
vol_ur(v_stat);
addEventListener(Event.ENTER_FRAME, ana);
}
else {
p_stat=0;
play_buton.gotoAndStop(1);
play_buton2.gotoAndStop(2);
chanal.stop();
potok.close();

var false_potok:Sound = new Sound();
potok = false_potok;
}

}

function play_nazh2(event:MouseEvent):void
{
if (p_stat==0) {
p_stat=1;
play_buton2.gotoAndStop(2);
play_buton.gotoAndStop(1);
potok.load(req2,context);
chanal=potok.play();
vol_ur(v_stat);
addEventListener(Event.ENTER_FRAME, ana);
}
else {
p_stat=0;
play_buton2.gotoAndStop(1);
play_buton.gotoAndStop(2);
chanal.stop();
potok.close();

var false_potok:Sound = new Sound();
potok = false_potok;
}

}

function vol_nazh(event:MouseEvent):void
{
v_stat=Math.ceil(event.localX/5);
vol_buton.gotoAndStop(v_stat);
vol_ur(v_stat);
}

function vol_ur(v_stat)
{

soud_vol.volume = v_stat*1/5;
chanal.soundTransform = soud_vol;
}


function ana(event:Event):void
{

analo.graphics.clear();
SoundMixer.computeSpectrum(bytes, true, 0);
analo.graphics.lineStyle(0, cvet);
analo.graphics.beginFill(cvet);
analo.graphics.moveTo(xn, yn);
analo.graphics.endFill();
for (i = 0; i < 256; i++)
{
n1[i] = bytes.readFloat();
}
for (i = 0; i < 128; i++)
{
//n=n1[i]*visot;

n=((n1[i]+n1[i+128])/2)*visot;

analo.graphics.moveTo(xn+(i*razm/128), yn);
analo.graphics.lineTo(xn+(i*razm/128), yn-n);

}
analo.graphics.endFill();

}

P.S.S. Огромное спасибо автору за самый нормальный туториал по flash-радио в рунете.

Отредактировано diedbubble - 06.12.2010
6245
Тарас @tarasian666
var context:SoundLoaderContext = new SoundLoaderContext(4000, true);
в опциях публикации желательно указать доступ только по сети (access network only - как-то так)
в icecast в веб директорию закинуть crossdomain.xml
<?xml version="1.0"?>

<cross-domain-policy>
<allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>

468
Klef @Klef
исходники и картинки востановлены. во всяком случае до 2012 года точно ^_^

1
moonknight @moonknight
Klef, если не тяжело, просьба еще разок апнуть картинки и исходники

468
Klef @Klef
moonknight пишет:

Klef, если не тяжело, просьба еще разок апнуть картинки и исходники

линки востановил

з.ы. плеер что выложен по файлам, сейчас музыку не играет, по той причине, что радио перехало по другому адресу. Может на днях перекомпилю его.

Отредактировано Klef - 04.02.2012
228
zabawa @zabawa
Доброго времени суток, во-первых, хотелось бы тоже поблагодарить за полезный и наиболее понятный из всех, что попадались, во-вторых, попросить о помощи.
Мучаюсь уже порядка двух недель, но так и не поборола проблему.
Осилила кнопки плей и стоп, а вот дальше стопор(

Код AS3:


var p_stat:int=0;
var v_stat:int=0;
var req:URLRequest = new URLRequest("http://listen2.myradio24.com:9000/8020");
var context:SoundLoaderContext = new SoundLoaderContext(2500, false);
var potok:Sound = new Sound();
var chanal:SoundChannel = new SoundChannel();
var soud_vol:SoundTransform = new SoundTransform();
v_stat=1;
vol_ur(v_stat);
vol_buton.gotoAndStop(v_stat);

play_buton.addEventListener(MouseEvent.CLICK, play_nazh);
vol_buton.addEventListener(MouseEvent.CLICK, vol_nazh);

function play_nazh(event:MouseEvent):void
{
if (p_stat==0) {
p_stat=1;
play_buton.gotoAndStop(2);
potok.load(req,context);
chanal=potok.play();
vol_ur(v_stat);
}
else {
p_stat=0;
play_buton.gotoAndStop(1);
chanal.stop();
potok.close();

var false_potok:Sound = new Sound();
potok = false_potok;
}

}

function vol_nazh(event:MouseEvent):void
{
v_stat=Math.ceil(event.localX/5);
vol_buton.gotoAndStop(v_stat);
vol_ur(v_stat);
}
function vol_ur(v_stat)
{

soud_vol.volume = v_stat*1/5;
chanal.soundTransform = soud_vol;
}


P.S.: делала без аналайзера, т.к. нет в нем необходимости в моем случае.

Файл .fla

**********

Файл .swf

**********

Проблемы возникают в следующем:


1. не могу сделать регулятор громкости, он просто не перемещается


Так же на просторах интернета нашла пример, где делают плеер с xml листом, писали, что получилось сделать из того плеера плеер для радио. Может знаете что-нибудь про такой способ.

Заранее очень признательная за помощь.

P.S.: основная проблема заключается в регуляторе громкости(((

Отредактировано zabawa - 13.05.2012
727
Leff27 @Leff27
Свяжитесь со мной по ICQ, помогу.

228
zabawa @zabawa
Проблема решена.
Решение: горизонтальную полоску громкости необходимо было отделить от подложки. Так же из горизонтальной и вертикальной полосок громкости нужно было сделать мувиклип.
Большое спасибо Артему (Leff27) за оперативное реагирование и понятное объяснение.

33
Lif @Lif
Добрые люди! Объясните как вставить в плеер чтение Id3v2 тегов?

В инете по этому поводу ничего не нашел.

Нужно, чтобы в плеере бежало название текущего трека играющего в эфире, и исполнителя.

Если кто может, скинте исходник .fla поддерживающий такую функцию! Буду ооооочееееннннь благодарен.

tsurkanroman@mail.ru

6245
Тарас @tarasian666
через Sound никак, использовать чтение с сервера парсингом
через netStream другое дело

33
Lif @Lif
А можно подробнее про парсинг?

Есть скрипт в action scripts 3 для парсинга сервера icecast ?

33
Lif @Lif
И расскажите подробнее про netStream

У кого может есть исходник? Я порылся и разобрался тогда бы что к чему!

6245
Тарас @tarasian666
Есть скрипт в action scripts 3 для парсинга сервера icecast ?

суть та же что и для php только дугой синтаксис

**********