標準の MP4 を、デバイスごとに最適なコーデックで。
OS 公式ハードウェアデコーダだけで再生する Unity 6+ 向け動画再生ライブラリ。
Unity でゲーム内ムービーを再生しようとすると、これまでは「標準フォーマットで ffmpeg チューニングできること」「デコード経路を自分で制御できること」「コンソール機に対応できること」のどれかを諦める必要がありました。flareVideo はこの 3 つを同時に満たすことを目指した動画再生ライブラリです。
コンテナは標準の MP4 のみ。エンコードとチューニングは使い慣れた ffmpeg で完結し、再生はデバイスごとに最適なコーデック(iOS/macOS: HEVC、Android: AV1/VP9/HEVC、フォールバック: H.264)を OS 公式のハードウェアデコーダで行います。ソフトウェアデコーダは同梱しません。
「標準フォーマット + ffmpeg ワークフロー + HW デコード + コンソール対応」を支える設計。
独自フォーマットへの変換は不要です。ビットレート・キーフレーム間隔・解像度などのチューニングは ffmpeg のワークフローがそのまま使え、生成した MP4 をそのまま再生できます。エンコード機能は持たず、再生に集中する設計です。
デコードは VideoToolbox(iOS/macOS)・MediaCodec(Android)・Media Foundation(Windows)の OS 公式ハードウェアデコーダのみを使用します。ソフトウェアデコーダを同梱しないため、電池・発熱面で有利なデコード経路を確実に通ります。
同一内容を複数コーデックのバリアントで用意しておくと、実行時にデバイスの再生能力を照会し、最適な 1 本を自動選択できます。新しめの端末では AV1 や HEVC の効率を活かし、そうでない端末には H.264 でフォールバック——という構成をコード数行で組めます。
moov 前置(faststart)の MP4 はヘッダ読了後すぐに再生を開始でき、動画全体をメモリに展開しません。再生に必要なメモリ量は再生開始前に確定します。
コンテナ層は Unity 非依存の pure C# で、ネイティブコードが必要なのはデコーダ部分のみ。デコーダはアドオンとして本体から分離されており、NDA が必要なコンソール向けデコーダを個別に提供できる構造です(対応は検討中)。
すべての非同期 API が async/await と CancellationToken に対応。シーン遷移での中断も素直に書けます。
各 OS の公式デコーダ API を通じて、そのデバイスで最も効率のよいコーデックを使います。H.264 は全プラットフォーム共通のフォールバックです。
| プラットフォーム | デコーダ API | 第一候補 | フォールバック |
|---|---|---|---|
iOS / macOS |
VideoToolbox | HEVC | H.264 |
Android |
MediaCodec | AV1 / VP9 / HEVC(端末能力に応じて) | H.264 |
Windows |
Media Foundation | HEVC(環境により) | H.264 |
Android の AV1 ハードウェアデコードは対応 SoC が限られるため、能力照会ではハードウェア対応とソフトウェア対応を区別し、既定ではハードウェア対応時のみ AV1 を選択します。
flareVideo は単体で完結した動画再生ライブラリであると同時に、マルチトラック・ストリーム再生ライブラリ flareStream の動画コーデック層としても機能します。ゲーム内ムービーの単体再生には flareVideo を、モーション・音声・トリガーを含むカットシーンやライブ演出には flareStream を——という使い分けができます。
対応プラットフォームは iOS / Android / macOS / Windows で、コンソール対応はアドオンとして検討中です。字幕描画・DRM の鍵管理・エンコード機能は扱わず、MP4 のハードウェアデコード再生に集中しています。
flareOpus と同様、本体は BSD-3-Clause ライセンスで完全無料です。個人・法人、売上規模を問わず、商用タイトルにもそのまま組み込めます。リポジトリはデフォルト非公開のため、利用をご希望の方は利用予定のプロジェクトと対象プラットフォームを添えて support@atelier-flare.com までご連絡ください。