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

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

 

727
Leff27 @Leff27
Для AAC потока да

6245
Тарас @tarasian666
ну вот в netStrem и не должно "заикатся" после перехода

33
Lif @Lif
Уважаемые админы! Расскажите пожалуйста про crossdomain.xml?

Что именно писать в этом файле и куда забрасывать для доступа плеера к парсингу?
Плеер на AS3

Все работает на локальном компе, а когда на сайт заливаю, играет, но не показывает.

В файле crossdomain нужно прописывать адрес и порт вместо звездочек, или оставлять так?
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>

и играет роль если фаил назван с Большой буквы Crossdomain.xml?

И еще...
Вот такую ошибку показывает Internet Exploer

Error #2044: Необработанный securityError:. text=Error #2048: Нарушение изолированной среды: ********** не может загрузить данные из **********
at player_fla::MainTimeline/frame1()

Сервер VPN
Как разрешить доступ к Status.xsl????????

Security.loadPolicyFile("http://doskater.com/crossdomain.xml");
import flash.display.Graphics;
import flash.events.TimerEvent;
import flash.utils.Timer;
import flash.net.URLRequest;

var p_stat:int=0;
var v_stat:int=0;
var req:URLRequest = new URLRequest("http://109.120.144.244:8000/live");
var context:SoundLoaderContext = new SoundLoaderContext(2500, false);
var potok:Sound = new Sound();
var chanal:SoundChannel = new SoundChannel();
var soud_vol:SoundTransform = new SoundTransform();
var data_html:String;

var f_non_stop:Boolean = true;
var f_live:Boolean = false;

var ob:Object = vol_mc_3;

var urlLoader:URLLoader = new URLLoader();

var timer:Timer = new Timer(2000);
timer.addEventListener(TimerEvent.TIMER, onTick);

play_mc.addEventListener(MouseEvent.CLICK, play_nazh);

vol_mc_1.addEventListener(MouseEvent.CLICK, vol_nazh_1);
vol_mc_2.addEventListener(MouseEvent.CLICK, vol_nazh_2);
vol_mc_3.addEventListener(MouseEvent.CLICK, vol_nazh_3);
vol_mc_4.addEventListener(MouseEvent.CLICK, vol_nazh_4);
vol_mc_5.addEventListener(MouseEvent.CLICK, vol_nazh_5);

v_stat=3;
vol_ur(v_stat);
vol_mc_3.gotoAndStop(2);

function play_nazh(event:MouseEvent):void
{
if (p_stat==0) {
play_mc.gotoAndStop(2);

p_stat=1;
potok.load(req,context);
chanal=potok.play();
vol_ur(v_stat);
timer.start();
}
else {
play_mc.gotoAndStop(1);

p_stat=0;
chanal.stop();
potok.close();

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

timer.stop();
curSong.txt.text = "";
listeners.text = "";
}
}

function onTick(event:TimerEvent):void
{ if(p_stat == 0) {
curSong.txt.text = "";
listeners.text = "";
return;
}
urlLoader.load(new URLRequest("http://109.120.144.244:8000/status.xsl"));
urlLoader.addEventListener(Event.COMPLETE,onComplete);
}

function onComplete(event:Event):void
{
data_html = event.target.data;
curSong.txt.htmlText = antara(data_html, "<td>Current Song:</td>\n<td class=\"streamdata\">", "</td>");
listeners.text = antara(data_html, "Current Listeners:</td>\n<td class=\"streamdata\">", "</td>");

if(antara(data_html, "<td><h3>Mount Point ", "</h3></td>") == "/live") {
if(f_non_stop) {
f_non_stop = false;
f_live = true;

chanal.stop();

var false_potok1:Sound = new Sound();
potok = false_potok1;

potok.load(req, context);
chanal = potok.play();
vol_ur(v_stat);
}
} else {
if(f_live) {
f_live = false;
f_non_stop = true;

chanal.stop();

var false_potok2:Sound = new Sound();
potok = false_potok2;

potok.load(req, context);
chanal = potok.play();
vol_ur(v_stat);
}
}

data_html = "";
}

function antara(string:String, st:String, end:String):String {
string = " " + string;
var ini:Number = string.indexOf(st);
if (ini == 0) return "";
ini += st.length;
var len:Number = string.indexOf(end, ini) - ini;
return string.substr(ini,len);
}

function vol_nazh_1(event:MouseEvent):void
{
ob.gotoAndStop(1);
ob = vol_mc_1;
ob.gotoAndStop(2);

v_stat=1;
vol_ur(v_stat);
}

function vol_nazh_2(event:MouseEvent):void
{
ob.gotoAndStop(1);
ob = vol_mc_2;
ob.gotoAndStop(2);

v_stat=2;
vol_ur(v_stat);
}

function vol_nazh_3(event:MouseEvent):void
{
ob.gotoAndStop(1);
ob = vol_mc_3;
ob.gotoAndStop(2);

v_stat=3;
vol_ur(v_stat);
}

function vol_nazh_4(event:MouseEvent):void
{
ob.gotoAndStop(1);
ob = vol_mc_4;
ob.gotoAndStop(2);

v_stat=4;
vol_ur(v_stat);
}

function vol_nazh_5(event:MouseEvent):void
{
ob.gotoAndStop(1);
ob = vol_mc_5;
ob.gotoAndStop(2);

v_stat=5;
vol_ur(v_stat);
}

function vol_ur(v_stat)
{
soud_vol.volume = v_stat*1/6;
chanal.soundTransform = soud_vol;
}

Отредактировано Lif - 23.09.2012
6245
Тарас @tarasian666
Оставить файл как есть, с маленькой буквы, залить в папку web (айскаста), путь в коде не нужно указывать. В настройках "публикации" флеша установить network only

727
Leff27 @Leff27
Для подгрузки названия трека CrossDomain не обязателен. crossdomain.xml нужен для эквалайзера...

Отредактировано Leff27 - 24.09.2012
313
Krueger @Krueger
Leff27 пишет:

Для подгрузки названия трека CrossDomain не обязателен. crossdomain.xml нужен для эквалайзера...

Странно, а я всегда думал, что файл crossdomain.xml создается для разрешения доступа...

727
Leff27 @Leff27
Я имел в виду, что разрешать доступ для парсинга трека не требуется...
Хотя, я вспомнил, что всегда дергал php и не парсил напрямую с status.xsl, поэтому не утверждаю на 100%

ЗЫ Проще парсить метадату потока, чем дергать status.xsl

Отредактировано Leff27 - 24.09.2012
6245
Тарас @tarasian666
для подгрузки названия трека самим флешом crossdomain.xml нужен, если сторонним скриптом в той же папке тогда не нужен

по крайней мере нужен именно для AS2 для подгрузки названия, недавно опять с этим сталкивался

для чтения флеш заголовков нетстримом он не нужен

1
seregadefiant @seregadefiant
по поводу мета-тегов, так flash может брать из обычного txt файла. главное чтобы в нем грамотно был записан скрипт, например:
{"ARTIST":"No data","NAME":"No data","unix_stop_time":1384774633,"id":1,"timeleft":145,"image":""} (после no data не относится к скрипту)
ну или обычный html файл, если хотите, могу написать

6245
Тарас @tarasian666
америку открыл...

1
raidcall @raidcall
Можете подсказать как сделать автозапуск?

22
Санеккк @Санеккк
Приветствую!
Такой вопрос: AS3, поток недоступен по каким-либо причинам, но пользователь этого не знает и жмет "плей". Срабатывает слушатель ошибок и совершает нужные действия. После чего пользователь пробует еще раз и снова нажимает "плей", но на этот раз ошибка не обрабатывается и необходимые действия не совершаются. Но вылазит "SecurityError: Error #2000: Отсутствует активный контекст безопасности.".
Как создать/добавить этот контекст?