2012-04-11 6 views
0

多くのオーディオ要素を含むページがあり、その中には非常に長いものがあります(最大2時間まで)。要するに、彼らは、次のような作成され、制御されている: HTML5 Audio要素を一時停止すると、ファイル全体がダウンロードされます

var a = new Audio(); 
a.preload = 'metadata'; 
a.src = 'long-track.mp3'; 

a.play(); 

それが果たしている

は、ブラウザ(この場合ではChromeは、)正しく範囲の要求を行い、サーバが「206部分コンテンツ」を返し、何のために一度に約2分のデータのように見えます。 〜2MBのデータがロードされた後、データの要求を停止します。ここまでは順調ですね。次に、これが実行されます:

a.pause(); 

これにより、ブラウザはファイルの残りすべてをダウンロードします。明らかに、ユーザーがいくつかのトラックの最初の数秒を聞くことを決めた場合、これは問題になる可能性があります。ギガバイトの不要なデータのダウンロードを開始します。

私はhow to force the full file to be bufferedと尋ねるいくつかの他の質問を見たことがありますが、実際には正反対です。

答えて

2

存在がなければならないが、これを行う公式の機能はありませんが、一般的なコンセンサスは、次のコードはに何をしたい

a.src = ''; 
a.load(); 

jPlayer implements this methodを行うための最善の方法があるということであるようですオーディオバッファリングを停止します。唯一の問題は、この方法のthere may be cross-browser problemsです。これに失敗した場合は、ページからオーディオ要素を削除してみてください。試してみましたか?

+0

あなたが一時停止したいときにどのように動作するか知っていますか? – nickf

+1

これを実行すると、その特定の

関連する問題