25

HTML5カスタムビデオプレーヤーを設計しています。したがって、ビデオの進行状況を模倣する独自のカスタム スライダーがあるため、ビデオのバッファリング シバン全体を理解する必要がありHTML5ます。

この記事に出くわしました: Video Buffering . バッファリングされたオブジェクトは、開始時間の線形順序でいくつかの時間範囲で構成されていると言います。しかし、次のことがわかりませんでした。

  1. ビデオが始まると言います。それは自然に 1:45 まで続き (時折失速して、おそらく次のデータを待っています)、その後、突然 32:45 にジャンプします。しばらくして、1:27 (ジャンプする前に最初にロードして再生した時間範囲内) にジャンプすると、以前にロードされていたので、すぐに再生が開始されますか? それとも、ジャンプしたので、その部分が失われ、再度取得する必要があるのでしょうか? いずれにせよ、そのようなすべてのシナリオで動作は一貫していますか?

  2. このようなジャンプを 5 回または 6 回行ったとします。そのたびに、ジャンプ後にデータがロードされるまで数秒待ちます。これは、bufferedオブジェクトにこれらすべての時間範囲が保存されるということですか? または、一部が失われる可能性がありますか?それはスタックのようなもので、さらにジャンプするためにより多くの範囲がロードされると、以前の範囲がポップオフされますか?

  3. bufferedオブジェクトに 0 (ライブ ストリーミングは忘れてください) から始まり、ビデオの長さで終わる 1 つの時間範囲があるかどうかを確認すると、ビデオ リソース全体が完全に読み込まれていることが保証されますか? そうでない場合、ビデオ全体がダウンロードされ、任意の部分がシーク可能であることを知る方法はありますか?

W3C の仕様はこれについてあまり明確ではありません。また、テストするのに適切なサイズ (たとえば 1 時間以上) のリモート ビデオ リソースも見つかりません。

4

5 に答える 5

7

によると

このbuffered属性は、現在バッファリングされているすべての時間範囲に関する情報を保持します。私の理解では、バッファリングされた部分が失われた場合、それはオブジェクトから削除されます(これが発生した場合に備えて)。

特に最後のリンクは (コード サンプルを提供しているため) 問題を理解するのに非常に役立つようですが、これらは mozilla ドキュメントであり、他のブラウザーではサポートが異なる可能性があることに注意してください。

あなたの質問に答えるために

ビデオが始まると言います。それは自然に 1:45 まで続き (時折失速して、おそらく次のデータを待っています)、その後、突然 32:45 にジャンプします。しばらくして、1:27 (ジャンプする前に最初にロードして再生した時間範囲内) にジャンプすると、以前にロードされていたので、すぐに再生が開始されますか?

その部分のバッファがアンロードされていない限り、ジャンプして戻るとすぐに再生する必要があります。全体的なバッファサイズが特定のボリュームを超えた場合、バッファまたはバッファ範囲がある時点でアンロードされると想定することは非常に合理的だと思います。

このようなジャンプを 5 回または 6 回行ったとします。そのたびに、ジャンプ後にデータがロードされるまで数秒待ちます。これは、バッファリングされたオブジェクトにこれらすべての時間範囲が保存されるということですか?

はい、バッファリングされたすべての範囲は、属性を介して読み取り可能である必要があります。

バッファリングされたオブジェクトに 0 (ライブ ストリーミングは忘れてください) から始まり、ビデオの長さで終わる 1 つの時間範囲があるかどうかを確認すると、ビデオ リソース全体が完全に読み込まれていることが保証されますか?

はい、これは最後のリンクのコード例です。どうやらこれは、ビデオ全体が読み込まれたかどうかを判断するための適切な方法です。

if (buf.start(0) == 0 && buf.end(0) == v.duration)
于 2013-09-01T16:49:52.177 に答える
3
  1. ほとんどすべてのブラウザは、バッファリングされたデータをそのセッションのキャッシュに保存します。ユーザーがそのページから離れると、キャッシュは期限切れになります。ビデオがロードされた時点からビデオをロードするたびに、ユーザーがページをロードする必要はないと思います。ユーザーがこの問題に直面するのは、サーバーがすべてのキャッシュ データを消去している場合のみです。HTML5 ビデオ タグはこれをサポートし、ロードされた時点までビデオを保存します。

  2. これは、セッションが失われたことを意味するのではなく、オブジェクト (Flash Player を使用している場合) がその特定のポイントから何らかのデータを探しているか、または html5 ビデオ タグに何らかの問題があることを意味します。またはその他のサーバーエラー。

  3. メタデータは自動的にロードされます。これを使用するまで <audio preload="none"...、ブラウザはサーバーから何もダウンロードしません。
    <audio preload="auto|metadata|none"...次のように使用できます。サーバーからのその他のメタデータですが、ファイルではなく、ページが読み込まれるとすぐに自動ダウンロードが開始されます。

jQueryでいくつかのドキュメントを読むことを常に紹介します。jQuery を使用すると、ajax API を使用してコンテンツを変更および更新できるため、これも役立ちます。うまくいきますように!乾杯。

于 2013-09-01T17:37:33.347 に答える