Volledige versie bekijken : Streaming mp3.duration
Fl4sh3r
%Europe/Berlin %611 %2005, 15:41
Ik probeer een streaming mp3-player te maken met een trackingbar.
Het probleem is dat Sound.duration de huidige lengte is van de track en aangezien deze streamt loopt duration continue op.
Ik had al bedacht dit te doen, maar ook dat is niet helemaal accuraat:
mp3.duration*(mp3.getBytesTotal()/mp3.getBytesLoaded())
Ook zoeken op dit forum en Google heeft me nog weinig opgeleverd.
Iemand een tip?
edit: Kleine toevoeging, het standaard MediaPlayback Component van Flash doet het wel goed op de één of andere manier.
Bedankt
Thomaz
%Europe/Berlin %655 %2005, 16:43
Je berekening klopt niet helemaal. Dit zou moeten werken:
percentage_geladen = (mp3.getBytesLoaded() / mp3.getBytesTotal());
totale_afspeeltijd = (1 / percentage_geladen) * mp3.duration;
Fl4sh3r
%Europe/Berlin %869 %2005, 21:51
Je geeft dezelfde berekening...
a/b == 1/(b/a)
D = mp3.duration
T = mp3.getBytesTotal()
L = mp3.getBytesLoaded()
Fl4sh3r: D*T/L
Thomaz: (1/(L/T))*D
D*T/L = 1/(L/T)*D
T/L = 1/(L/T)
Fl4sh3r
%Europe/Berlin %992 %2005, 00:49
Klein extraatje, om het een beetje duidelijker te maken.
Een grafiekje:
http://www.bleq.nl/~chris/pics/FlashFocus/afwijking_streaming_mp3.png
Horizontaal de tijd, beginnend bij mp3.LoadSound en lopend tot mp3.onLoad wordt aangeroepen.
Verticaal de afwijking van het verwachte totaal in procenten.
(en ja, ik had verder weinig nuttigs te doen, of beter geen zin in)
Thomaz
%Europe/Berlin %377 %2005, 10:03
Ik kijk inderdaad met mn neus...
Toch raar dat het resultaat niet nauwkeurig is. Ik neem aan dat je de meting pas na de onLoad verricht.
Wel leuk om dit te zien. Zelf heb ik ook een spelertje gemaakt. Misschien voeg ik deze optie nog s toe (ik had niet aan deze mogelijkheid gedacht) :)
voorbeeld: http://www.thuijzer.nl/?c=album&id=63
Fl4sh3r
%Europe/Berlin %403 %2005, 10:41
De meting na onLoad verrichten?
Lijkt me niet handig, ik wil m juist streamen en tot weten hoelang het nummer duurt.
onLoad wordt pas aangeroepen als het hele nummer gedownload is, als ik t goed heb
Thomaz
%Europe/Berlin %553 %2005, 14:17
Nou, de onLoad begint wanneer het bestand wordt ingeladen. Het lijkt me dat je op dat moment je berekening kunt uitvoeren omdat dan pas de header en bestandsgrootte bekend is.
Het is wel waar dat de onLoad pas een positive waarde returned wanneer het hele bestand is ingeladen.
Fl4sh3r
%Europe/Berlin %616 %2005, 15:47
De onLoad wordt bij mij pas aangeroepen als het hele bestand is ingeladen.
Het verschil van de uitgerekende en echte duration is denk ik te wijten aan het feit dat het bestand uit meer dan alleen muziek bestaat. Ik denk aan ID3, header, etc.
Die afwijking van 2% moet ik dan maar mee leven, de tracker wordt dan niet heel nauwkeurig, maar tis niet anders.
Thomaz
%Europe/Berlin %689 %2005, 17:32
Dat is inderdaad iets waar ik nog niet aan gedacht had.
Volgens mij is er voor de headers altijd een standaard grootte gereserveerd, dus misschien is het wat om dat alvast van het aantal bytes af te halen.
Ik ben trouwens benieuwd naar je resultaat...
Folkert
%Europe/Berlin %721 %2005, 18:19
wel, wellicht kan je het via de id3 tags opvragen, daarin zit tegenwoordig toch de tijd.
jeSound.onID3 = bla;
function bla()
{
trace(this.id3.TIME);
}
Uiteraard moeten de id3 tags dan wel met de mp3 zijn meegestuurd en dien je minimaal player 7 te publiseren. In player 6 is de support beperkt en staat de info ook pas aan het eind van de mp3.
Fl4sh3r
%Europe/Berlin %736 %2005, 18:40
Enkele van mijn test-mp3s geven überhaupt geen id3 en geen van allen heeft een id3.TIME property.
Ik ga eens even wat testen en rekenen om te kijken of er een standaard afwijking is (in % of bytes).
Fl4sh3r
%Europe/Berlin %792 %2005, 20:00
Hierbij een voorlopig resultaat.
Graag jullie reactie :-)
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.