前回でエラー発生時にスキップするようにしたロゴムービー再生ですが、解決策を考えていました。 このような単独のアプリケーションで動画を再生するにはwindowsのMediaFoundationという機能をつかうか、外部コーデックを使うなどの方法を取る必要があります。DirectXのゲームと組み合わせるとなると(しかもC#、SharpDX)、難易度など制限が多くなります。 いろいろなフォーマットのサポートがwin7やwin10などのバージョンで異なっていたり、コンポーネントをインストールしなければいけないなどのことが今回の調査によって判明しました。 また動画は再生開始できても、デコード中にエラーを起こす可能性がある場合がある(起こさない場合もある)という情報もあり、MediaFoundation関連は使うわけにはいかないなと判断しました。 windowsはマジでこういうのが多いです。音声再生のためのXAudioやDirectSoundのサポート範囲など、メディア関連で起動できない、ということが今までにも発生してきました。 visual studio C++ redistribution packageなども起動要件としてプレイヤーに要求せざるを得ないことも多く、しかも開発環境においてはそれらの機能は既に備わっていることがほとんどで、開発者側としてはかなり気づきづらい要素でした。 〇動画 話を戻しまして、動画の再生を「動画ファイル」として再生していました。mp4ファイルで。それを今回「動画」ではなく「連番画像」の連続表示として実装しました。 もともと白黒のシンプルなロゴムービーで、再生時間は5秒程度、かつフレームレートは30fpsで十分というものでしたので、もしかしたら動画ではなくまるまる連番画像を使用しても何とかなるのではないかと試してみたわけです。 気になる使用容量としては動画ファイルで2MB程度、連番だと圧縮テクスチャで3MBになりました。読み込んだ際の実使用メモリはもっと高くなると思いますが、ほかにメモリを使用しないロゴシーン内のみで、再生が終わればdisposeされるので問題なしと判断。 というわけでゲーム実行空間外の特殊なコンポーネント、ライブラリを使用せずにロゴムービー再生が実現できましたので、どうぞお試しください。