3

Shoutcast 服务器不生成有效的 HTTP 资源。我们的移动播放器链接 (Android) 需要有效的 HTTP 资源。我如何使用 php 脚本进行直播流?此脚本提供有效的 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 分钟后仍然关闭?怎么修?请帮助我.. :)

4

1 回答 1

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 破解某些东西太麻烦了,我有一个流托管服务可用于测试,它完全符合你的要求,它适用于 Android 上的内置音频播放器。

于 2012-11-24T18:24:52.223 回答