赤兎ラボ

コーディングからバージョン管理、業務効率化までをまとめます。

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

エンコーディングについては以下のサイトを参考にしました。

blog.socialcast.jp