我正在使用jPlayer播放媒体,我也使用PHP下载脚本将内容传递给jPlayer。
我遇到Safari的问题,因为音频无法正确缓冲。最初认为这是一个Accept-Ranges问题,我确保传递正确的标题。
在Firefox中,如下面的屏幕截图所示,标题可以很好地传递,并且一切都按照我的预期运行。
http://img171.imageshack.us/img171/5706/ff1z.png
然而,在Safari中,当我点击播放时会发生以下情况:
http://img138.imageshack.us/img138/161/safari2.png
正如您所看到的那样,它称为下载脚本,但状态仍处于暂挂状态且不会更改。奇怪的是,音频播放得很好。
在查看收到的标题后,它进一步困扰我,因为它似乎没有发送标题:
http://img805.imageshack.us/img805/8411/safari1.png
这些是我从下载脚本发送的标题,省略了一些内容:
...
header("Content-Type: ".$mimeTypes[$ext]);
header('Content-Disposition: attachment; filename="Test - '.$_GET[title].'.mp3"');
header('Accept-Ranges: bytes');
$begin = 0;
$end = $fsize - 1;
if (preg_match('/bytes=\h*(\d+)-(\d*)[\D.*]?/i', $_SERVER['HTTP_RANGE'], $matches))
{
$begin = intval($matches[1]);
if (!empty($matches[2]))
{
$end = intval($matches[2]);
}
}
header('Content-Length:' . (($end - $begin) + 1));
header("Content-Range: bytes $begin-$end/$fsize");
将jvlayer发送到jPlayer的javascript是:
$("#jquery_jplayer_1").jPlayer("setMedia", { mp3: "/download.php?track=" + id });
$("#jquery_jplayer_1").jPlayer("play");
如果有人能指出我正确的方向,我是否错过了Safari要求的一些重要的标题信息 - 或者......?
非常感谢。