16

HTML5 オーディオ オブジェクトを使用して Web ブラウザー経由でアクセスできるように、ユーザーのオーディオ ファイルをストリーミングするローカル サーバーを開発しています。これらのファイルはユーザーのコンピューター上にあるため、ファイルが読み込まれると完全にバッファリングされると思いますが、特定の大きなファイルの場合、曲は途中でバッファリングされ、その後停止し、しばらくしてからバッファリングを再開します。

私の質問は、オーディオ オブジェクトに曲全体を一度にバッファさせるにはどうすればよいですか? javascript からこれを行うことはできますか、オーディオ オブジェクトに属性を設定する必要がありますか、それとも他にできることはありますか?

4

3 に答える 3

7

私が見つけた解決策はこれでした:

function load() {
    a.play();
    setTimeout("a.pause()", 10);
}

ファイルを再生し、10ミリ秒後に一時停止すると、ブラウザが曲全体をバッファリングします。

于 2012-02-10T18:31:02.647 に答える
3

メソッドを使用できますload()。これは基本的に強制しpreload="auto"ます。しかし、おそらくすべてをバッファリングするわけではありません。

オーディオがモバイル デバイスにプリロードされていないという問題がありましたが (でもpreload=auto)、この方法は機能しました。

http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#dfnReturnLink-2

もう 1 つのオプションは、XMLHttpRequest を介してデータをバイナリ blob として読み込み、<audio>要素のsrc属性を blob URI に設定することです。

(個人的には、再生/一時停止のハックはあまり好きではありません。)

于 2013-02-27T18:53:22.337 に答える
1

preload="auto" 属性を設定できます。何かを行うことが保証されているわけではありませんが、リモート エンドを気にせずに必要なだけバッファするようにユーザー エージェントに指示することになっています。http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#attr-media-preload

于 2011-01-21T21:38:02.253 に答える