Lecture stream d'un mp3 depuis un swf...marche po sur le serveur

camii Messages postés 17 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 16 octobre 2005 - 3 sept. 2005 à 00:39
camii Messages postés 17 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 16 octobre 2005 - 3 sept. 2005 à 09:46
Bonjour à tous !

Pourquoi, en uutilisant le code simplissime

audio = new Sound();
audio.loadSound("music.mp3",true);

le mp3 est joué en local, mais pas sur le serveur ???

(évidemment, il est uploader dans le même dossier...)

Merci les pros !!

3 réponses

cs_alise Messages postés 2203 Date d'inscription lundi 12 juillet 2004 Statut Membre Dernière intervention 26 janvier 2010
3 sept. 2005 à 09:11
Sur ta scène un bouton Play (btPlay) et un bouton Pause (btPause), sur la première image de ton scénario le script suivant:

// Prototypes de dessin pour tracer un rectangle
MovieClip.prototype.trace_rectangle = function (xpos,ypos,largeur,hauteur,epaisseur_trait,couleur_trait,alpha_trait,couleur_rempli,alpha_rempli) {
this.lineStyle (epaisseur_trait,couleur_trait,alpha_trait) ;
this.beginFill(couleur_rempli , alpha_rempli );
this.init_api (epaisseur_trait,couleur_trait,alpha_trait) ;
this.init_color (couleur_rempli,alpha_rempli) ;
this.moveTo (xpos,ypos) ;
this.lineTo (xpos+largeur,ypos) ;
this.lineTo (xpos+largeur,ypos+hauteur) ;
this.lineTo (xpos,ypos+hauteur) ;
this.lineTo(xpos,ypos) ;
}

// Prototype permettant de retracer un rectangle en effaçant avant le contenu du clip.
MovieClip.prototype.retrace = function () {
this.clear () ; // on efface tout les tracés dynamiques.
this.trace_rectangle (this.posx,this.posy,this.largeur,this.hauteur,this.epaisseur,this.colorTrait,this.alphaTrait,this.colorRempli,this.alphaRempli) ;
}

// Prototype qui permet d'initialiser les propriétés de la barre de chargement
MovieClip.prototype.InitApi = function() {
this.posx = 0 ; // on place dans le clip le rectangle en x=0
this.posy = 80 ; // on place dans le clip le rectangle en y=80
this.largeur = 0 ; // on défini par défaut une largeur nulle
this.hauteur = 4 ; // on défini la hauteur de la barre
this.epaisseur = 1 ; // on défini l'épaisseur du contour
this.colorTrait = 0x000000 ; // on défini la couleur du contour
this.alphaTrait = 0 ; // on défini l'alpha du contour (ici il est nul)
this.colorRempli = 0x660000 ; // on défini la couleur de remplissage
this.alphaRempli = 100 ; // on défini l'alpha du remplissage
}

monSon = new Sound(); // on créer l'objet Son
monSon.savePosition = 0 ; // initialisation de la position de lecture du son en cours
monSon.loadSound("musique.mp3",true) ; //le nom de ton son.mp3
monSon.onSoundComplete = function () { // si la musique est finie
this.start() ; // on relance la musique
}

MovieClip.prototype.init = function () {
this._x = 25 ; // placement selon x du clip
this._y = 100 ; // placement selon y du clip
this.longueurBarre = 100 ; // Taille totale de la barre en largeur
this.createTextField("duree", 1, 0, 0, 250, 25); // Création d'un champ de texte qui affichera le temps écoulé depuis la lecture du morceau.
this.createTextField("total", 2, 0, 25, 250, 25); // Création d'un champ de texte qui affichera la durée totale du morceau.
this.createTextField("percent", 3, 0, 50, 250, 25); // Création d'un champ de texte qui affichera l'avancement de la lecturee du morceau en %.
this.createEmptyMovieClip("barre" , 4 ) ; // création d'un clip qui affichera une barre de progression de la lecture.
this.barre.InitApi () ; // Initialisation des propriétés graphiques pour le tracé de la barre de progression.
// on fait en sorte que les champs dynamiques ne soient pas sélectionnables.
this.duree.selectable = false ;
this.total.selectable = false ;
this.percent.selectable = false ;
}

// Prototype qui permet de mettre à jour le Clip observant la lecture du morceau de musique
MovieClip.prototype.lecture = function () {
var pourcent = _root.monSon.position/_root.monSon.duration * 100 ; // rapport de l'avancement de la lecture en %
var progress = _root.monSon.position/1000 ; // on affecte la progression en seconde de la lecture du morceau (rappel Sound.position est en ms)

// Mise à jour des champs de texte dynamiques pour l'affichage
this.total.text = "Durée Totale du morceau : " + parseInt(_root.monSon.duration/1000)+" secondes"; // Affichage de la durée totale du morceau en seconde

this.duree.text = "Temps écoulé : " + parseInt(progress)+" secondes"; // Affichage du temps écoulé

this.percent.text = "Avancement de la lecture : " + parseInt(pourcent) + "%" ; // Affichage de l'avancement de la lecture en %

this.savePosition = progress ; // mise en mémoire de la progression du morceau pour l'utilisation de la pause (bouton pause et play)

// On dessine la barre de chargement de la musique
// rapport de l'avancement de la lecture en fonction de la longueur réelle de la barre
this.barre.largeur = _root.monSon.position /_root.monSon.duration * this.longueurBarre ;
// on retrace la barre
this.barre.retrace() ;
// met à jour les informations affichées (voir référence flash MX)
updateAfterEvent() ;
}

_root.createEmptyMovieClip("clip", 20) ; // on crée un clip qui servira d'espion pour observer la progression de la lecture du son.
_root.clip.init () ; // on initialise le clip
_root.clip.onEnterFrame = function() {
this.lecture () ;
}

// Evènements sur les boutons btPlay et btPause.

function lire () {
_root.monSon.start(_root.clip.savePosition); // on lance le son au niveau de la position courante enregistrée
}

function pause () {
_root.monSon.stop() ; // on stoppe le son
delete _root.monClip.onEnterFrame ; // on détruit la boucle infinie pour libérer la mémoire
}

btPlay.onRelease = lire ; // on affecte l'évènement du bouton btPlay
btPause.onRelease = pause ; // on affecte l'évènement du bouton btPause

C'est un script d'Eka de media-box, qui n'est peut-être pas de la toute dernière génération, mais qui fonctionne à merveille.

Alise
from RunIsland
0
camii Messages postés 17 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 16 octobre 2005
3 sept. 2005 à 09:41
Merci pour cette longue réponse, mais s'il l'ont supprime toutes les permttant de gérer le graphisme (boutons, chargement, etc...), il reste les même ligne que moi, si ce n'est que tu permet de recommecner la lecture à la fin.

Le problème, je pense n'est pas là.
Ce qui me gêne, c'est que ça marche en local, le MP3 est chargé.

Sinon, le but n'est pas de lancer la musique avec un bouton, mais de la lancer dès le chargement (j'utilise alors onClipEvent(load)).

pour infos, ce que je cherche à faire au final, c'est un swf qui créé une liste aléatoire de mp3 (lu dans différents dossier du serveur) dans un array. Cela reproduirait, en gros une sorte de radio, dont les morceaux diffusés sont différents à chaque fois. Reste encore à pouvoir charger ces MP3....

Est-ce que des paramètres précis doivent être activé au niveau streaming du serveur ftp ???

camii
0
camii Messages postés 17 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 16 octobre 2005
3 sept. 2005 à 09:46
Oula, je me suis trompé de catégorie, les lecture seront peut etre restreinte...

post fermé et à suivre sur :

http://www.flashkod.com/forum.v2.aspx?ID=551820

désolé
0
Rejoignez-nous