3

ビデオの一部のみを表示するために、 mediaelement.jsコンポーネントを使用しています。timeupdate
イベント にリスナーを配置し、ビデオがセグメントを再生するたびに、setCurrentTime()を使用してスキップしたいセグメントを次のセグメントにジャンプします。ただし、次にtimeupdateイベントが呼び出されると、時刻は設定された時刻とは異なります (設定された時刻の数秒前)。これは私のコードです:

var curr = t.media.getCurrentTime();
if (curr < segments[i][0]) {
  console.debug(curr.toFixed(1)+' jumping to '+segments[i][0]+' in segment '+i+'      ['+segments[i][0]+','+segments[i][1]+']');
  t.media.setCurrentTime(segments[i][0]);
  return;
}

コードの実行後に現在の時刻をログに記録すると、現在の時刻が正しく更新されたことが示されますが (たとえば、19 に)、次にイベントが呼び出されると、現在の時刻が間違っています (15.3)。
これはFirefoxでのみ発生し、フラッシュにフォールバックすると、クロムで機能するようです。
何か案は?

4

1 に答える 1

3

問題は、フラッシュ フォールバックにあります。明らかに、フラッシュには h.264 フォーマットと特定の時間へのスキップに問題があります。Flash は H.264 形式のビデオのキーフレームにのみジャンプできるため、メディア要素が特定のフレームにスキップすると、Flash Player は最も近いキーフレームにジャンプします。
この問題は、2 フレームごとにキーフレームを設定することで解決できますが (たとえば、ffmpeg -g フラグを使用して)、フラッシュ フォールバック用にビデオを別の形式に保つことをお勧めします。

于 2012-06-03T06:59:55.640 に答える