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

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

 

468
Klef @Klef
tarasian666 пишет:

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

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

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

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

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

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

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

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

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

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

Отредактировано Трололо - 23.10.2010
0
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]

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

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

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

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

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

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


Линк на радио **********
  1. import flash.display.Graphics;
  2. var p_stat:int=0;
  3. var v_stat:int=0;
  4. var req:URLRequest = new URLRequest("http://178.250.240.120:8000/radio");
  5. var req2:URLRequest = new URLRequest("http://178.250.240.120:8000/radio.aac");
  6. var context:SoundLoaderContext = new SoundLoaderContext(4000, false);
  7. var potok:Sound = new Sound();
  8. var chanal:SoundChannel = new SoundChannel();
  9. var soud_vol:SoundTransform = new SoundTransform();
  10. var analo:Shape = new Shape();
  11. var graf:Shape = new Shape();
  12. var bytes:ByteArray = new ByteArray();
  13. var n1:Array = new Array(256);
  14. var i:int = 0;
  15. var n:int = 0;
  16. const xn:int = 138;
  17. const yn:int = 40;
  18. const razm:int = 90;
  19. const visot:int = 25;
  20. const cvet:int = 0x999999;
  21. play_buton.addEventListener(MouseEvent.CLICK, play_nazh);
  22. play_buton2.addEventListener(MouseEvent.CLICK, play_nazh2);
  23. vol_buton.addEventListener(MouseEvent.CLICK, vol_nazh);
  24. v_stat=3;
  25. vol_ur(v_stat);
  26. vol_buton.gotoAndStop(v_stat);
  27. this.addChildAt(analo,numChildren - 1);
  28. this.addChildAt(graf,numChildren - 1);
  29. function play_nazh(event:MouseEvent):void
  30. {
  31. if (p_stat==0) {
  32. p_stat=1;
  33. play_buton.gotoAndStop(2);
  34. play_buton2.gotoAndStop(1);
  35. potok.load(req,context);
  36. chanal=potok.play();
  37. vol_ur(v_stat);
  38. addEventListener(Event.ENTER_FRAME, ana);
  39. }
  40. else {
  41. p_stat=0;
  42. play_buton.gotoAndStop(1);
  43. play_buton2.gotoAndStop(2);
  44. chanal.stop();
  45. potok.close();
  46. var false_potok:Sound = new Sound();
  47. potok = false_potok;
  48. }
  49. }
  50. function play_nazh2(event:MouseEvent):void
  51. {
  52. if (p_stat==0) {
  53. p_stat=1;
  54. play_buton2.gotoAndStop(2);
  55. play_buton.gotoAndStop(1);
  56. potok.load(req2,context);
  57. chanal=potok.play();
  58. vol_ur(v_stat);
  59. addEventListener(Event.ENTER_FRAME, ana);
  60. }
  61. else {
  62. p_stat=0;
  63. play_buton2.gotoAndStop(1);
  64. play_buton.gotoAndStop(2);
  65. chanal.stop();
  66. potok.close();
  67. var false_potok:Sound = new Sound();
  68. potok = false_potok;
  69. }
  70. }
  71. function vol_nazh(event:MouseEvent):void
  72. {
  73. v_stat=Math.ceil(event.localX/5);
  74. vol_buton.gotoAndStop(v_stat);
  75. vol_ur(v_stat);
  76. }
  77. function vol_ur(v_stat)
  78. {
  79. soud_vol.volume = v_stat*1/5;
  80. chanal.soundTransform = soud_vol;
  81. }
  82. function ana(event:Event):void
  83. {
  84. analo.graphics.clear();
  85. SoundMixer.computeSpectrum(bytes, true, 0);
  86. analo.graphics.lineStyle(0, cvet);
  87. analo.graphics.beginFill(cvet);
  88. analo.graphics.moveTo(xn, yn);
  89. analo.graphics.endFill();
  90. for (i = 0; i < 256; i++)
  91. {
  92. n1[i] = bytes.readFloat();
  93. }
  94. for (i = 0; i < 128; i++)
  95. {
  96. //n=n1[i]*visot;
  97. n=((n1[i]+n1[i+128])/2)*visot;
  98. analo.graphics.moveTo(xn+(i*razm/128), yn);
  99. analo.graphics.lineTo(xn+(i*razm/128), yn-n);
  100. }
  101. analo.graphics.endFill();
  102. }

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

Отредактировано diedbubble - 06.12.2010
0
6245
Тарас @tarasian666
  1. var context:SoundLoaderContext = new SoundLoaderContext(4000, true);

в опциях публикации желательно указать доступ только по сети (access network only - как-то так)
в icecast в веб директорию закинуть crossdomain.xml
  1. <?xml version="1.0"?>
  2. <cross-domain-policy>
  3. <allow-access-from domain="*" to-ports="*"/>
  4. </cross-domain-policy>

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

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

0
468
Klef @Klef
moonknight пишет:

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

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

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

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

Код AS3:

  1.  
  2. var p_stat:int=0;
  3. var v_stat:int=0;
  4. var req:URLRequest = new URLRequest("http://listen2.myradio24.com:9000/8020");
  5. var context:SoundLoaderContext = new SoundLoaderContext(2500, false);
  6. var potok:Sound = new Sound();
  7. var chanal:SoundChannel = new SoundChannel();
  8. var soud_vol:SoundTransform = new SoundTransform();
  9. v_stat=1;
  10. vol_ur(v_stat);
  11. vol_buton.gotoAndStop(v_stat);
  12. play_buton.addEventListener(MouseEvent.CLICK, play_nazh);
  13. vol_buton.addEventListener(MouseEvent.CLICK, vol_nazh);
  14. function play_nazh(event:MouseEvent):void
  15. {
  16. if (p_stat==0) {
  17. p_stat=1;
  18. play_buton.gotoAndStop(2);
  19. potok.load(req,context);
  20. chanal=potok.play();
  21. vol_ur(v_stat);
  22. }
  23. else {
  24. p_stat=0;
  25. play_buton.gotoAndStop(1);
  26. chanal.stop();
  27. potok.close();
  28. var false_potok:Sound = new Sound();
  29. potok = false_potok;
  30. }
  31. }
  32. function vol_nazh(event:MouseEvent):void
  33. {
  34. v_stat=Math.ceil(event.localX/5);
  35. vol_buton.gotoAndStop(v_stat);
  36. vol_ur(v_stat);
  37. }
  38. function vol_ur(v_stat)
  39. {
  40. soud_vol.volume = v_stat*1/5;
  41. chanal.soundTransform = soud_vol;
  42. }


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

Файл .fla

**********

Файл .swf

**********

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


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


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

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

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

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

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

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

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

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

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

tsurkanroman@mail.ru

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

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

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

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

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

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

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

**********

0





Согласие на обработку данных на нашем сайте

Продолжая просматривать страницу, вы соглашаетесь с использованием файлов «Cookie» и с Политикой конфиденциальности «Privacy».
Наверху или внизу страницы вы можете изменить валюту и язык по умолчанию. Английская версия сайта ещё находится в доработке и доступна не полностью.