Ecoute d'un extrait de musique depuis une base de données
Résolu
jollymathi
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
jollymathi Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
jollymathi Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis en 2e année de DUT Informatique et je dois réaliser un site de e-commerce proposant un catalogue de musiques. Je souhaiterais pouvoir faire écouter un extrait de chaque musique d'un album. Ces extraits sont enregistrés dans une base de donnée SQL. J'ai déjà réussi à afficher les images des pochettes des oeuvres et je pensais que le code était à peu près le même pour récupérer un extrait mais mon code ne fonctionne pas. Les titres des extraits s'affichent bien et un lecteur de musique apparait brièvement en dessous de chacun.
J'ai cherché des explications sur google mais je ne trouve rien correspondant à mon problème. J'espère avoir été assez claire. Quelqu'un pourrait-il m'aider ?
Voici le code qui affiche les noms et les extraits (listeEnrCompo.php):
Le code qui récupère un enregistrement en fonction de son identifiant, repris du code pour récupérer une image (Enregistrement.php) :
Edit: Précision du langage dans la coloration syntaxique.
Je suis en 2e année de DUT Informatique et je dois réaliser un site de e-commerce proposant un catalogue de musiques. Je souhaiterais pouvoir faire écouter un extrait de chaque musique d'un album. Ces extraits sont enregistrés dans une base de donnée SQL. J'ai déjà réussi à afficher les images des pochettes des oeuvres et je pensais que le code était à peu près le même pour récupérer un extrait mais mon code ne fonctionne pas. Les titres des extraits s'affichent bien et un lecteur de musique apparait brièvement en dessous de chacun.
J'ai cherché des explications sur google mais je ne trouve rien correspondant à mon problème. J'espère avoir été assez claire. Quelqu'un pourrait-il m'aider ?
Voici le code qui affiche les noms et les extraits (listeEnrCompo.php):
<?php $codeOeuvre = $_GET['CodeOeuvre']; $codeMus = $_GET['CodeMus']; $driver = 'sqlsrv'; $host = 'xxx'; $nomDb = 'xxx'; $user = 'xxx'; $password = 'xxx'; $pdodsn = "$driver:Server=$host;Database=$nomDb"; $pdo = new PDO($pdodsn, $user, $password); // Affichage du compositeur $requete = "Select Nom_Musicien From Musicien Where Code_Musicien = $codeMus"; $arr = $pdo->query($requete)->fetch(); // et du titre de l'oeuvre $requete = "Select Titre_Oeuvre From Oeuvre Where Code_Oeuvre = $codeOeuvre"; $arr2 = $pdo->query($requete)->fetch(); echo '<h1>' . $arr2['Titre_Oeuvre'] . ' de ' . $arr['Nom_Musicien'] . '</h1>'; //Affichage des enregistrements $requete = "SELECT distinct Code_Morceau, Titre " . "FROM Enregistrement " . "Inner Join Composition on Composition.Code_Composition=Enregistrement.Code_Composition " . "Inner Join Composition_Oeuvre on Composition_Oeuvre.Code_Composition=Composition.Code_Composition " . "Where Composition_Oeuvre.Code_Oeuvre=$codeOeuvre"; foreach ($pdo->query($requete) as $row) { echo '<p>'. $row['Titre'] .'</p>'; echo '<audio src="Enregistrement.php?CodeMorc=' . $row['Code_Morceau'] . '" controls></audio>'; } $pdo = null; ?>
Le code qui récupère un enregistrement en fonction de son identifiant, repris du code pour récupérer une image (Enregistrement.php) :
<?php $pdo = new PDO("sqlsrv:Server=xxx;Database=xxx", "xxx", "xxx"); $stmt = $pdo->prepare("SELECT Extrait " . "FROM Enregistrement " . "WHERE Code_Morceau=?"); $stmt->execute(array($_GET['CodeMorc'])); $stmt->bindColumn(1, $lob, PDO::PARAM_LOB); $stmt->fetch(PDO::FETCH_BOUND); // $image = pack("H*", $lob); // A modifier, adapté pour images actuellement //header("Content-Type: image/jpeg");// idem echo $stmt; ?>
Edit: Précision du langage dans la coloration syntaxique.
A voir également:
- Ecoute d'un extrait de musique depuis une base de données
- Télécharger musique gratuitement sur pc - Télécharger - Conversion & Extraction
- Base de registre - Guide
- Retrouver une musique avec un extrait en ligne - Guide
- Musique audio - Télécharger - Lecture & Playlists
- Supprimer les données de navigation - Guide
5 réponses
Salut,
Solution ici : http://41mag.fr/lecture-dun-fichier-mp3-ou-audio-en-html5.html
T'es sur que tu as enregistrer un fichier audio dans ta base de donnée ? tu n'a pas fait juste une url et stocké les extrait audio sur ton FTP ? parce-que j'ai jamais vu de fichier audio "physiquement" dans une bdd...
Solution ici : http://41mag.fr/lecture-dun-fichier-mp3-ou-audio-en-html5.html
T'es sur que tu as enregistrer un fichier audio dans ta base de donnée ? tu n'a pas fait juste une url et stocké les extrait audio sur ton FTP ? parce-que j'ai jamais vu de fichier audio "physiquement" dans une bdd...
Salut
Je sais pas si ça peut vous aidez mais j'utilise ça sur mon site pour diffuser de la musique :
http://www.dewplayer.fr
Je sais pas si ça peut vous aidez mais j'utilise ça sur mon site pour diffuser de la musique :
http://www.dewplayer.fr
Merci Ben314 mais j'ai déjà un lecteur, le problème est juste de récupérer les extraits musicaux de la base de données.
Moi je aussi je me demande comment vous stocker vos MP3 ???
il ne sont pas dans la BD ??? il sont sur le FTP !! ou ailleurs ???
Du coup dans la bd il suffit juste de mettre le lien vers votre fichier .mp3, puis de l'appeler dans vos page avec une joli bout de code PHP/mysql
Selon l'hébergeur faut stocker le lien complet (http....) soit le lien direct /mp3/son.mp3
C'est pas évidement à expliqué, puis moi et pdo ont est pas franchement ami ^^
il ne sont pas dans la BD ??? il sont sur le FTP !! ou ailleurs ???
Du coup dans la bd il suffit juste de mettre le lien vers votre fichier .mp3, puis de l'appeler dans vos page avec une joli bout de code PHP/mysql
Selon l'hébergeur faut stocker le lien complet (http....) soit le lien direct /mp3/son.mp3
C'est pas évidement à expliqué, puis moi et pdo ont est pas franchement ami ^^
Salut jollymathi,
Si ton fichier son est stocké dans la base, et que tu veux le jouer avec html5, tu peux sauvegarder les données récupérées avec ta requête dans un répertoire accessible par le serveur dans un fichier avec un nom unique.
Puis passer ce fichier à la balise audio de html5.
lien utiles :
https://www.php.net/manual/fr/function.tempnam.php
https://www.php.net/manual/fr/function.uniqid.php
https://stackoverflow.com/questions/460164/unique-and-temporary-file-names-in-php
https://www.w3schools.com/html/html5_audio.asp
https://www.w3schools.com/tags/ref_av_dom.asp
Si tu ignores le type de ton fichier son, tu peux le trouver de plusieurs façons.
sous Linux, utilise la commande
autrement, ouvre le fichier dans un éditeur hexadécimal, ou même un éditeur de texte, et regarde les données du début où se trouvent les nombres "magiques" de signature du format.
Par exemple, un fichier mp3, selon le format, pourra avoir :
- "FF FB" en hexa, soit une sorte de point et un u accentué en encodage ISO 8859-1,
- ou "49 44 33" en hexa, soit "ID3" en ASCII
https://en.wikipedia.org/wiki/List_of_file_signatures
Dal
Si ton fichier son est stocké dans la base, et que tu veux le jouer avec html5, tu peux sauvegarder les données récupérées avec ta requête dans un répertoire accessible par le serveur dans un fichier avec un nom unique.
Puis passer ce fichier à la balise audio de html5.
lien utiles :
https://www.php.net/manual/fr/function.tempnam.php
https://www.php.net/manual/fr/function.uniqid.php
https://stackoverflow.com/questions/460164/unique-and-temporary-file-names-in-php
https://www.w3schools.com/html/html5_audio.asp
https://www.w3schools.com/tags/ref_av_dom.asp
Si tu ignores le type de ton fichier son, tu peux le trouver de plusieurs façons.
sous Linux, utilise la commande
file nomdufichier.
autrement, ouvre le fichier dans un éditeur hexadécimal, ou même un éditeur de texte, et regarde les données du début où se trouvent les nombres "magiques" de signature du format.
Par exemple, un fichier mp3, selon le format, pourra avoir :
- "FF FB" en hexa, soit une sorte de point et un u accentué en encodage ISO 8859-1,
- ou "49 44 33" en hexa, soit "ID3" en ASCII
https://en.wikipedia.org/wiki/List_of_file_signatures
Dal
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
C'est bon j'ai trouvé ! En fait il fallait bien reprendre le code que j'avais fait pour extraire les images et modifier seulement le header. Voici le code final :
Code de Enregistrement.php :
Et j'ai légerement modifé le foreach de ListEnrCompo.php :
Je vous remercie pour l'aide que vous m'avez apportée !
Code de Enregistrement.php :
<?php $pdo = new PDO("sqlsrv:Server=xxx;Database=xxx", "xxx", "xxx"); $stmt = $pdo->prepare("SELECT Extrait " . "FROM Enregistrement " . "WHERE Code_Morceau=?"); $stmt->execute(array($_GET['CodeMorc'])); $stmt->bindColumn(1, $data, PDO::PARAM_LOB); $stmt->fetch(PDO::FETCH_BOUND); $musique = pack("H*", $data); header("Content-Type: audio/mpeg"); echo $musique; ?>
Et j'ai légerement modifé le foreach de ListEnrCompo.php :
foreach ($pdo->query($requete) as $row) { echo '<p>'. $row['Titre'] .'</p>'; echo '<audio controls="controls" preload="none">' .'<source src="Enregistrement.php?CodeMorc=' . $row['Code_Morceau'] . '" type="audio/mp3" />' .'Votre navigateur n\'est pas compatible' .'</audio>'; }
Je vous remercie pour l'aide que vous m'avez apportée !
Et ton lien ne m'aide pas malheureusement. C'est ce que je trouve partout mais le problème est que ce n'est pas un fichier mp3 que j'ai.
Je devrais peut-être demander des détails à l'administrateur de l'IUT.
Je ne connais pas les BLOB ou LONGBLOB, c'est donc bien possible de stocker des fichiers directement dans une bdd.
C'est en 4 parties, tu devrais trouver ton bonheur :
http://methylbro.titaxium.org/post/2009/11/24/php-mysql-enregistrer-et-lire-des-fichiers-dans-une-base-de-donnees
De toute façon si ton IUT te fournis pas de FTP c'est que ton prof d'info veut que tu passe par des BLOB ^^