我们有shoutcast/icecast 音频流。我希望能够在我们的网站上提供一个链接,例如 mobiledroid.php,该链接将使用默认播放器打开。我在另一个网站上看到过这个,所以我知道这是可能的。
我假设它通过 php 文件使用 php 标头和流作为流?
使用 Brad 的说明,android 实际上提供了使用声音播放器打开的选项。好一个。
它也可以通过 PC 在 WMP 上播放,但不能在 android 上播放上述链接的播放方式
header("Content-type: audio/mpeg");
header("Transfer-Encoding: chunked");
header("Connection: close");
$sock = fsockopen($streamname,$port); //$streamname is the IP
fputs($sock, "GET $path HTTP/1.0\r\n"); //path in my case is /;stream.mp3
fputs($sock, "Host: $ip\r\n");
fputs($sock, "User-Agent: WinampMPEG/2.8\r\n");
fputs($sock, "Accept: */*\r\n");
fputs($sock, "Icy-MetaData:1\r\n");
fputs($sock, "Connection: close\r\n\r\n");
fpassthru($sock);
fclose($sock);
在android上,它说“对不起,这个播放器不支持这种类型的音频文件”
更新 2:
删除"Transfer-Encoding"
将在 android 上播放,但由于直播流没有“Content-Length”,因此像往常一样需要很长时间才能以“Preparing”状态开始流式传输
header("Transfer-Encoding: none");
也从上面的代码中删除:
引用布拉德:
Android 2.3 及更高版本存在将 Transfer-Encoding 设置为“none”的问题。删除该硬设置的标头会将流放回分块传输编码。这适用于 Android 2.3+。最初我禁用了分块编码,因为 VLC 不支持它。Android 2.2 及更早版本似乎也不支持分块编码。
请注意,尽管它适用于 android,但大多数直播流需要很长时间才能开始。