【Unity】動画のアセットバンドル化

動画のアセットバンドル化

Unityでゲームを作っていると動画を再生する必要が出てくることがあります。
そんな時はVideoClipを使うことになるかと思います。

ただ動画はファイルサイズが大きくなりやすいのでアプリに同梱することが難しい場合も多いです。
そんな時は次の選択肢を思いつくと思います。

  • Web上からのストリーミング再生
  • AssetBundle化によるダウンロード

Web上からのストリーミング再生についてはURLを指定することで対応可能なのでフォーマットさえ対応していれば簡単に実装ができます。
なので今回はアセットバンドル化する対応について説明をしていきます。

Unityの公式サイトにはVideoClipはアセットバンドル化に対応していると記載されています。
なので筆者も何の疑いもなくアセットバンドル化してロード後にVideoPlayerのclipへアサインして再生していました。

しかし、Android環境のROMを作成した際に事件は起きました…。
何故か動画再生のタイミングで再生されずに進行停止が発生するとの報告が!?

Unityの公式サイトには特にその手の記述が無かったので自分の実装ミスだと考えたのですがいくら調査してもバグの原因が見つかりません…。

仕方ないので同様の現象が起こっていないかGoogle先生に助けを求めました。
するとUnityのフォーラム上で海外の方々が同じ状況に陥っていると話していました。

同じ状況なら解決策も誰か握っているはずと記事を追いかけてみたのですが、分かったことは下記の通りでした。

AssetBundle化するとLZ圧縮がかかるのでストリーミング再生ができない。
・結果、Androidでの再生ができなくなる。

なら無圧縮のAssetBundle化すればいけるのでは?

やってみたがやはりダメ。
恐らくアセットバンドル化すると複数のファイルがパックされる形になるので部分的に読み込むことをサポートしていないからだと思われます。

この結果からアセットバンドル化するとAndroid上ではVideoClipでの再生は不可能ということになります。
フォーラムの情報からUnity側の見解でこれはバグではなく仕様とされているらしいので改善も期待できません。

仕方ないので筆者はここでVideoClipを使用することを諦めました。
ただプロジェクト的にはアセットバンドル化は必須課題でしたので別のアプローチが必要でした。

 

1 2

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です