1

我正在使用 jPlayer 播放媒体,我还使用 PHP 下载脚本将内容传送到 jPlayer。

我在使用 Safari 时遇到问题,音频无法正确缓冲。最初认为这是一个 Accept-Ranges 问题,我确保传递了正确的标题。

在 Firefox 中,如下面的屏幕截图所示,标头可以正常通过,并且一切正常。

但是,在 Safari 中,当我单击播放时会发生以下情况:

如您所见,它称为下载脚本,但状态仍处于挂起状态且不会更改。奇怪的是,音频播放正常。

在查看收到的标头时,它让我更加困惑,因为似乎没有发送标头:

这些是我从下载脚本发送的标头,省略了位:

...

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");

我将文件发送到 jPlayer 的 javascript 是:

    $("#jquery_jplayer_1").jPlayer("setMedia", { mp3: "/download.php?track=" + id });
    $("#jquery_jplayer_1").jPlayer("play");

如果有人能指出我正确的方向,我是否错过了 Safari 需要的一些关键标题信息 - 或者......?

非常感谢。

4

0 回答 0