0

保護されたメディアをストリーミングする jPlayer を使用しています。トラックが完全にバッファリングされる前にシーク バーのセクションをクリックすると、トラックが最初から再生されますが、プログレス バーはクリックした場所に残ります。

これを回避する方法はありますか。コンテンツの範囲などを調査し、次の解決策に出くわしましたが、まだ十分ではありません。

header("Content-Type: ".$mimeTypes[$ext]);
header('Content-Disposition: attachment; filename="'.$fileName.'"');
header('Accept-Ranges: bytes');
//header('Content-Range: 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");

トラック プログレス バーは、smartReadFile.php からのこの修正されたコードの助けを借りて機能します。

https://groups.google.com/forum/#!msg/jplayer/nSM2UmnSKKA/bC-l3k0pCPMJ

バッファリングするのに数秒かかると、正しく動作します。

シークバーがデータを取得する前に、jPlayerにプリバッファリングする方法はありますか?

$(document).ready(function(){

  $("#jquery_jplayer_1").jPlayer({

    swfPath: "js",
    supplied: "mp3, m4a, oga"
  });

});

function playTrack(id,title) {

$("#jquery_jplayer_1").jPlayer("setMedia", { mp3: "/download.php?track=" + id });
$("#jp-audio-container .track-name").text(title);
$("#jquery_jplayer_1").jPlayer("play");

var span = document.getElementById('trackTitle');

while( span.firstChild ) {

    span.removeChild( span.firstChild );

}

span.appendChild( document.createTextNode("Now playing: " + title) );

}

これを回避する方法はありますか?

どうもありがとう。

4

0 に答える 0