1

jPlayer を使用してメディアを再生しています。コンテンツを jPlayer に配信するために PHP ダウンロード スクリプトも使用しています。

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