Audio Duration (audio.duration)

NCortex

Grünschnabel
Hallo!

Meine Aufgabe / Mein Ziel:
Ich möchte bei einem Audioplayer a) die Duration jeden aktuellen MP3-Tracks auslesen können und b) eine Abfrage machen, dass wenn der jeweilige MP3 Track fertig ist, er automatisch zum nächsten Track gelangt.

Aufgabe a)
Dies habe ich soweit bereits erreicht. Mit Folgendem Code:

Code:
audio.onLoad = function(success:Boolean) {
    var totalSeconds:Number = this.duration/1000;
    trace(this.duration+" ms ("+Math.round(totalSeconds)+" seconds)");
    var minutes:Number = Math.floor(totalSeconds/60);
    var seconds = Math.floor(totalSeconds)%60;
    if (seconds<10) {
    seconds = "0"+seconds;
    }
    trace(minutes+":"+seconds);
};

Aber dies macht es nur 1mal, am Anfang, bevor er den MP3 Track lädt. Nun brauche ich eure Hilfe. Kann mir da jemand weiterhelfen, sodass er ständig (vermutlich in einer FOR Schleife) abfragt, an welcher Position er sich befindet damit er dann Aufgabe b) einleiten kann?

Ich stelle mir das so vor:
if(aktuellePosition < (TotalSekundenDesTracks-5))
{
gotoAndStop(20); // hier liegt der nächste Track
}


Ich hoffe auf eine schnelle Antwort. Danke vielmals.
Ich hoffe mein Code und meine Absicht ist verständlich geschrieben.:rolleyes:
 
Hi,

die aktuelle Abspielposition des Sounds kannst Du mit Sound.duration abfragen. Pack das z.B. in eine onEnterFrame-Abfrage, und Du kannst die Position kontinuierlich ausgeben lassen.

Dadurch, dass Sound.duration nur die Länge des bisher heruntergeladenen Teils einer mp-Datei zurückgibt, musst Du bei jedem Song so lange warten, bis er komplett heruntergeladen ist (daher verwendest Du ja onLoad). Ich würde den Sound zusätzlich auf ID3-Tags (wo sich oft auch die Abspiellänge findet) überprüfen - die Angaben sind zwar nicht immer so genau wie Sound.duration, stehen aber zur Verfügung, sobald das Streaming beginnt.

Auf das Ende eines Sounds kannst Du übrigens mit dem Ereignis Sound.onSoundComplete reagieren, ohne die Länge zu kennen.

Gruß
.
 
Hi,

die aktuelle Abspielposition des Sounds kannst Du mit Sound.duration abfragen. Pack das z.B. in eine onEnterFrame-Abfrage, und Du kannst die Position kontinuierlich ausgeben lassen.

Dadurch, dass Sound.duration nur die Länge des bisher heruntergeladenen Teils einer mp-Datei zurückgibt, musst Du bei jedem Song so lange warten, bis er komplett heruntergeladen ist (daher verwendest Du ja onLoad). Ich würde den Sound zusätzlich auf ID3-Tags (wo sich oft auch die Abspiellänge findet) überprüfen - die Angaben sind zwar nicht immer so genau wie Sound.duration, stehen aber zur Verfügung, sobald das Streaming beginnt.

Auf das Ende eines Sounds kannst Du übrigens mit dem Ereignis Sound.onSoundComplete reagieren, ohne die Länge zu kennen.

Gruß
.


du scheinst wirklich ein Profi zu sein Tobi,... bei deinem zweiten Abschnitt habe ich Null Ahnung wie ich das machen muss mit diesem ID3-Tag :)

Was gibt denn onSoundComplete zurück?
Ich habe mal eine einfache IF Abfrage erstellt, diese hat aber nicht funktioniert:

Code:
// Wenn der Track zu Ende ist, soll er zum 
// nächsten Track springen
if(audio.onSoundComplete)
{
	trace("Hallo");
	// play();
}

Im Anhang mal meine Datei... sie ist nicht perfekt und vor allem schon paar Jahre alt. Statt alles neu zu machen wollte ich deshalb nur kurz einen Skript mit meinen Wünschen - hier erwähnt - ergänzen. => http://www.kingofqueens.ch/tmp/player.fla
 
Zuletzt bearbeitet:
Hi,

bei deinem zweiten Abschnitt habe ich Null Ahnung wie ich das machen muss mit diesem ID3-Tag
Was gibt denn onSoundComplete zurück?
Ist alles keine Hexerei, sondern mit einem Blick ins Handbuch schnell herauszufinden:
  1. Das Ereignis "Sound.inID3" wird aufgerufen, wenn ID3-Tags vorliegen. Im Hanbuch unter ActionScript-Klassen > Sound > onID3 (Sound.onID3-Prozedur) ist auch ein Beispiel dafür zu finden.

  2. "Sound.onSoundComplete" ist keine Eigenschaft, sondern ebenfalls eine Ereignisprozedur, die aufgerufen wird, sobald ein Sound komplett abgespielt ist. Auch hier lohnt sich ein Blick in die Doku: ActionScript-Klassen > Sound > onSoundComplete (Sound.onSoundComplete-Prozedur) ;)

Gruß
.
 
Hi Tobias,
Habs gefunden und hinbekommt, danke schön! klappt soweit

PS
Lust auf Kundenaufträge durch mich, und Cash verdienen? Ich komme gerne auf dich zurück - sofern für dich ok. Brauche und suche immer wieder Profis in Flash. Ich bin zwar auch kein Anfänger mehr, aber du bist da ja der Oberhammer.

Mögliche Aufträge wäre z.B. PHP mit Anbindung an Flash, Datenbank, Portale, Communities usw.

Hast ja meine Mail...schreib wenn du Lust und Zeit hast.
 
Zurück