web-dev-qa-db-ja.com

字幕で使用されているアルゴリズムは何ですか?

ビデオプレーヤーは、いつでも表示する字幕を見つけるためにどのアルゴリズムを使用しますか?

私はビデオの上に異なる時間にいくつかのノートを表示するビデオプレーヤーを構築しています。各メモには、字幕と同様に開始時刻と終了時刻があります。

ビデオの再生中にすべての「メモ」を見つけるアルゴリズムを考え出すのに問題があります。明らかにそれをできるだけ効率的にしたいのですが、字幕は基本的に同じように機能することがわかりました「開始時間」)。

プレーヤーはブラウザで動作するように設計されているため、JavaScriptを使用して構築しています。これにより、パフォーマンスがさらに重要になります。

バイナリツリーを使用することを考えましたが、バイナリツリーは1つのパラメータと比較されるため、機能しないと思います。変更した後、それが最適なオプションになるかどうかはわかりません。

2
Samuel E.

字幕が重ならない限り、アルゴリズムはかなり単純です。

  • 字幕を順番に並べたリストにしてください。
  • あなたのイベントループで、現在の時間を決定します
  • 現在の字幕の終了時間よりも大きい場合は、投稿を取り消します
  • リストの最初の字幕の先頭よりも大きい場合は、投稿してリストから削除します。

字幕には、一連のアイテムの単純なシーケンスよりも複雑なものはありますか?

6
Kilian Foth

字幕は順序付けされています。ビデオの後半に表示されるものは、前に表示されるものの後に保存されます。

したがって、表示する次の字幕をポイントする単純なカーソルを使用します。

字幕を非表示にするには(オーバーラップが可能であることを確認しながら)、表示されているすべての字幕に個別のタイムアウトを設定するか、2番目のカーソルを使用します。最初のアプローチは、JavaScriptでははるかに簡単です。

4

使用するプレーヤーによって異なりますが、大部分はキューポイントを介してこのタイプの「時限」イベントを処理できます。このパスに向けて考えてください。基本的には、相対時間イベントをそのビデオの時間にマップするだけです。

0