0

多くの Audio 要素を含むページがあり、そのうちのいくつかは非常に長い (最大 2 時間) という状況があります。本質的に、それらは次のように作成および制御されています。

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

a.play();

再生すると、ブラウザー (この場合は Chrome) が範囲要求を正しく行い、サーバーは「206 Partial Content」を返します。これは、一度に約 2 分のデータのように見えます。約 2 MB のデータが読み込まれると、データの要求が停止します。ここまでは順調ですね。次に、これが実行されます。

a.pause();

これにより、ブラウザは残りのファイル全体をダウンロードします。(!!?!~@!!!?) 明らかに、ユーザーが数トラックの最初の数秒を聞くことにした場合、これは問題になる可能性があります。不要なデータをギガバイト単位でダウンロードし始めることになります。

ファイル全体を強制的にバッファリングする方法を尋ねる他の質問を見てきましたが、実際には正反対のことを望んでいます。

4

1 に答える 1

2

これを行う公式の関数はありませんが、あるべきですが、一般的なコンセンサスは、次のコードがあなたが望むことを行うための最良の方法であるということです

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

jPlayerは、このメソッドを実装して、オーディオのバッファリングを停止します。唯一の問題は、この方法ではクロスブラウザーの問題が発生する可能性があることです。これに失敗した場合は、ページからオーディオ要素を削除してみてください。試してみましたか?

于 2012-04-11T11:03:32.120 に答える