ビルド後、ムービーの発色がおかしくなる

1,023 views
Skip to first unread message

Nobumitsu Shikine

unread,
Jul 12, 2017, 6:06:04 AM7/12/17
to 宴ユーザーグループ
質問の前によくある質問や、過去のQ&Aや古いQ&Aに、同様の質問がないかご確認ください。

宴のバージョン:3.1.3
Unityのバージョン:5.6.2

Movieコマンドを使って動画(mp4)を再生させるとき、エディタ上では正常に再生されるのですが、ビルド後に同じ動画の発色が赤っぽくなってしまいます。(色味が違うというよりは青チャンネルが出ていない感じ)
また、もしかしたらですが、ムービーテクスチャ自体が少し透けているようで、下の画像、UIテクスチャなどがたまに見えます。
考えられる原因として、現行バージョンのUnityですと、単に動画をインポートしただけではVideo Player用になるようで、インスペクタからMovie Texture(Legacy) を選択してインポートし直しているのですが、ここの仕様が変わっているのかもしれないです。
自分ではこれ以上のことは対処できなかったので、ご確認いただけたらと思います。
よろしくお願いします。

マッドネスラボ

unread,
Jul 12, 2017, 5:41:51 PM7/12/17
to utag...@googlegroups.com
ムービーに関しては、Unityの仕様変更の影響でバグがでているのかもしれません。

旧形式(MovieTexture)も使えるはずです。
ただ、ビルド後に発色がおかしくなったりするのはどうもUnity自体のバグかもしれません。
どうも昔からあるバグのようです。


新しい形式(VideoClip)についてはこちらのコマンドを使ってください。
ただし、(Unity公式側が)サウンドがまだ未対応などいくつか問題もありますが、発色等の問題は解決するかもしれません。

半透明に関しては、ムービー終了時のフェードアウトのために半透明処理をかけていますが、それ以外のタイミングで半透明になるのであれば、やはりUnityの自体のバグかと思います。

VideoClipを使うのに問題があって(または使っても解決しない)、MovieTextureを使う必要がある場合は、
発色に関してはUnityのバグなので、Unity自体に問い合わせたほうが良いかもしれません。


MovieTextureについてUnityに報告をすると、おそらくVideoClipを使えと言われると思うので
MovieTextureを使わざるを得ない理由も合わせて「MovieTextureの既知の不具合(https://forum.unity3d.com/threads/movietexture-color-problems.317410/)の解決方法があるか? 」を問い合わせたほうが良いかと思います。


マッドネスラボ

unread,
Jul 12, 2017, 5:48:55 PM7/12/17
to 宴ユーザーグループ
半透明処理は、フェードアウトの時間を0にすることで無効になるので試してみてください。


Nobumitsu Shikine

unread,
Jul 13, 2017, 12:27:26 AM7/13/17
to 宴ユーザーグループ
返信ありがとうございます。

なんとなくUnityを2017.1にアップデートしてみたところ、ビルド後も正常にムービーの色が出るようになりました。
Unity側のバグだったようです。

一方で、今後のことも考えてVideoプレイヤーとVideoコマンドも使ってみようと思ったのですが、リファレンス通りに記述しても動画が再生されないようです。
警告メッセージは以下のようになっていました。
Direct audio output mode not yet supported for this VideoPlayer backend. Use the AudioSource output mode instead.
UnityEngine.Video.VideoPlayer:set_clip(VideoClip)
Utage.AdvVideoManager:Play(String, String, AssetFile, Boolean, Boolean) (at Assets/Utage/Scripts/ADV/Graphic/Video/AdvVideoManager.cs:42)
Utage.AdvCommandVideo:DoCommand(AdvEngine) (at Assets/Utage/Scripts/ADV/Command/Grahic/AdvCommandVideo.cs:28)
Utage.<CoStartPage>c__Iterator1:MoveNext() (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:319)
UnityEngine.MonoBehaviour:StartCoroutine(IEnumerator)
Utage.<CoStartScenario>c__Iterator0:MoveNext() (at Assets/Utage/Scripts/ADV/Scenario/AdvScenarioThread.cs:188)
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

これもUnityのアップデートによるものである気がします。
できればVideoの方も対応していただけるとありがたいのですが、ご確認いただけないでしょうか?
よろしくお願いします。

マッドネスラボ

unread,
Jul 13, 2017, 12:41:55 AM7/13/17
to 宴ユーザーグループ
>Direct audio output mode not yet supported for this VideoPlayer backend. Use the AudioSource output mode instead.
エラーメッセージを見る限りは、おそらくサウンドつき動画なのだと思います。

サウンドつきの動画はUnity公式がまだ未対応です。
なので、サウンドを抜いた動画ファイルをVideoClipとしてインポートして再生するようにし
それと並行で音はBGMコマンドなどで再生するしかないかと思います。

たとえば、Unity5.6.0のVideoPlayer機能には音声再生機能がありません。
なので、今のところ音は別にファイルを分けて、BGMコマンドなどで鳴らしながら同時にVideoコマンドを使って動画を再生する・・・という手法を取らざるをえません。


Nobumitsu Shikine

unread,
Jul 14, 2017, 5:07:01 PM7/14/17
to 宴ユーザーグループ
ありがとうございました。
あれからいろいろ試してみたのですが、やはり2点問題があるのでご確認いただきたいです。

・Videoコマンドで動画が再生されない
音声なしのmp4ファイルも作りましたが、有無に関わらずリファレンス通りのVideoコマンドで動画が再生されません。
エラーは何も出ずに、次のテキストに進んでしまいます。

・サンプルプロジェクトでインターネット接続を要求される
自前のサンプルプロジェクトでは動作しなかったので、宴さんのサンプルでVideoを試してみようと思ったところ、オンラインであるにもかかわらず「インターネットに接続した状況でプレイしてください」と言われてしまいます。
エディタ上ではmac OSのみでの確認ですが、ビルドしたゲームをmac OS、Windows10 双方で確認してみましたがダメでした。
ネット接続側の問題かとも考え、できるだけ多くの接続先(ポケットWifiやテザリング含む)で試してみましたが、いずれでも上記のエラーメッセージが出てしまいました。

何度も申し訳ないのですが、ご確認よろしくお願いします。

マッドネスラボ

unread,
Jul 14, 2017, 10:01:00 PM7/14/17
to 宴ユーザーグループ
>・Videoコマンドで動画が再生されない
以前は動いていたと思うのですが、Unity側で挙動が変わった影響を受けてたのかもしれません。
修正パッケージを添付しましたのでご確認ください。


>・サンプルプロジェクトでインターネット接続を要求される
サンプルではわざと動画系のリソースを抜いてあるので、Resources以下に動画ファイルを置かないとロードエラーになります。
(「インターネット・・・」と出てるのは、ロードエラーのメッセージを書き換えるサンプルも使っているからです)

以前はサンプルでも動画のリソースを入れていたのですが
・Unity5.6以降ではMovieTexture形式のリソースがあるとWarningが出る
・Unity5.5以前ではVideoClip形式は未対応なので、そもそもリソースを置けない
・MovieTextureはUnity5.5以前であっても、プラットフォームによって置き場所を手動で変えないとビルド時にエラーが起きる
などなど、色々と複雑なためです。(基本的にはすべてUnityの仕様変更によるものです)
コンソールに警告などを出しても結局分からない人が多く、
サンプルなのに、それが原因で混乱したり手動での操作が必須になるのは良くないと思い
あえてサンプルのリソースから外してあります。


FixVideo.unitypackage

Nobumitsu Shikine

unread,
Jul 14, 2017, 10:31:39 PM7/14/17
to 宴ユーザーグループ
ありがとうございます。
しかし、パッチを当ててみてもやはり動画は再生されないようです。
一瞬メッセージウィンドウがが消えるだけで、次のテキストに移ってしまいます。
ちなみに、動画はMovieコマンドでは再生されるmp4ファイルです。

リソースの件も了解いたしました。そういうことだったのですね。
サンプルの方でもリソース部分にVideoフォルダを作って、テストしてみました。
インターネット接続のエラーメッセージは出なくなりましたが、上記と同様の挙動をするだけで再生はされないようです。
こちらでもいろいろ試してみようと思います。

マッドネスラボ

unread,
Jul 14, 2017, 11:33:51 PM7/14/17
to 宴ユーザーグループ
一応こちらの環境(Unity5.6.2、Unity2017.1)では修正パッケージを適用すればビデオコマンドによる再生は問題なくできました。

バグの原因は「再生までのロード時間が非再生扱いになる」という点で、
「再生開始→ロード中(この時点で再生終了としてしまっていた)→すぐに再生終了」
という動作になってしまい、動画が再生されずに一瞬で次のコマンド(テキスト表示)に移行してしまっていました。
修正はしたのですが、それでも直らないようであれば、ほかの原因があるのかもしれません。

よろしければ、こちらにプロジェクトを送信していただければ調査いたします。

Nobumitsu Shikine

unread,
Jul 14, 2017, 11:45:32 PM7/14/17
to 宴ユーザーグループ
そうですか。環境は同じなので原因がわからないですね……。
自分のプロジェクトや記述がおかしいのかもしれないのでご確認いただけたらと思います。
Dropboxの方に送信しました。
VideoTestというプロジェクトです。
よろしくお願いします。

マッドネスラボ

unread,
Jul 15, 2017, 12:59:57 AM7/15/17
to 宴ユーザーグループ
プロジェクトの送信ありがとうございます。
いただいたムービーの素材を使うとバグを再現できました。

そのバグは修正したのですが、今度はムービー終了後に画面が真っ黒になったまま復帰できなくなるようです。
UnityのGameViewウィンドウの大きさを変えたりすると直るのでUnityのエディタ自体のバグのようです。
これはちょっと私では直しようがないので、Unityにバグレポートをして解決を待つことになるかと思います。
これもテストで使っていた素材では起きずに、いただいた素材で起きるようです。

正直まだVideoClip自体が不安定な感じなので、
Unity公式にバグレポートをしつつ、修正されるのを何か月か待つ感じになるかと思います。
MovieTextureにあった発色のバグのように、場合によっては長期間不安定なまま修正されない可能性もあるかと思います。

一応、ムービーの再生するところまでの修正パッケージを添付しておきます。

FixVideo.unitypackage

マッドネスラボ

unread,
Jul 15, 2017, 1:28:21 AM7/15/17
to 宴ユーザーグループ
応急処置ですが「再生後に真っ暗になる」という点も修正しました。
ただしムービー再生終了後の1フレームの一瞬だけはやはり画面が真っ暗になります。

Unityの内部のバグなのか仕様なのか不明なので、まだ不安定かもしれません




FixVideo.unitypackage

Nobumitsu Shikine

unread,
Jul 15, 2017, 4:20:01 AM7/15/17
to 宴ユーザーグループ
ありがとうございます。パッチをあてたところこちらの環境でも動画が再生できるようになりました。
音声に関しては、現状再生されたりされなかったりするようですね。(Unity側の問題なのでしょう)
BGMコマンドと組み合わせて使えば音ズレすることもなく使えるようなので利用していきたいと思います。
今回は長々とおつきあい本当にありがとうございました。
Reply all
Reply to author
Forward
0 new messages