フレーム画像の解凍、レンダリングの方式を実装して比較してみましょう!
動画を表示するには、mp4ファイルをseekしてフレームの解凍に必要なチャンクのバイトオフセットを見つけ、解凍アルゴリズム = H.264 を実行し、。
解凍方法
この項目では特定フレーム画像を取得するまでの時間を計測します。
計測方法
フレーム画像の解凍、レンダリングの方式を実装して比較してみましょう!
動画を表示するには、mp4ファイルをseekしてフレームの解凍に必要なチャンクのバイトオフセットを見つけ、解凍アルゴリズム = H.264 を実行し、。
解凍方法
この項目では特定フレーム画像を取得するまでの時間を計測します。
計測方法
ffmpegとopencvで、特定のフレームの画像を取得するという処理について比較する。
ffmpegは複数のTrackが存在するmp4ファイルを扱える。
Trackはそれぞれが独自のフレームレート(場合によっては可変フレームレート)を持つので、
もしTrackを同期しようと思ったら、秒単位を使う必要がある。
特定フレームにseekする機能がないのはこれが理由だと思う。
現在フレームを表示するには、まず再生時間を細かく管理する必要がある。
フレーム単位というのは曖昧で、各ファイルのフレームレートは可変になりうる。
これが理由で、例えば時間管理はMP4ではTrackの秒あたりタイムスケールである。
フレームはあくまで表示時間順に並んだコマであって、フレームレートを規定しない方法で管理される。
そのため、フレーム単位で動画を表示するのではなく、秒単位でやるのがよい。
1. 要件
JavaScriptから呼び出せる
WebAssemblyであることは必須ではないと思う
WebAssemblyに圧倒的な高速化をもたらすことは期待していない
ffmpegなどの既存の資産を使えることのほうが重要
やりたいこと
再生ヘッドがあるフレームにあるとする。
このフレームにおける動画エンティティのフレーム画像を得たい。
しかしMP4では、キーフレーム以外のフレームは圧縮されている。
そのため、キーフレーム以外のフレームをビットマップ画像として取得するには、フレームに対応する参照フレームを取得しなければならない。