読者です 読者をやめる 読者になる 読者になる

脳汁portal

アメリカ在住(だった)新米エンジニアがその日学んだIT知識を書き綴るブログ

AVPro Videoで映像の再生ができなくなった時の調査したことまとめ

Unity VR

何もしてないのにこわれた!!()

ということでOculus Rift向けの動画アプリをUnityで作っていたのですが、急に動かなくなりました。
具体的には音声は聞こえるものの、映像は白一色で何も見えません。
Unityのシミュレータだけではなく、以前ビルドしたアプリも同様に見えなくなっていました。

環境

Unity: 5.3.6p1
Oculus Utilities: v1.7.0
asset: AVPro Video(Windows)
decoder: LAV Filters
movie format: H.264(mp4)
resolution: 4K

調査

わかってしまってからだから言える事ですが、大分遠回りしています

1から作り直してみた

create projectから作成しなおしてみた
f:id:portaltan:20161101160740j:plain

  • シミュレータでは動くようになったが、今度はRiftではずっとloading中で確認すらできなくなった
  • 再起動するとRiftから確認が出来るようになったが、前と同じく白一色で映像は表示されず

しかし一点気になったのはAVProVideo(Windows)がまさに今日11/1にupdateしている点
AVProVideo側に問題があるのか・・・?

AVProVideo側からアプローチしてみた

hardware decoringのチェックを外してみた

 動いた!けど当然高解像度の動画を再生するとガックガクになった
f:id:portaltan:20161101160740j:plain

AVProVideoの無料試用版を使ってみた

 動いた!けど当然WaterMarkが出現した
f:id:portaltan:20161101160740j:plain
 

  • この無料試用版はAsset Storeではなく、HPから直接unitypackageファイルをダウンロードしてきて、それをcustom importで取り込む形
  • ちゃんと見てないけどたぶんこれはversion upに対応していちいちupdateはされていないんじゃなかろうか?

過去のavpro videoが動くということは、最新のavpro videoのUnityやutiliesに対する依存性に変更があったのかも・・・?

Unityのversionをあげてみた

現在の安定版最新のv5.4.2で試してみた

f:id:portaltan:20161101160740j:plain

5.3系最新パッチのv5.3.6p8で試してみた

f:id:portaltan:20161101160740j:plain

Utilityのversionをあげてみた

1.7.0から最新の1.8.0にあげてみた

 f:id:portaltan:20161101160740j:plain

decorderを変更してみた

f:id:portaltan:20161102165817p:plain

LAV Filter

f:id:portaltan:20161101160740j:plain

default

f:id:portaltan:20161101160740j:plain

Oculus appをdowngradeしてみた(かった)

色々見ていると、Oculus Appの最新version(1.9.0)が2016/10/19にリリースされておいることに気づいた
現在更新の設定がデフォルト(自動update)になっていたため既に1.9.0になっていた

以前確認して、完全に動いているのを確認したのは2週間前くらい・・・怪しい・・・

とりあえずは1.8.0にダウングレード
  • しようとしたけど方法がわからない
    • PC SDKがそれにあてはまると思っていたのだがどうも違うっぽい。
    • Oculus AppはSetupツール上でダウンロードするんだけど、それだと最新版がダウンロードされてしまう。
    • 古いversionのsetupツールも提供されていない
    • どっかのconfigファイルとかで指定できるんだろうか・・・

f:id:portaltan:20161101160931j:plain

そういやOculus appだけじゃなくてWindows Updateも走ってたな・・・

Windows Updateの履歴を確認してみた

つい最近Updateされていることを確認

他のしばらく起動していないPCで確認してみた

動いた!
f:id:portaltan:20161101161214j:plain

Windows Updateが原因なのか・・・

再度AVProVideoの設定をいじってみる

前回Hardware Decordingのチェックを外したら動くことまでは確認したが、今回はdecorderの選択をDirectShowに変更してみた
f:id:portaltan:20161102102805p:plain

動いた・・・

ちなみに以前の設定はこちら
f:id:portaltan:20161102102835p:plain

  • 前はこの設定で動いていたのだが、設定としては今回の設定の方が正しい気がする

(なんで黄色くなったの?ねぇなんで?)

これで解決と思いきや

1からアプリを動画アプリを作成してcodecもdirectshowにした
f:id:portaltan:20161101160740j:plain

辛い・・・
 f:id:portaltan:20161101161120j:plain


とりあえず以前のアプリは動くようになったので一旦置いておこう・・・
検証十分じゃないし・・・
今日新versionでたばっかだし・・・

今は動いてるし・・・

まとめると・・・

推測ですが、

  • AVProVideo(無印)からAVProVideo(Windows)に変えた際にForceDirectShowのチェック項目がなかったので、Windows環境専用のこのassetではデフォルトでDirectShowが使用されていると思っていた
  • だけど実際はデフォルトではmediafoundationを利用していた。以前はこのAPI(decorder)でも偶然再生できたため、違いに気付かなかった
  • しかしWindows updateでcodecに変更が入り、AVPro経由ではmedia foundationで再生できなくなった
  • ここで設定を確認しなおすとDirectShowを利用する場合は明示的にVideoAPIの項目を変更しないといけないことに気づく
  • 変更したところAVPro Video(無印)のときと同じ再生フローになり、正常に再生されるようになった

f:id:portaltan:20161101161502j:plain