search
LoginSignup
9

More than 1 year has passed since last update.

posted at

Unityで動画再生(VideoPlayer、AVProVideo)

概要

Unityのバージョンは2019.3

Unityで動画再生をするためのメモです。
標準コンポーネントの VideoPlayer と Asset の AVProVideo の使い方を説明。

VideoPlayer のコンポーネントの内容はマニュアルを見ると詳しく載っています。
https://docs.unity3d.com/ja/2018.4/Manual/class-VideoPlayer.html

AVProVideo のドキュメントはストアページからダウンロードできます(ただし英語)
https://assetstore.unity.com/packages/tools/video/avpro-video-56355
Assetは各OS向けに安いものも提供されているのでWindowsでしか使わないならそちらWindows版のみ購入した方がいい

VideoPlayer の使い方

uGUI の RawImage に動画を表示する

  • シーンに RawImage を追加して Add Component > Video > Video Player で追加
  • Assets で右クリックし Create > Render Texture を作成
  • 作成した Render Texture を Raw Image の Texture と Video Player の TargetTexture にアタッチする
  • Video Player の Source を選択
    • Asset内のファイルを再生するなら Video Clip を選択して再生するファイルをアタッチする
    • 外部ファイルを再生するなら URL を選択して再生するファイルのパスを指定する
  • Play on Awake にチェックを入れると、シーン起動時にビデオ再生を開始
  • Loop にチェックを入れると、ビデオ再生を繰り返す

参考ページ
https://xr-hub.com/archives/15798
https://gametukurikata.com/basic/videoplayer
https://goisagi-517.hatenablog.com/entry/2018/12/29/131952

VideoPlayer のSprict制御

  using UnityEngine.Video;

  VideoPlayer video = this.GetComponent<VideoPlayer>();

  // 再生するファイル指定
  video.url = System.Environment.CurrentDirectory + @"\movie\file.mp4";

  // 再生時に呼ばれるイベント登録
  video.started += OnStarted;

  // 終了時に呼ばれるイベント登録
  video.loopPointReached += OnLoopPointReached;

  // 再生 
  video.Play();

  // 停止
  video.Stop();


  void OnStarted(VideoPlayer vp)
  {
      Debug.Log("start");
  } 

  void OnLoopPointReached(VideoPlayer vp)
  {
      Debug.Log("End");
  }

参考ページ
https://docs.unity3d.com/ja/2018.4/ScriptReference/Video.VideoPlayer.html
https://atsushishi.xyz/2017/12/videoplayer_support/

AVProVideo の使い方

Display uGUIに動画を表示する

  • AVProVideo をインポートして Component > AVPro Video > Media Player で追加
  • Media Player の Source Path で Relative To Streaming Assets Folder を ABsolute Path Or URL に変更
    • ここに再生するファイルパスを指定する
  • Auto Open は動画ファイルをスクリプトで指定するのでチェックをはずす
  • Auto Play も自動で再生されないようにチェックをはずす
  • Canvas の下に空の GameObject を追加して > Add Component > AVPro Video > Display uGUI を追加
  • Display uGUI の Media Player にさっき作った Media Player オブジェクトをアタッチ
  • Default Texture にテクスチャを指定して No Default Display のチェックをはずす(動画再生してないときのサムネイル表示)

参考ページ
https://qiita.com/neon-izm/items/d2ab9f10341d54e35163
http://www.asset-sale.net/entry/AVPro_Video180506

AVProVideo のSprict制御


  using RenderHeads.Media.AVProVideo;

  MediaPlayer avPro = this.GetComponent<MediaPlayer>();

  // イベントリスナー登録
  avPro.Events.AddListener(OnMediaPlayerEvent);

  // ファイル読み込み
  string path = System.Environment.CurrentDirectory + @"\movie\file.mp4";
  avPro.OpenVideoFromFile(MediaPlayer.FileLocation.AbsolutePathOrURL, path, ture);

  // リトライ
  avPro.Rewind(false);


  void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode ec)
  {
      switch (et)
      {
          case MediaPlayerEvent.EventType.MetaDataReady:    // 読み込み時のイベント
              // 再生 
              avPro.Play();
              break;
          case MediaPlayerEvent.EventType.FinishedPlaying:    // 再生終了時のイベント
              // 閉じる
              avPro.CloseVideo();
              break;
      }
  }

AVProVideoをインポートすると中にサンプルがあるのでこれが参考になる(Demos > Scenes)

参考ページ
https://psychic-vr-lab.com/blog/unity/%E5%85%A8%E5%A4%A9%E7%90%83%E5%8B%95%E7%94%BB%E5%86%8D%E7%94%9F%E7%92%B0%E5%A2%83%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9/

VideoPlayer と AVProVideo の比較

  • 軽い動画を再生させるだけなら VideoPlayer だけで十分(パフォーマンスに関しては比較してない)
  • 8KやVRの動画再生や字幕つけたりなどやりたいなら AVProVideo が対応しているようなのでこちらを使う方がよさそう

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
9