2012-04-02 27 views
1

によって提供されている場合、jPlayerは再生中にメディアをキャッシュしません。つまり、再生中に残りの曲をキャッシュしません。出力がPHPスクリプト

JS:

$('#jplayer-9999').jPlayer({ 
    ready: function() { 
     $(this).jPlayer('setMedia', { 
      oga: 'http://mysite/getogg.php', 
     }).jPlayer('play', 15); 

     $(this).bind($.jPlayer.event.timeupdate, function(event) { 
      if(event.jPlayer.status.currentTime > 55) { 
       $(this).jPlayer('play', 15); 
      } 
     }); 

    }, 
    play: function() { 
     $(this).jPlayer('pauseOthers'); 
    }, 
    cssSelectorAncestor: '#jp_container_9999', 
    swfPath: '/js/jplayer', 
    supplied: 'oga', 
    preload: 'auto' 
}); 

PHP(getogg.php):

<?php 

header('Content-type: audio/ogg'); 
$output = readfile("/oggs/1234.ogg"); 

echo $output; 

?> 

しかし直接リンクがうまく動作し、歌があり、キャッシング: 男鹿:「のhttp://個人用サイト/ oggs/1234.ogg '

この問題の解決にお役立てください。

+0

プログレッシブバッファリングを意味しますか?また、単に高いメモリ使用量は、正しいキャッシュ・ヘッダーを設定し、関数fgetsで小さな塊を吐き出すと、バッファ –

+0

@LawrenceCheroneをクリアする必要があります言及しないように問題を引き起こすように、ファイル全体をも吐き出しは:あなたが例を提供することができ、合理的に聞こえますか? –

答えて

0

問題は、OGGフォーマットに関連していました。 メディアをMP3に変更すると問題が解決しました。

1

これを試してみてください。

<?php 
error_reporting(E_ALL); 

$status=stream("./oggs/1234.ogg"); 

if($status !== true){ 
    if($status=='1'){echo('Cannot stream a folder check path!');} 
    if($status=='2'){echo('File not found!');} 
} 

function stream($file,$speed=1024){ 
    if (file_exists($file)) { 
     if(is_dir($file)){return '1';} 
     header('Content-Description: File Transfer'); 
     header('Content-Type: application/octet-stream'); 
     header('Content-Disposition: attachment; filename="'.basename($file).'"'); 
     header('Content-Transfer-Encoding: binary'); 
     header('Connection: Keep-Alive'); 
     header('Expires: 0'); 
     header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
     header('Pragma: public'); 
     header('Content-Length: '.sprintf("%u", filesize($file))); 

     ob_clean(); 
     $handle = fopen($file, "rb"); 
     $chunksize=(sprintf("%u", filesize($file))/$speed); 

     set_time_limit(0); 
     while (!feof($handle)) { 
      echo fgets($handle, $chunksize); 
      flush(); 
     } 
     fclose($handle); 
     return true; 
    }else{ 
     return '2'; 
    } 
    return; 
} 
?> 
+0

Hm ...動作しません...出力はありません、エラーはありません。 –

+0

1秒で何らかのエラー処理が行われました。 –

+0

@ラジオ大丈夫、今すぐ試してください、直接スクリプトをご覧ください –

関連する問題