Streaming stopper download i afspilling
Jeg er ved at forsøge at lave en mp3 streamer som så mange andre, men jeg har lidt et problem med at den hentermeget langsom, og ved afspilningen stopper tit med at hente.
Den henter nogenlunde de første 500kb, men til tider tager det temmeligt lang tid. Så snart den begynder at afspille, henter den ingenting eller meget lidt. Er der umiddelbart noget snavs at se?
Jeg har 8 frames: (4 frames/sek, MX 2004)
#############################################################
Frame 1:
//Variabler og tekst der bliver brugt
//###################################################################
Klar=0; //Sættes til 1 når listen er blevet loadet fra asp filen
SongList="<center>Henter sange...</center>" //Tekst mens teksten loader
NoSongs = "Der er ingen tilgængelige sange"; //Tekst der vises hvis der ikke er nogen sange i mp3 bib
Sti="mp3/"; //relativ sti fra flashfilen til sangene
AntKB = 500; //Antal KB der skal loades inden sangen begynder at afspille
//i og Seconds bruges til at regne gennemsnitlig hastighed
i=0;
Seconds=0;
//###################################################################
//Hent variabler fra aspfil:
loadVariables("Get2.asp",this);
//retunere Klar=1&Flash=||,||c-n.o.a.mp3|-,-|02 - CS - n.o.a.||,||urt.mp3|-,-|Urt
//"||,||" og "|-,-|" bruges til at adskille strengen
_global.Playing = false;
function initNewSound(path)
{
path=path.split("|.,.|");
CurrentlyPlaying=path[1]; //Skriver sangens titel ud i tekstfeltet CurrentlyPlaying
_global.SndFile = path[0]; //init ny sti
_global.Snd = new Sound();
_global.Snd.loadSound(SndFile, true); //loader lyden, true for streaming
_global.SndPos;
_global.Playing = false;
_global.Snd.stop();
gotoAndPlay(7)
}
_global.Snd.onSoundComplete=function()
{
_global.SndPos = 0;
_global.Playing = false;
gotoAndStop("frmPaused");
}
function PlayTheSound()
{
if (_global.Playing == false)
{
_global.Snd.start((_global.SndPos/1000), false);
_global.Playing = true;
}
}
function StopTheSound()
{
_global.SndPos = 0;
_global.Snd.stop();
_global.Playing = false;
//gotoAndStop("frmPaused");
}
function PauseTheSound()
{
_global.Playing = false;
gotoAndStop("frmPaused");
_global.SndPos = _global.Snd.position;
_global.Snd.stop();
}
#############################################################
Frame 2: Tom
#############################################################
Frame 3:
if(Klar!=1) //Loop mellem frame 2 og 3 indtil teksten fra aspfilen er loaded
{
gotoAndPlay(2)
}
#############################################################
Frame 4:
if(Flash=="") //Flash er variablen fra ASP filen
{
SongList = NoSongs;
}
else
{
SongList=""; //Listen med sange
Flash=Flash.substring(5); //Få fat informationerne fra asp, første 5 char springes over
arrSongs = Flash.split("||,||");
for(i = 0;i<arrSongs.length;i++)
{
arrSongInfo = arrSongs[i].split("|-,-|"); //Adskild filnavn og titel
if(arrSongInfo.length==2)
{
FilNavn = arrSongInfo[0];
SangNavn = arrSongInfo[1];
SongList+="<a href=\"asfunction:initNewSound,"+Sti+FilNavn+"|.,.|"+SangNavn+"\">"+SangNavn+"</a><br>";
}
}
}
trace("Stop")
stop();
#############################################################
Frame 5:
Samme som Frame 4, men denne frame har label "frmPaused" i et andet layer
#############################################################
Frame 6, 7:
Tomme ind til videre
#############################################################
Frame 8:
var byteL = int(_global.Snd.getBytesLoaded());
Procent=(byteL/(AntKB*1024))*100;
//Print ud
CurrentlyLoading=Math.ceil(byteL/1024)+"/"+Math.ceil(_global.Snd.getBytesTotal()/1024)+"="+Math.ceil((byteL/_global.Snd.getBytesTotal())*100)+" %"
i++;
if(i % 4 == 0) //filen kører med 4 frames/sek, den kører mellem frame 7 og 8 og tæller op
{
Seconds++;
OldLoaded=Loaded;
Loaded=byteL;
PrSec = Math.round((Loaded-OldLoaded)/1024);
//regn for sidste sek, samt gennemsnittet og udskriv det
SongProg=PrSec + "KB/s Gennemsnit:"+Math.round((byteL/1024)/Seconds)+"KB/s"
}
if(Procent<100){
setProperty("LoadBar", _xscale, Procent*200);
CurrentlyLoading=Math.ceil(byteL/1024);
gotoAndPlay(7);
}
else
{
PlayTheSound();
//for at kunne overvåge hvad der er loadet køres der stadig mellem frame 7 og 8
//gotoAndStop(6)
}
