JeuWeb - Crée ton jeu par navigateur
Forcer flash à jouer des MP3 avec header incorrect - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Forcer flash à jouer des MP3 avec header incorrect (/showthread.php?tid=3821)

Pages : 1 2


Forcer flash à jouer des MP3 avec header incorrect - orditeck - 09-11-2010

Bonjour,

j'ai créé un service de recherche de mp3 qui permet de jouer la chanson recherchée en streaming pour l'écouter avant de la télécharger.

La plupart des chansons sont prises sur www.4shared.com

Le problème, c'est que le header des MP3 de 4shared.com ne semble pas correct. Tous les lecteurs flash que j'ai mis pour jouer les MP3 de 4shared fonctionnent seulement sous Firefox et Safari, alors que les MP3 des autres sites fonctionnent correctement sous tous les browsers.

Il y a quelque part dans flash une limitation qui l'empêche d'essayer de jouer le fichier dans Chrome et Internet Explorer dû aux mauvais header (c'est du moins ce je pense... quand on tappe l'adresse du MP3 dans Firefox, le mp3 joue ou est proposé en téléchargement. Sous IE et Chrome, le browser affiche le " raw data " du MP3, c-à-d les symboles bizarre que constituent le fichier en tant que tel)

Connaissez-vous un moyen de passer cette barrière? Est-il possible de spécifier, dans mon fichier flash, le header à utiliser? Ou encore de forcer flash à lire le fichier?

Merci d'avance
P.S: Ça n'a rien à avoir avec un jeu mais comme je sais que vous êtes plutôt sympa devrait pas y avoir trop de problème... Tongue


RE: Jouer des MP3 dans flash sans cross-domain politicy - Blarg - 10-11-2010

Je ne crois pas que ça aidera beaucoup, mais si ton service fonctionne sous firefox mais pas sous les autres navigateurs, ne serait-ce pas seulement à cause que la version du flash player diffère sur les différents navigateurs testés?

... peut-être que de faire ton swf compatible pour une version pré-cross-domain pourrait fonctionner?


RE: Jouer des MP3 dans flash sans cross-domain politicy - orditeck - 10-11-2010

Non ce n'est pas dû à la version de flash player sur les autres navigateurs.

Cependant, la solution d'utiliser une version antérieure de l'actionscript pourrait être bonne! Je vais tester ça Wink


RE: Jouer des MP3 dans flash sans cross-domain politicy - NicoMSEvent - 10-11-2010

sinon, il te reste une solution plutot lourde en terme de bande passante, ton serveur web pourrait aller chercher le fichier lui même via un script php(p-e même le stocker sur ton serveur si tu as assez d'espace), et le passer a ton lecteur flash, il serait du coup sur le même domaine :p

si mes souvenirs sont bon, fopen te permet chercher le fichier distant
Je n'ai pas testé le script suivant, mais je pense qu'il pourrait ressembler à ça (sans enregistrer le fichier sur ton serveur)

<?php
$fichier=fopen($_REQUEST['fichier'],'r');
while($buff=fread($fichier)){
echo $buff;
}
fclose($fichier);
?>

ton lecteur irait chercher le fichier en paramètre : param="mon_script.php?fichier=http://autre-domaine.com/nimportequoi.mp3"


RE: Jouer des MP3 dans flash sans cross-domain politicy - orditeck - 10-11-2010

Merci NicoMSEvent, mais cette solution n'est pas envisageable au niveau légal.

En ce moment, le site cherche des chansons sur d'autres sites. Rien n'est hébergé en local. Ça permet de rester légal, ou du moins de rester ouvert un peu plus longtemps. Si des MP3 illégaux se retrouvent sur mon serveur, je serai cuit dans le temps de le dire!


RE: Jouer des MP3 dans flash sans cross-domain politicy - Plume - 10-11-2010

Essaie de voir leur fonctionnement http://www.wawapowa.com/ si ça peut t'aider.


RE: Jouer des MP3 dans flash sans cross-domain politicy - orditeck - 11-11-2010

Hello,

je cherchais à la mauvaise place.
Le problème semble venir de 4shared.

En effet, lorsque je télécharge le MP3 via l'adresse directe dans Chrome et IE, et qu'ensuite je clique sur " Play " dans le lecteur flash, ça fonctionne.
Quand je tappe l'adresse du MP3 direct dans la barre d'IE, ça me sort le code " brut " du MP3..... ce qui laisse penser à un problème d'entête (header)... qu'en pensez-vous?


RE: Jouer des MP3 dans flash sans cross-domain politicy - atra27 - 11-11-2010

Dans ce cas tu peut utiliser ton serveur comme proxy comme suggéré plus haut pour récuperer le code brut et le renvoyer en chageans les headers.


RE: Jouer des MP3 dans flash sans cross-domain politicy - orditeck - 12-11-2010

Le problème semble venir du header que donne 4shared.com à ses MP3.
Connaissez-vous un moyen en flash de forcer le header?
oxman a gentiment donné ce lien http://stackoverflow.com/questions/223312/custom-headers-possible-with-urlrequest-urlstream-using-method-get qui montre qu'on ne peut changer le header d'un GET via Flash. Cependant, quelqu'un connait peut-être un moyen dérivé d'y parvenir (sock open directement en AS3?)


soundClip.header('mp3'); // Ligne fictive, mais serait-ce possible qu'il existe
// une ligne du genre qui forcerait le du URLRequest?
soundClip.load(new URLRequest(mp3URL));
sndChannel = soundClip.play();

Sous IE et Chrome, la condition
(e.bytesTotal == 0)
retourne true... alors que sous Firefox le SWF obtient bien le e.bytesTotal et calcul le e.bytesLoaded / e.bytesTotal sans problème. Peut-être le problème ne vient pas du header mais de l'accès au fichier?

Si je ne peux vraiment rien faire en flash, y a-t-il moyen de redéfinir le header avec PHP sans télécharger le fichier sur mon serveur? Un un fichier mp3.php?url=http://www.4shared.com/lemp3.php

header('Content-Type: audio/mpeg');
// ligne qui affiche le contenu de $url sans le télécharger
// (en le " redirigeant ", i.e., 4shared -> client mais
// avec un " entre-deux " pour changer le header...)

J'ai mis à jour le premier post de thread pour expliquer le problème, qui commence à être mieux situé. J'ai également déplacé le sujet qui a maintenant davantage sa place dans Demande d'aide que dans Algorithmes & Solutions


RE: Forcer flash à jouer des MP3 avec header incorrect - srm - 12-11-2010

10 sec de recherche sur google : http://stackoverflow.com/questions/223312/custom-headers-possible-with-urlrequest-urlstream-using-method-get

Smile