实时音频流有效的HTTP资源

时间:2012-11-24 15:18:06

标签: php streaming mp3 shoutcast

Shoutcast服务器无法生成有效的HTTP资源。我们的移动播放器链接(Android)需要有效的HTTP资源。我如何使用PHP脚本shoutcast流?这个脚本提供有效的http资源?有人知道吗?

<?php

$track = "shoutcaststream.mp3";

if (file_exists($track)) {
    header("Content-Type: audio/mpeg");
    header('Content-Length: ' . filesize($track));
    header('Content-Disposition: inline; filename="shoutcaststream.mp3"');
    header('X-Pad: avoid browser bug');
    header('Cache-Control: no-cache');
    readfile($track);
    exit;
} else {
    header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true, 404);
    echo "no file";
}

更新2

现在一切都很精细的“布拉德”说明。我们使用set_time_limit(0)但是我的流在3分钟到5分钟之后仍然关闭?怎么修?请帮助我.. :)

1 个答案:

答案 0 :(得分:0)

是的,你拥有的是有效的。

关于SHOUTcast流的无效部分是他们在回复中返回ICY 200 OK而不是HTTP/1.0 200 OK。如果您希望更改脚本以代理SHOUTcast请求,则可能需要通过正常的TCP连接(请参阅fsockopen())连接到SHOUTcast服务器,并发送原始请求数据。

一旦建立连接并接收数据,请将此数据发送给您的客户。

另请注意,您需要致电set_time_limit(0),以便您的脚本不会在30秒左右超时。另外,请确保不发送Content-Length标头,并将响应设置为HTTP/1.0,这样您就不必将数据作为分块发送。 (分块编码播放仅适用于Android 2.3或更高版本。)

最后,如果您发现使用PHP进行黑客攻击太麻烦了,我有一个stream hosting service available for testing可以完全按照您的要求进行操作,这对Android上的内置音频播放器很有用