我需要通过这个php文件从另一台服务器流式传输媒体文件。
<?php
$out = array(
'http'=>array(
'method'=>"GET",
'header'=>"Content-type: audio/mpeg\r\n",
)
);
$stream = stream_context_create($out);
$end = fopen('http://example.com/audio.mp3', 'r', false, $stream);
fpassthru($end);
readfile($end);
?>
但标题不起作用。 我该如何解决这个问题?
答案 0 :(得分:0)
您正在以错误的方向发送标头。您所做的工作会通知源服务器您将在GET请求中发送一些audio/mpeg
- 无论如何都是无效的,GET请求没有内容。您实际需要做的是将其发送给将接收内容的客户。
您不应该为此任务需要流上下文 - 请尝试以下代码:
<?php
// Try and open the remote stream
if (!$stream = fopen('http://example.com/audio.mp3', 'r')) {
// If opening failed, inform the client we have no content
header('HTTP/1.1 500 Internal Server Error');
exit('Unable to open remote stream');
}
// It's probably an idea to remove the execution time limit - on Windows hosts
// this could result in the audio stream cutting off mid-flow
set_time_limit(0);
// Inform the client we will be sending it some MPEG audio
header('Content-Type: audio/mpeg');
// Send the data
fpassthru($stream);
答案 1 :(得分:0)
fopen之后,添加
header('content-type: audio/mpeg');
or
header('content-type: application/octet-stream');