Lire un mp3

macpowered - 26 avril 2013 à 14:42
 macpowered - 26 avril 2013 à 15:57
Bonjour à tous,

Je bloque sur un problème. J'ai une base de données SQL server dans laquelle sont stockés des extraits de musique au format mp3. Je voudrais mettre en place une page php qui me permet d'afficher le titre du morceau, et un petit lecteur à côté pour écouter l'extrait. J'ai mis en place dewplayer.swf mais dans le code pour l'implementer j'ai un truc du genre


<object type= "application/x-shockwave-flash" data="dewplayer.swf?mp3= mon_mp3.mp3 " type ="audio/mp3" >'; ?>" width="200" height="20">

Évidemment, dans la base, les fichiers mp3 sont stockés en binaire. Sous quelle forme dois-je paramétrer dewplayer pour récupérer le mp3 ? ou simplement comment faire pour mettre a disposition l'extrait de musique, mon but est de pouvoir les ecouter. J'imagine que ce sera un flux que je récupèrerai et non un fichier du style truc.mp3
Merci par avance.

2 réponses

Bonjour,

Question intéressante effectivement...
Déjà a ta place, j'aurai jamais stocké des mp3 en format binaire dans la bdd, tant niveau taille bdd, que là ton problème.
Mais soit, chacun fais comme il veut .

Le plus simple je pense, serait que tu créer un fichier temporaire qui stocke le flux mp3, et ce même fichier qui serait lu par dewplayer.

Bon courage
0
Merci de ta réponse.
Alors concernant la base, ce n'est pas un choix de ma part. Je suis étudiant (40ans mais étudiant quand même, en reprise d'étude) et la base est stockée sur les serveur de l'université. Ils ont choisi de stocker cela comme ça donc je ne peux rien y changer, je dois donc faire avec. Effectivement, si j'avais eu à choisir je n'aurais pas procédé comme cela mais c'est certainement dans un but pédagogique.

Par contre, pourrais-tu m'expliquer comment créer ce fichier temporaire justement. Dans l'idée, j'ai essayé de le faire mais je ne maîtrise pas encore assez je pense. Un coup de pouce serait le bien venu.

J'ai une page extraits.php par exemple dans lequel j'ai déclaré mon lecteur (dans une boucle qui m'affiche tous les titres des morceaux d'un album, de manière à l'afficher devant chaque titre de morceau).
j'ai créé un fichier base.php dans lequel j'ai mis simplement:
<?php
   	ob_start()
$code = $_REQUEST['code'];
$conn = odbc_connect('Classique','XXX','XXX',SQL_CUR_USE_ODBC) or die ("raté");
$query "Select Code_Morceau, Extrait from Enregistrement WHERE Code_Morceau".$code.;
$result = odbc_exec($conn,$query);
odbc_binmode($result, ODBC_BINMODE_PASSTHRU);
$mp3 = odbc_result ($result, 2);
header("Content-type: audio/mpeg");
header("Accept-Ranges: bytes");
header("Content-Length: ".filesize($mp3));
ob_end_flush();
?>


(la syntaxe est-elle bonne ?)

et un fichier extraits.php

<?php
    session_start();
    if (!isset($_SESSION["NOM_USER"])) 
    {
$url = $_SERVER["REQUEST_URI"];
header("Location: connexion.php?url=".$url);
    }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
    <head>
        <title>Contenu de la base musique</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <meta name="description" content="Amazon" />
<link rel="stylesheet" type="text/css" href="css/style.css" media="screen"/>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.easing.1.3.js"></script>
        <script type="text/javascript" src="js/menu.js"></script>
    </head>

    
<header>
<?php
include('menu.html');
?>
        </header>

 <?php
$code = $_REQUEST['code'];
$conn = odbc_connect('Classique','XXX','XXX',SQL_CUR_USE_ODBC) or die ("raté");
   	        $result odbc_exec($conn,"SELECT DISTINCT Album.Titre_Album, Album.Code_Album FROM Album WHERE Album.Code_Album '".$code."'");
    while (odbc_fetch_row($result))
{
$titreAlbum = odbc_result($result,1);
$codeAlbum = odbc_result($result,2);
if($titreAlbum {0}=="?")
{
    				$titreAlbum = substr($titreAlbum ,2);
}?><?php echo htmlentities($titreAlbum ); ?>



<?php echo '';?>

<?php 
$result2 odbc_exec($conn,"SELECT DISTINCT Oeuvre.Titre_Oeuvre, Album.Titre_Album, Album.Code_Album FROM Oeuvre INNER JOIN Composition_Oeuvre ON Oeuvre.Code_Oeuvre Composition_Oeuvre.Code_Oeuvre INNER JOIN Composition ON Composition_Oeuvre.Code_Composition = Composition.Code_Composition INNER JOIN Enregistrement ON Composition.Code_Composition = Enregistrement.Code_Composition INNER JOIN Composition_Disque ON Enregistrement.Code_Morceau = Composition_Disque.Code_Morceau INNER JOIN Disque ON Composition_Disque.Code_Disque = Disque.Code_Disque INNER JOIN Album ON Disque.Code_Album = Album.Code_Album WHERE Album.Code_Album = '".$codeAlbum."'");
while (odbc_fetch_row($result2))
{
?>
                        
<?php
$titreOeuvre = odbc_result($result2,1);
echo "- ".htmlentities($titreOeuvre);?>
                        <object type="application/x-shockwave-flash" data="dewplayer.swf?mp3=??????????????&amp;bgcolor=FFFFFF" width="200" height="20"></object>
<?php		
}
   	}?>
    

    
</html>

Je cherche en gros à remplacer les mp3=?????????? par une fichier mp3.
J'espère avoir été relativement clair.
N'hésite pas à me demander des précisions.

Merci beaucoup en tout cas.
0
Rejoignez-nous