我正在尝试从http中获取无线电流(MP3)中的数据,并希望以https方式将其流式传输出去。 这就是我的尝试:
<?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中显示了音频播放器,但没有声音开始播放。
答案 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>