VideoPlayerをフレーム送りで再生する
動作環境
Unity2020.3.21f1
概要
VideoPlayerによるmp4動画のフレーム再生を行います。
再生方法はURLを指定するものとします。
コードについて
基本的なフレーム送りはVideoPlayer.StepForward()で行えます。これは1フレーム進めて描画するための関数です。指定したフレームへの移動は行えません。
注意・補足
再生するための準備としてVideoPlayer.Prepare()を呼んでおいて、VideoPlayer.isPreparedがtrueになるのを待ちます。これをしないとVideoPlayer.frameRateが0で呼び出されることがあります。
mp4ファイルの長さを取得したいとき、VideoPlayer.clip.lengthはURLでは取得できません。VideoPlayer.lengthを使用しましょう。
動画フォーマットについて
今回実装に使ったmp4フォーマットはH264 baseprofileです。
仮にmainprofileで再生を行うと以下のWarningが出力されます。フレームが飛ぶ等の原因になりそうなので回避しておくことを勧めます。
Unexpected timestamp values detected. This can occur in H.264 videos not encoded with the baseline profile. Timestamps will be skewed to correct the playback
エンコーディングについては以下のサイトを参考にしました。