[WP7] – MediaElement et Streaming Audio

Si vous avez déjà essayé de lire un flux audio continu (web radio par exemple) sur notre plateforme favorite, vous vous êtes probablement rendu compte que ce n’était pas forcément une chose aisée, surtout en fonction du type de format que vous essayez de lire. Par ailleurs, cela s’avère plus difficile Surtout si vous essayez de lire des flux ne pointant pas vers un fichier précis. Pourtant, il existe des “tricks” pour pouvoir parvenir à ses fins…


En recherchant sur le net des web radios et en analysant les données échangées au travers notre navigateur, on peut se rendre compte que la plupart des liens de streaming accessibles sont sous cette forme :
http://lesitede/mawebradio
http://lesitede/mawebradio.aspx

Quel est le problème ?
Le problème vient du fait que l’élement permettant de lire les flux audios, le MediaElement n’autorise pas la lecture de flux ne pointant pas vers une ressource physique. (Il est possible de voir la liste de fichiers pris en charge toujours sur la msdn).

Comment faire alors ?
La technique est très simple. Il suffit de pouvoir substituer l’url de votre flux, par une url vers une ressource “pseudo” physique… Oui, vous avez bien compris, en d’autres termes, une simple réécriture d’url vers une url se terminant par un fichier pris en charger vous permet de pouvoir lire ce flux.

Cela est donc possible avec un fichier .htaccess. Voici le code nécessaire :

RewriteEngine on
Options +FollowSymlinks
rewritecond %{REQUEST_FILENAME} ^(.+).mp3$
RewriteRule ^(.*)$ http://lesitede/mawebradio [R=301,L]

La dernière instruction de notre fichier .htaccess est l’url réelle de la webradio, c’est à dire, celle qui doit être chargée via la ressource “fictive” .

Ensuite, pour que cela fonctionne, il suffit simplement de mettre en source pour votre MediaElement, celle de l’url ou votre ressource sera réécrite

<MediaElement Source="http://monurl/fictif.mp3" AutoPlay="true" />

Maintenant, si votre élément média élément pointe vers http://monurl/fictif.mp3, l’objet MediaElement réussira quand même à le lire car le flux est réécrit au travers notre fichier fictif. Le tour est joué !

Reprenons les étapes
1. Identifier l’url du flux streaming que vous souhaitez charger dans votre application.
2. Créer le .htaccess ou vous pourrez réécrire le flux.
3. Héberger ce .htaccess quelque part :-).
4. Lire votre url http://monurl/flux.mp3 au sein de votre application pour y avoir votre flux chargé.

Attention !
Il se pourrait que vous ayez besoin de partager de vrais mp3 via votre site, donc, l’idéal serait de pouvoir pointer vers un fichier mp3 unique.

rewritecond %{REQUEST_FILENAME} ^(.+)flux.mp3$

Ainsi, il n’y aura que l’url http://monsite/flux.mp3 qui renverra le flux audio.

Ensuite, pensez à faire vos tests dans un dossier spécifique dans lequel vous mettrez le nouveau fichier .htaccess (pour ne pas écraser vos fichiers .htaccess existants par exemple).

Et pour finir, je n’ai pas testé cette solution avec tous les formats de fichiers pris en charge, donc, je ne saurai vous répondre si cela fonctionne pour tout.

Bon développement et à bientôt !