2017-08-30 2 views
1

J'essaie d'obtenir des données d'un flux radio (MP3) de http et je veux le diffuser en https. ce que j'ai essayé:PHP comment rediffuser un flux mp3

<?php 

define(URL, 'Mymp3stream.com'); 

$ch = curl_init(URL); 

curl_setopt_array($ch, array(
    CURLOPT_CONNECTTIMEOUT => 60, 
    CURLOPT_FOLLOWLOCATION => TRUE, 
    CURLOPT_RETURNTRANSFER => TRUE, 
    CURLOPT_HEADER => TRUE 
)); 

curl_exec($ch); 

comment puis-je obtenir ruisselait? le navigateur ne démarre aucune sortie audio. Même avec en-têtes

header('Content-type: audio/mpeg'); 
header("Content-Transfer-Encoding: binary"); 
header("Pragma: no-cache"); 

il n'y avait pas de son dans le navigateur. la page se charge tout le temps.

J'ai essayé aussi de lire le flux dans une mémoire tampon de chaîne et fit écho avec:

$stream=fopen($url, 'rb'); 
while(!feof($stream)){ 
    $buffer=fread($stream, 128); 
    echo $buffer; 
    flush(); 
} 
fclose($stream); 

un autre essai était d'utiliser get_stream_content après l'ouverture du fichier avec fopen. il y avait un succès mineur après avoir ajouté les en-têtes: Dans Chrome, il a été montré l'audioplayer, mais aucun son n'a commencé à jouer.

+0

PS: Avez-vous lien vers 'Mymp3stream.com' pour vérifier? Je viens de voir ma méthode implique de connaître l'URL des données mp3 servies (peut essayer de trouver pour vous). J'ai utilisé PHP pour le proxy pour réaliser la visualisation du flux radio. –

+0

@ VC.One: merci pour l'aide voici un exemple de flux de notre station de radio locale: http://mp3channels.webradio.antenne.de:80/antenne – phil1283

+0

Faites-moi savoir si ma réponse a fonctionné pour vous. –

Répondre

0

Pour votre flux, en utilisant PHP readfile(); est suffisant. Il obtient le même résultat que mettre le lien radio directement dans un tag <audio>.

Code PHP (sauf comme testproxy.php):

<?php 

$file = "http://mp3channels.webradio.antenne.de/antenne"; 
readfile($file); 

?> 

HTML (utilisez le fichier PHP ci-dessus en tant que source d'une balise <audio>):

<!DOCTYPE html> 
<html> 
<body> 

<audio id="audio" controls> 
    <source crossorigin="anonymous" src="testproxy.php" type="audio/mpeg"> 
    Your browser does not support the audio element. 
</audio> 

</body> 
</html> 
+0

merci pour votre approche, cela fonctionne-t-il sur votre système? Je l'ai essayé sur deux PC différents avec Internet Explorer et Chrome. les deux sont chargés à l'infini. Une idée? La taille du buffer doit-elle être déclarée dans le fichier php? – phil1283