shoutcast et flash

Posté le Mardi 22 mai 2007 à 1 h 20, Read it in english with Google

Shoutcast, pour ceux qui ne connaissent pas encore, est un serveur de streaming audio permettant le plus simplement du monde de diffuser votre webradio.
La quasi totalit√© des applications permettant d’envoyer un flux audio continu sont compatible avec Shoutcast. Il est devellopp√© par nullsoft, la soci√©t√© qui a cr√©√© Winamp, et les binaires pour la plus part des plate-forme sont disponibles gratuitement.

Seulement nullsoft n’a pas fait les choses si bien que √ßa… Un serveur Shoutcast permet de distribuer du son via l’URL « http://ip_du_serveur:port/ » , et, lorsque c’est un navigateur qui tente d’acc√©der √† cette adresse, Shoutcast lui affiche les informations de la webradio. Shoutcast se base donc uniquement sur l’ent√™te HTTP user-agent.



Lorsqu’un objet Flash dans une page HTML tente d’acc√©der √† du contenu ext√©rieur, il envoie la chaine user-agent du navigateur ou bien encore « flashplayer ». Donc si on essaye de lire le son provenant d’un serveur Shoutcast avec Flash, le serveur nous renverra uniquement la page d’information de la webradio. Le son ne pourra donc jamais √™tre lu. C’est pour cette raison que si vous avez cr√©√© une animation flash qui r√©ussit √† lire un flux Shoutcast lors du d√©buggage dans Flash (ctrl + enter), elle ne marchera pas dans une page web, le user-agent n’√©tant pas le m√™me.

Ce n’est pas la faute des syst√®mes de protection Flash (fichiers de r√©gulation inter-domaine; cross-domain policy).
Pour vous en convaincre, t√©l√©charger l’extension firefox User Agent Switcher et ajouter une user agent string avec « WinampMPEG » comme d√©finition agent utilisateur. Maintenant votre objet flash marche.

Pourquoi c’est la faute de Shoutcast et pas de Flash ? Parce que Shoutcast devrait proposer un autre point de montage du flux audio, tout comme le fait Icecast2. Mais Icecast2 n’est pas aussi diffus√© que Shoutcast maleureusement, et beaucoup moins d’applications sont compatible avec lui …

Une solution est de rediriger le flux audio via un script serveur mais cela entraine une double consomation du server h√©bergeant le script (reception du flux de la webradio + envoie au client). Si vous avez acc√®s au serveur h√©bergeant Shoutcast vous pouvez toujours cr√©er un serveur relay sur ce m√™me serveur. Cela permettra de rediriger le flux de Shoutcast proprement, Shoutcast ne servira au final qu’a traiter le son entrant.

La solution que j’ai adopt√© est de ne pas utiliser Flash mais un object windows media ou mplayer (pas tr√®s portable…).

Mise à jour :
√ßa y est c’est trouv√© ! Il suffit de rajouter « ; » (point-virgule) √† la suite de l’url shoutcast pour que le flux soit renvoy√©.
Naturellement, ce point de montage n’est pas indiqu√© dans la maigre documentation de ShoutCast

Shoutcast va envoyer le flux sans filtrer la chaine User-Agent lorsque le chemin de l’URL est :
/;ainsi si vous entriez habituellement cette URL dans Winamp :
http://1.2.3.4:8000il faudra entrer celle-ci dans Flash :
http://1.2.3.4:8000/;stream.nsvShoutcast envera alors uniquement le flux audio, quelque soit le navigateur utilisé.
Plus besoin d’une redirection de flux qui vous consomme toutes vos ressources !

Il y a tout de m√™me un petit b√©mol sur Flash 9 avec l’ActionScript 3. Si le serveur Shoutcast vis√© est configurer de telle mani√®re a jouer un son en introduction (autrement dit si le param√®tre IntroFile du fichier de config shoutcast n’est pas vide), le flux audio ne sera pas correctement lu par Flash Player 9. Il y aura des interruptions aussi longue que le buffer, et m√™me en diminuant le buffer √† z√©ro (avec SoundLoaderContext(0)) vu aurez toujours des coupures insupportables.

Pourquoi ? aucune id√©e. J’ai √©crit √† Adobe pour leur rapporter ce bug, sans r√©ponse √©videmment. √ßa doit venir d’une mauvaise gestion de la part de Flash 9 lors changement de format audio (lorsque l’intro se termine). D’autant plus que tout marche bien si vous cr√©ez une animation compatible Flash 8. Mais dans ce cas adieu l’analyseur de spectre (computeSpectrum)…

15 réponses à “shoutcast et flash”

  1. Zozoban

    Explication tr√®s claire… mais il me manque des bases pour tout assimiler… En tout cas, je crois comprendre que ce que je veux faire est presque infaisable. En calir, je veux mettre un player flash (√ßa existe, je l ai achet√© : flashplayer.net) dans mes pages… Je teste sur leur site en ligne, √ßa fonctionne et je peux lire un flux en direct (et non une liste de MP3 !) – voilefm.serveftp.com:8000, qui est une redirection no-ip vers mon PC, flux qui rentre dans winamp. Ce que je veux, c est faire comme les grands (europe 1 par exemple) et envoyer en l√©ger diff√©r√© sur le web ce qui se passe √† l antenne… en faisant rentrer sur line in de la carte son un son en provenance de la table de mixage de la mini radio. Or TOUS les players trouv√©s se contentent de diffuser des listes PLS ou mu3…. Je ne veux pas charger une liste tous les matins et remplir le r√©pertoire avec des sons mais diffuser du direct. Apr√®s toutes ces pr√©cautions oratoires, quelqu un a-t-il une id√©e ou une solution pour moi ?.. j ai demand√© l assistance de flashplayer.net mais rien √† ce jour… J ai acc√®s √† mon serveur, au php.ini, etc… A la rigueur, je me fiche de flash. Un objet gif ou jpeg auquel associer mon flux me suffirait… pas de marche-arr√™t. pas de volume +ou – (je rame avec ce serveur qui ne prend pas les apostrophes et les slashs… lol). Voil√† une semaine compl√®te que je cherche et je n ai rien trouv√©… Snif ! merci d avance

  2. XoraX

    ok tu veux faire le DJ sur tes platines et renvoyer le flux sur le net pour que tout le monde t’entende !! no probl√®me :D

    va voir de ce coté : http://www.shoutcast.com/download/broadcast.phtml
    Le plugin shoutcast de winamp te permet de rediriger √©galement l’entr√©e de ta carte son (onglet Input > Soundcard Input). Attention le plugin ne contient pas le serveur Shoutcast, il permet juste de lui envoy√© un flux audio √† redirig√©.

    Mais il faut bien que tu sache que tu a surement une connection très limité en upload. Donc suivant le bitrate audio de shoutcast, tu pourra te faire écouter par plus ou moins une vingtaine de personnes maximum!
    Pour palier se probl√®me il faut que ton serveur Shoutcast soit install√© sur un serveur externe ayant un plus gros d√©bit. Tu pourra ainsi lui envoy√© ton seul flux audio qu’il se chargera de rediffus√© vers les clients.
    Moi aussi j’aime jouer au DJ mix.xorax.net ;)

  3. radio-maghreb

    svp pourrez vous m’indiquer √† un site de la creation d’un serveur shoutcast gratuit pour ma radio
    et merci

  4. doowie

    Salut,

    J’arrive un peu tard mais √ßa peut servir √† celui qui a le m√™me probl√®me.

    J’ai cherch√© looooooooooooooooooooonguement sur internet une solution pour r√©soudre ce probl√®me de user-agent, j’avais envisag√© de passer par un serveur IceCast comme relais mais la solution la plus simple qui a fonctionn√© pour moi (pas test√© avec d’autres serveur Shoutcast mais je ne vois pas de raison pour laquelle √ßa marcherait qu’avec moi) est de demander √† flash de charger non pas l’adresse « http://ip_du_serveur:port/ »
    MAIS : « http://ip_du_serveur:port/;stream.nsv » !!!

    J’esp√®re que √ßa aidera beaucoup de monde parceque j’√©tais tr√®√®√®√®√®√®s loin d’√™tre le seul √† en avoir besoin !!

  5. XoraX

    ouep √ßa marche bien je l’ai trouv√© il y a un moment, et en fait peu importe le param√®tre, il suffit qu’il y est « ; » (point virgule) √† la suite de l’url et shoutcast renvoie le tout en mode streaming.
    Je sort un prochain article dans pas longtemps.

    Mais j’ai des erreurs de lecture sur flash 9 pour les stream shoutcast qui ont une musique d’entr√© (lors de la connection, genre sur http://ufg.impek.tv/)… alors que √ßa marche impeccable sur flash 8 mais bon… pas de computeSpectrum sur flash 8 :(

  6. yvonne

    j’aimerais connaitre les differentes etapes a suivre afin de creer ma propre webradio

  7. CaptainMurk

    Salut, moi aussi j’aimerai bien pouvoir diffuser une radio presente sur le serveur shoutcast (keskistram) mais a partir de mon site.

    J’avais trouver http://www.votreradiosurlenet.com/playerflash/index2.php mais au bout d’ un moment l’allopass revient cher xD

    Donc si vous pouviez juste mettre un tit tuto ca serai cool ^^

    Sur mon site j’ai deja un lecteur flv, est ce que je peu m’en servir ou faut il en prendre un autre afin de diffuser ces radio?

    Merci ^^

  8. Radio

    J’ai toujours cru que la probl√©matique des lecteurs flash √©tatit similaire a celle des restrictions java sur la s√©curit√© des applets. A savoir, impossible pour un objet contenu dans une page web de communiquer avec autre chose que le serveur web h√©bergeant la page, du coup impossibilit√© pour flash d’aller relayer un flux creacast.

    Avez vous des liens vers un script permettant de contourner ce probl√®me, j’aimerais inclure un player dans une page (la solution activeX exclue car trop de visiteurs sous FF).

    cordialement

  9. DareMe2

    Donc si je comprends bien ce qui a √©t√© dit plus haut il suffit de rajouter « ; » a la fin de l’url pour que shoutcast renvois le stream vers le lecteur flash et donc vers les auditeurs ?
    Parce que a l’heure actuelle je n’arrives pas a faire passer mon stream shoutcast dans le lecteur flash en y mettant simplement http://url:port.

  10. Beginner

    effectivement ca fonctionne avec http://ip_du_serveur:port/;stream.nsv mais pas avec chrome

  11. Yograph

    Whouaaa merci pour cette histoire de « ; »

    cela faisait des heures que je cherchais partout une solution √† ce probl√®me pour mon lecteur radio flash…
    Beaucoup font commerce de player flash et gardent ce genre d’info pour eux.

    Donc vraiment merci beaucoup.

  12. Ludo

    Vous pouvez trouver une webradio Flash gratuite ici: http://webiswell.fr/09/12/2008/tuto-creer-le-flash-de-votre-lecteur-audio-avec-flash-cs4-et-actionscript-3-785/

    Merci pour cette précision ;stream.nsv !!

  13. djgreg

    Voila je chercher un lectuer style virtual dj car la nuit mon virtual dj plante
    il me fautrait un lecteur pour la nuit avez vous une idee a me donner?

  14. Luca

    FRENCHEMENT, MERCI !!!!
    http://ip:port/;stream.pls marche vraiment !!! Avec un lecteur FLASH :D

    Un grand merci !!

  15. Luca

    http://ip:port/;stream.nsv pardon. Sur chrome ça fonctionne aussi si tu as un lecteur flash. si tu prend un lecteur de se coter : http://flash-mp3-player.net/

    V РVérifié et certifié

Laissez un commentaire :