LoginSignup
4
4

More than 3 years have passed since last update.

【Unity】WebGLでVideoPlayerをプレイした時にちらつく現象を解消

Posted at

環境

  • Unity 2019.2.1

はじめに

今回、初めてVideoPlayerで動画を再生することにしたのですが、
数々の困難が襲って来ました!

その困難たちの中のひとつで、
『動画プレイ時にブラウザ再生時のみ、動画の最初がちらつく(一瞬白くなる等)』
の現象が発生し、それを解決した方法を記載します

VideoPlayerの使い方

そもそも、VideoPlayerをどうやって実装するかはコチラ等が参考になります。
WebGLの場合は、VideoClipでは再生できませんので、

  • Source : URL
  • URL : 動画保存先URL

を指定して実装してください。

ちらつく現象解消方法

  1. 動画プリロード
  2. ロードを待つ
  3. 動画再生
  4. フレームを待つ (はじめのフレームを表示しない様にする)
  5. 画面に表示

で解決しました。
以下が参考ソースです。

private VideoPlayer player;

private RawImage rawImage;

void OnEnable()
{
    player.prepareCompleted += PrepareCompleted;
}

void OnDisable()
{
    player.prepareCompleted -= PrepareCompleted;
}

// 2. ロードを待つ
private void PrepareCompleted (VideoPlayer vp)
{
    if (vp != player) { return; }
    StartCoroutine (ShowMovie (vp));
}

private IEnumerator ShowMovie (VideoPlayer vp)
{
    // 3. 動画再生
    vp.Play();

    // 4. フレームを待つ
    while (vp.frame < 1)
    {
        yield return null;
    }

    // 5. 画面に表示
    rawImage.texture = vp.texture;
    rawImage.enabled = true;
}

private void SetVideoUrl (string url)
{
    player.source = VideoSource.Url;
    player.url = url;
}

public void Play()
{
    // 1. 動画プリロード
    player.Prepare();
}
4
4
0

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
  3. You can use dark theme
What you can do with signing up
4
4