4

ここで新しく、HTML5ビデオやVideoJSプレーヤーの経験がある人に質問があります(必要に応じて別のプレーヤーを使用することもできます)。

イントロ部分とループしたい部分を含む単一のビデオがあります。これは、2番目の部分をロードするときに「黒いブリップ」が発生しないようにするために行いました。

だから私の質問はこれです、私はこの2番目の部分をシームレスにループさせたいのですが、それを完全にうまくやってのけることができないようです。再び再生を開始するまでに1秒ほどの遅延があるようです。ビデオエディタにループポイントを正確に36秒に設定してもらい、次のコードを使用して36秒をシークし、最後に到達してから再生します。

myPlayer.addEvent("ended", function () {
  myPlayer.currentTime(36);
  myPlayer.play();
});

これにより、ビデオが最初のフレームに戻り、36秒にスキップして、再生されます。ビデオの最後の1秒間にリスナーを設定してシークを実行しようとしていますが、シーク後の瞬間的な遅延が心配です。

どんな助けでも大歓迎です!

アレックス

更新:video.jsのソースを編集して、「終了」イベントがトリガーされたときに実行されるデフォルトの関数を削除することで、最初のフレームに戻るビットを排除することができました(基本的には次のようになりました: "pause() ; currentTime(0); pause(); ")

これで、ビデオは必要な36秒のマークに直接移動しますが、問題は、ビデオが終了として登録され、36秒のマークで再度再生する前に停止し、ループにわずかな遅延が生じることです。「終了した」イベントリスナーではなく、ビデオが終了し、シーク(currentTime)関数をトリガーする秒をリッスンする方法を見つけようとしています。

4

1 に答える 1

1

ビデオをイントロとループ部分の2つのセクションに分割してみてください。それぞれに<video>要素を作成し、2番目のビデオを非表示にして、同じ場所に配置します。"ended"イントロにイベントを設定して、表示を入れ替えて2番目のビデオを開始します。loop次に、 2番目のビデオ要素に属性を設定できます。

preload少なくともループしているビデオに属性がある限り、2つのビデオをシームレスに一緒に再生するのに問題はありません。

それでも問題が解決しない場合は、同じループ動画で2つの動画要素を作成してみてください。一方が再生されている間、もう一方を非表示にcurrentTimeしてゼロに戻すことができるため、誰も見ていないときにシーク遅延が発生します。(うまくいけば、ブラウザはビデオファイルをキャッシュし、ネットワークから1回だけロードするのに十分スマートですが、実験することをお勧めします。)

(残念ながら、モバイルサファリは1つのWebページで複数のメディア要素をサポートしていないため、これはipadでは機能しません。)

于 2013-01-09T06:39:19.717 に答える