動画・音声・モーション・トリガー・テキストを、1 本のストリームに。
ロード完了を待たず・有界メモリで再生する Unity 6+ 向けライブラリ。
カットシーンやライブ演出を Unity で組むとき、従来は AnimationClip・AudioClip・VideoClip・Timeline がバラバラのアセットで、全部のロード完了を待ち、全データ分のメモリを展開してから再生が始まります。flareStream は動画・音声・モーション・カメラワーク・トリガー・テキストといった異種のタイムドデータを 1 本のストリームファイル (.fst) にインターリーブし、再生ヘッダを読んだ瞬間からプログレッシブに再生を開始します。
ファイル I/O は 1 ハンドル、HTTP 配信ならレンジリクエスト 1 本、暗号化も 1 本のラッパで完結。再生に必要なメモリ量は再生開始前に確定し、再生中の動的確保はありません。
設計の中心に置いている、変わらない 3 つの性質。
ファイル先頭のヘッダを読んだ瞬間に再生を開始でき、必要なメモリ量・総再生時間・トラック構成がその時点で確定します。muxer がインターリーブ窓を保証し、正確なバッファ所要量をヘッダに記録。フルデータをメモリに展開しません。
カットシーンやライブ演出に必要な全データが 1 本に収まります。ロード管理・配信・暗号化の対象がファイル 1 本になり、アセットの取り違えや部分欠けが構造的に起きません。
コンテナはトラックの中身を関知しません。ハプティクスやリップシンクなど任意のタイムドデータを SDK の API でトラックとして追加でき、未知のトラックが混ざったファイルも安全に読み飛ばして再生されます。
異種のタイムドデータを、1 本のストリームの中でサンプル精度で同期。
複数音声トラックの同時ミックス再生に対応。全トラックがサンプル精度で同期するため、通常 BGM とアレンジ BGM を同時に鳴らして音量操作でシームレスに切り替える演出が可能。音声が再生全体のマスタークロックになります。
各 OS 標準のハードウェアデコーダ(VideoToolbox / MediaCodec / Media Foundation)で再生。負荷が高い端末ではコマ飛びを許容して全体の同期を守ります。可変フレームレート対応。
Humanoid ポーズ(マッスル値 + ルート + ブレンドシェイプ)とカメラ(位置・回転・FOV)。時刻ベース補間により収録レートと再生 fps は独立で、常に滑らか。体格非依存のため異なる体型のキャラクターにも適用できます。
エフェクト発火・シーン切り替え・ライト制御など、任意の瞬時イベントを時刻指定で発火。ペイロードは JSON で、C# イベントとしてメインスレッドで受信。イベント単位の失効時間も設定できます。
字幕・歌詞・キャプションを表示期間付きで時刻どおりに配信(描画はアプリ側で自由に)。言語ごとに別トラックとして格納し、実行時に表示言語を切り替える多言語対応。
トラックハンドラ登録と muxer のユーザー定義入力で、任意のタイムドデータを追加可能。ハプティクス、リップシンク、照明制御、独自の演出パラメータなど。
「再生が始まらない・メモリが読めない」をなくすための機能群。
ヘッダ読了後すぐに再生開始。ストレージの遅いデバイス向けに先読み量 (ReadAhead) を調整可能。必要メモリは Open 時に確定します。
任意時刻へのシークに全トラックが同期して追従。逆方向シークによるスクラブも可能です。
CurrentTime を毎フレーム参照でき、輝度変化などトラック化していない任意の演出を再生に同期できます。
トラック別バッファ充填率・スループット・枯渇警告を実機でリアルタイム表示。「なぜ止まったか」を現場で追えます。
すべての非同期 API が CancellationToken / IProgress<float> に対応。シーン遷移でも素直に中断できます。
ロード API は「ファイルパス」「byte[]」「カスタムソース」の 3 系統で、StreamingAssets への平文配置に依存しません。暗号化済み配信はストリーミングのまま復号でき、標準の暗号化オプションも提供予定。
エンコードは ffmpeg やベイクエクスポータなど既存のツールで自由にチューニングし、専用ツール fstmux がタイムスタンプ整列・インターリーブ・メモリ保証の算出を行って .fst 1 本にまとめる 2 段構成です。fstmux inspect で生成ファイルのトラック構成とインターリーブ品質を検証でき、Unity エディタ内での .fst 生成(素材ドロップ)にも対応予定。
やらないことも決めています——動画・音声のエンコード機能は持たず、mp4 / mkv / HLS 等の既存コンテナは直接再生せず、字幕の描画や DRM の鍵管理は扱いません。コンテナと同期再生に集中する設計です。
「ロードを待たない」「メモリが読める」を形容詞で語らず、従来構成(動画・音声・モーション・タイムラインを個別アセットとして読み込む組み方)との比較を実測して、この場所に掲載します。計測が済むまでは空欄のままにしておきます。
| 指標 | 測り方 | 従来構成 | flareStream |
|---|---|---|---|
|
再生開始までの時間
|
同一コンテンツ・同一端末・同一ストレージで比較 | — | — |
|
ピークメモリ
|
再生開始前にヘッダから確定する所要量との一致も検証 | — | — |
|
CPU 負荷
|
ハードウェアデコード経路を含めた実機実測 | — | — |
|
ファイル数・I/O ハンドル数
|
配信時のリクエスト本数も併記 | — | — |
計測対象・条件・再現手順を添えて公開する方針です(flareOpus の PESQ-WB スコアと同じ扱い)。数値が出るまでは、この表に推定値や参考値を置くことはしません。
音声コーデック層には flareOpus を使用します。対応プラットフォームは Unity 6+ の iOS / Android / macOS / Windows を予定し、コンソール対応はアドオンとして検討中。
有償ライセンスでの提供を予定しており、フォーマットのコア仕様および実装は非公開です。ご相談・ユースケースのご連絡は support@atelier-flare.com までお寄せください。