2017-08-30 39 views
1

我試圖從http的一個無線電流(MP3)中獲取數據,並希望通過https流出它。 這是我的嘗試:PHP如何再次串流一個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); 

我怎樣才能得到它傳輸的內容? 瀏覽器不會啓動任何音頻輸出。即使頭

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

有一個在瀏覽器沒有音訊。 頁面一直在加載。

我也試圖流中讀取到字符串緩衝區中,並與呼應出來:

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

闖闖與FOPEN打開文件後使用get_stream_content。 添加標題後取得了較小的成功: 在Chrome中顯示了audioplayer,但沒有聲音開始播放。

+0

PS:你有鏈接到'Mymp3stream.com'進行檢查?我剛剛看到我的方法涉及知道正在服務的MP3數據的URL(可以嘗試找出你)。我使用PHP進行代理以實現無線電流的可視化。 –

+0

@ VC.One:在此感謝您的幫助,我們當地的廣播電臺的樣本流:http://mp3channels.webradio.antenne.de:80/antenne – phil1283

+0

讓我知道我的答案是否適合您。 –

回答

0

對於您的流,使用PHP的readfile();就足夠了。它將無線電鏈路直接放在<audio>標籤中,達到了相同的結果。

PHP代碼(保存爲testproxy.php):

<?php 

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

?> 

HTML(使用上面的PHP文件作爲一些<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

感謝您的方法,它在您的系統上工作?我在兩臺不同的電腦上使用Internet Explorer和Chrome進行了試用。兩者都加載到無限遠。任何想法?緩衝區大小是否在php文件中聲明? – phil1283