Page 1 sur 2
probleme de lecteur audio html5 sur version mobile
Posté : 28 sept. 2015, 16:03
par diice
Bonjour à tous,
Voici mon problème :
J'ai des sons sur un site qui sont protégés du téléchargement via un script PHP et de l'URLrewriting.
jusqu'ici cela marche bien avec un navigateur d'ordi, j'y ai mis un lecteur audio flash pour la lecture, car le lecteur <audio> ne marche pas avec ce systeme car il ne trouve pas l'url (la vraie) du fichier et donc il disparait...
et c'est la mon souci ! parce que sur la version mobile, du coup pas de lecteur flash, du coup pas de possibilité d'ecouter le son...
auriez-vous une idée de comment je pourrais contourner le probleme ??
merci d'avance,
et bonne journée a vous,
Re: probleme de lecteur audio html5 sur version mobile
Posté : 28 sept. 2015, 22:38
par @rthur
Bonjour,
Pour contourner le soucis, la seule solution est d'utiliser le player HTML5 <audio>
Après il faut que tu trouves une solution pour rendre l'url du fichier plus difficile à récupérer.
Soit un token unique, ou alors faire un encodage de ton fichier dans un format moins usuel par exemple en MPEG-DASH.
Ou sinon avec "Media Source Extension" (MSE) de HTML5, on peut traiter les données reçues via javascript donc ça devrait être possible de faire un encodage en amont de tes fichiers et de les décoder ensuite en javascript avant de les passer dans le player <audio>
Toutefois pour cette dernière solution, je n'ai pas essayé et j'ai eu beau chercher je n'ai pas trouvé d'exemples sur le net qui ont fait ça...
Re: probleme de lecteur audio html5 sur version mobile
Posté : 28 sept. 2015, 23:09
par diice
Merci tout d' abord de ta réponse
Ensuite j'utilise déjà un token unique et avec un urlRewriting je fais que le nouveau nom de fichier mène au vrai fichier... Sauf que physiquement, ce nouveau nom n'existe pas et du couple lecteur <audio> disparaît car apriori il ne comprend que l'url physique "vraie" du fichier....
Je vais me renseigner sur le MPEG dash, merci de l'info.
Ensuite pour le JavaScript, du coup je trouve ça moins sécurisé que la metode actuelle, car un affichage du code indiquera tout. Et puis même chose si a la finale je n'ai pas l'URL "vraie" le <audio> ne s'affichera pas...
Pas simple !

Re: probleme de lecteur audio html5 sur version mobile
Posté : 29 sept. 2015, 00:01
par @rthur
La notion "d'url physique vraie" n'existe pas ; et la balise <audio> comme <video> fonctionne très bien avec de l'url-rewriting et des token.
Vérifie les logs dans la console de ton navigateur et les appels réseaux effectués (Ctrl+i pour accéder aux outils de développement) pour trouver d'où vient le problème.
La solution en javascript est relativement sécurisée car le fichier diffusé va être chiffréet il faudra ensuite que le hacker le décrypte pour récupérer le fichier mais ça veut dire rentrer dans le code javascript trouver les clés et la routine de décodage et la réappliquer en offline... bref, c'est beaucoup d'efforts pour pas grand chose et il aura + vite fait d'utiliser un soft d'enregistrement de ce qui passe par la carte son et que tu ne pourras jamais contrer.

Quoiqu'il en soit il faut bien avoir en tête qu'il est impossible de sécuriser à 100% un fichier diffusé sur internet pour empécher qu'il soit récupérable. Au mieux, tu peux rendre cela plus fastidieux.
Re: probleme de lecteur audio html5 sur version mobile
Posté : 29 sept. 2015, 08:53
par diice
salut @rthur !
sur mon site, je lis actuellement les sons (avec token et urlrewriting) et ca passe sans souci, mais des que je met la meme url du son dans <audio> le player disparait... c'est bizarre quand meme... mais je vais regarder dans la console effectivement voir s'il y a un souci mais la comme ca tout de suite, je vois pas ce qui pourrait se passer, pusique mon fichier php cible marche avec le player flash, et me retourne bien mon son... bref, j'avoue que c'est la première fois que je fais ca, donc, y'a plein de choses que je n'ai pas du prendre en compte... je vais voir ça cet apres midi, et je reviens pour dire ce qu'il en est.
apres pour la sécurité, oui effectivement je suis conscient (et j'ai prévenu mon client) que la sécurité au moins sur le son n'existe pas totalement... ma remarque sur le javascript était du coup peu intéressante

je regarde tout ça, et je reviens pour te dire ce qu'il en est !
merci de ton aide et bonne journée a toi,
Re: probleme de lecteur audio html5 sur version mobile
Posté : 29 sept. 2015, 16:31
par @rthur
Une solution pour faciliter le debugage c'est de faire une page de test minimaliste uniquement avec ton player audio dedans qui essaye de lire le fichier.
Re: probleme de lecteur audio html5 sur version mobile
Posté : 05 oct. 2015, 16:04
par diice
Salut @rthur !
Desolé du laps du temps passé depuis mon dernier message.
bref,
j'ai fait une page avec juste le lecteur.
tu verras j'ai mis a la fois sans le token, avec les 2 lecteurs (flash et html) et avec le token, pareil avec les 2 lecteurs, la meme adresse de fichier a chaque fois, et j'ai toujours ce souci du lecteur html qui disparait...
j'ai été dans la console, et je n'ai rien vu de bizarre qui m'explique ca...
peut-etre vois-tu quelque chose de ton coté que je n'arrive pas a voir ?
la page est :
http://www.arlfm.com/test-son.
qu'en penses-tu ?
Re: probleme de lecteur audio html5 sur version mobile
Posté : 05 oct. 2015, 18:59
par @rthur
j'ai été dans la console, et je n'ai rien vu de bizarre qui m'explique ca...
Moi, ma console me dit ça :
Le « Content-Type » HTTP « text/html » n'est pas géré. Le chargement de la ressource média
http://www.arlfm.com/agenda-32_b95f1662 ... 9f3be5.mp3 a échoué.
En gros ta redirection renvoie un content-type text/html au lieu de audio/mpeg pour un fichier MP3.
Re: probleme de lecteur audio html5 sur version mobile
Posté : 05 oct. 2015, 21:07
par diice
ah oui, je ne l'avais pas vu car j'étais sous chrome, et du coup je ne sais pas trop me servir de la console ! (d'ailleurs sous chrome ça marche... le player html5 reste, sous Edge aussi, sous safari, aucun des lecteur html n'apparait, et sous opera, c'est un mix, il apparait mais ne marche pas !)
et du coup, je viens donc de voir l'erreur sur la console de Mozilla effectivement... bon je vais essayer de regler ca alors
en tout cas merci beaucoup pour ton aide !
quand c'est réglé, je viens le dire haut et fort ici !
bonne soirée a toi,
et encore merci !!!
Re: probleme de lecteur audio html5 sur version mobile
Posté : 06 oct. 2015, 13:29
par diice
bonjour @rthur,
bon j'ai bien changé mon Content-Type (avant il etait en "audio/mp3"... je te passe sur la bourde...).
bref, et cela ne change rien... j'ai la meme erreur...
j'ai essayé de mettre mon header("Content-Type : audio/mpeg"); en haut de ma page 'play.php' (page qui gere le token et me renvoi le fichier avec un readfile($fichier);
est-ce que j'ai loupé un truc ??
mon code de page :
Code : Tout sélectionner
<?Php
if(!isset($_GET['token'])) {
exit();
}
$token = htmlspecialchars($_GET['token']);
$sqlSonsInsert="INSERT INTO table_token SET token='".$token."', fichier='".htmlspecialchars($_GET['type']."s-".$_GET['id'])."'";
$reqSonsInsert=$mysqli->query($sqlSonsInsert) or die('Erreur SQL Sons Insert !<br />'.AffSQL($sqlSonsInsert).'<br />'.$mysqli->error);
$reqSonsInsert->free_result;
$sqlSons="SELECT fichier FROM table_token WHERE token='".$token."'";
$reqSons=$mysqli->query($sqlSons) or die('Erreur SQL Sons !<br />'.AffSQL($sqlSons).'<br />'.$mysqli->error);
$reqSons->free_result;
if (!$reqSons->num_rows) {
//echo 'stop';
exit();
} else {
$sonInfo=$reqSons->fetch_assoc();
$ExplodeInfos=explode('-', $sonInfo['fichier']);
$Champ='fichier';
$sqlSon="SELECT ".$Champ.", ecoutes FROM new_sons_".$ExplodeInfos[0]." WHERE id='".$ExplodeInfos[1]."'";
$reqSon=$mysqli->query($sqlSon) or die('Erreur SQL Son !<br />'.AffSQL($sqlSon).'<br />'.$mysqli->error);
$reqSon->free_result;
if (!$reqSon->num_rows) {
exit();
} else {
$sonInfos=$reqSon->fetch_assoc();
// ajout +1 en écoute
$sqlSon="update table_son set ecoutes='".($sonInfos['ecoutes']+1)."' WHERE id='".$ExplodeInfos[1]."'";
$reqSon=$mysqli->query($sqlSon) or die('Erreur SQL Son !<br />'.AffSQL($sqlSon).'<br />'.$mysqli->error);
$reqSon->free_result;
$fichier=$_SERVER["DOCUMENT_ROOT"].$racineSite.'sons/'.$sonInfos[$Champ];
if(file_exists($fichier) && is_readable($fichier)) {
$sqlDelSons="DELETE FROM new_sons_secure_token WHERE token='".$token."'";
$reqDelSons=$mysqli->query($sqlDelSons) or die('Erreur SQL Del Sons !<br />'.AffSQL($sqlDelSons).'<br />'.$mysqli->error);
$reqDelSons->free_result;
header('Content-Type: audio/mpeg');
readfile($fichier);
exit();
}
}
}
?>
je reprécise, que j'ai essayé aussi de mettre header('Content-Type: audio/mpeg'); tout en haut de page...
Re: probleme de lecteur audio html5 sur version mobile
Posté : 06 oct. 2015, 20:42
par @rthur
Le content type est toujours text/html, regarde la console de ton navigateur et l'onglet réseau > entête
Re: probleme de lecteur audio html5 sur version mobile
Posté : 06 oct. 2015, 23:23
par diice
oui justement c'est ca que je ne comprends pas... je lui indique bien pourtant que c'est un autre Content-Type !?
Re: probleme de lecteur audio html5 sur version mobile
Posté : 07 oct. 2015, 00:26
par @rthur
Bah pars d'un script minimaliste qui fait juste l'envoi du header et le readfile et vérifie que ça fonctionne.
Re: probleme de lecteur audio html5 sur version mobile
Posté : 07 oct. 2015, 16:02
par diice
hello !
j'ai fait ca :
Code : Tout sélectionner
header('Content-Type: audio/mpeg');
$fichier=$_SERVER["DOCUMENT_ROOT"].'/sons/agendas/agenda-bons-plans_radioARL_20151003_111651.mp3';
readfile($fichier);
je ne peux pas faire plus simple, et ... ca ne marche toujours pas, la console me donne toujours la meme erreur...
la je ne sais pas du tout comment faire !?
ce qui est bizarre, dans la console, c'est qu'il y a des lignes ou il appel le fichier token et qu'il est bien chargé... A quoi faire référence ce Content-Type ?? au readfile() ou a ma page play.php ???
message de la console :
Code : Tout sélectionner
GET
http://www.arlfm.com/test-son [HTTP/1.1 200 OK 296ms]
GET
http://www.arlfm.com/sons/player_mp3.swf [HTTP/1.1 304 Not Modified 58ms]
[b]GET
http://www.arlfm.com/agenda-32_a314b3da0f8025ebf6c5ee79a1c5e30e.mp3 [HTTP/1.1 200 OK][/b]
GET
http://www.arlfm.com/sons/player_mp3.swf [HTTP/1.1 304 Not Modified 61ms]
Le « Content-Type » HTTP « text/html » n'est pas géré. Le chargement de la ressource média http://www.arlfm.com/agenda-32_a314b3da0f8025ebf6c5ee79a1c5e30e.mp3 a échoué. test-son
Le chargement de toutes les ressources possibles a échoué. Le chargement du média a été arrêté. test-son
GET
http://www.arlfm.com/sons/agendas/agenda-bons-plans_radioARL_20151003_111651.mp3 [HTTP/1.1 206 Partial Content 7530ms]
GET
[b]http://www.arlfm.com/agenda-32_ac5e1fc6496b328721a7997bae80e57f.mp3 [HTTP/1.1 200 OK [/b]14159ms]
Re: probleme de lecteur audio html5 sur version mobile
Posté : 07 oct. 2015, 20:16
par @rthur
Voici le code que j'ai essayé (et qui marche) :
<html>
<body>
<audio preload="false" controls><source src="audio.php" /></audio>
</body>
</html>
Et le fichier audio.php :
<?php
header('Content-Type: audio/mpeg');
$fichier='agenda-bons-plans_radioARL_20151003_111651.mp3';
readfile($fichier);