WWDC Quick Look 💓 By SwiftGGTeam
Deliver video content for spatial experiences

Deliver video content for spatial experiences

元の動画を見る

ハイライト

visionOS の 3D 動画コンテンツ配信は既存の HLS ワークフローの上に構築され、MV-HEVC で立体動画をエンコードします。新しい視差輪郭(parallax contour)メタデータにより字幕と 3D 映像の深度衝突を回避し、2D と 3D で同じ音声・字幕リソースを共有できます。

主要内容

既存の 2D ワークフローは完全互換

動画プラットフォームはすでに HLS で 2D コンテンツを配信していますか?大部分の作業は完了しています。

00:51)visionOS の 2D 動画再生能力は iPhone、iPad、Apple TV と完全に同一です。既存の HLS ストリームは空間コンピューティングプラットフォームで再生するために一切変更を要しません。Apple の目標は、visionOS への 2D コンテンツ配信を他のプラットフォームとまったく同じにすることです。

空間コンピューティングプラットフォームの再生能力

02:15)visionOS は以下の再生仕様をサポートします:

  • 最大 4K 解像度
  • 90Hz リフレッシュレート、24fps コンテンツは自動的に 96Hz モードを使用
  • SDR と HDR のサポート

これらの仕様はハイエンドテレビに匹敵し、最高品質のコンテンツを完全に体験できます。

3D 立体動画: MV-HEVC

05:37)3D 動画の核心は立体視覚 — 左右の目にわずかに異なる画像を提供し、脳が視差で深度を知覚します。Apple は MV-HEVC(Multiview HEVC)エンコーディングを採用しています:

  • 単一の動画トラックに左右の目の 2 つのビューを含む
  • 「2D Plus Delta」戦略: ベース 2D ビューは標準 HEVC でエンコード、右目は左眼との差分のみをエンコード
  • 2D プレイヤーはベースビューのみを見て正常に再生
  • 3D プレイヤーは 2 つのビューをデコードして立体画面を表示
  • Apple Silicon は MV-HEVC デコードをネイティブサポート

新しい Video Extended Usage(VEXU)box が軽量シグナルとして、動画が立体フォーマットかどうかを識別します。

字幕と深度衝突

09:17)3D 動画の重要な課題: 字幕が画面内の前景オブジェクトと深度で衝突し、視聴時の不快感を引き起こす可能性があります。

Apple の解決策は視差輪郭(parallax contour)メタデータです:

  • 各フレームを 10×10 のグリッドに分割
  • 各グリッド領域の最小視差値を記録
  • 再生時にシステムが自動的に字幕の深度を調整し、前景オブジェクトとの重なりを回避
  • 同じ 2D 字幕リソースが 2D と 3D の両方の体験に使える

HLS 適応

13:03)3D コンテンツの HLS 配信には以下の更新が必要です:

  • HLS 仕様バージョンを 12 に更新
  • 新しい REQ-VIDEO-LAYOUT タグで立体動画を識別
  • fragmented MP4 timed metadata で視差情報を運搬するサポート
  • 2D と 3D 動画を同一プレイリストに混在可能

詳細

2D コンテンツ制作フローの振り返り

00:41)既存の HLS 配信フローは 3 ステップです:

  1. エンコーディング: 動画は HEVC でエンコード、音声は言語と役割(対話、音声解説)ごとにエンコード、字幕は WebVTT
  2. パッケージング: Apple HLS ツールでエンコード済みメディアを fMP4 セグメントとプレイリストに変換
  3. 配信: CDN 経由でクライアントに配布

音声の準備

02:33)音声制作は 2D と同じです。以下の両方を提供することを推奨します:

  • Spatial Audio フォーマット(ヘッドトラッキング対応)
  • ステレオフォールバックトラック(すべてのデバイスで確実な再生を保証)

2D と 3D 動画が同じ編集を使う場合、同じ音声リソースを共有できます。

MV-HEVC エンコーディングの詳細

06:48)MV-HEVC の技術詳細:

単一フレーム構造:
+------------------+
|  Base HEVC ビュー  |  ← 2D プレイヤーで見える(例: 左目)
|  (左/右目の基礎画像) |
+------------------+
|  Delta エンコード  |  ← 右目と基礎画像との差分
|  (視差差分データ)   |
+------------------+

キーポイント:

  • ベースビューは標準 HEVC エンコーディング、2D デコーダーが直接再生可能
  • Delta データが左右の目の差分を記述、3D デコーダーが完全な立体ペアを計算
  • 2 つのビューを独立エンコードするより効率的
  • VEXU box が立体フォーマットと含まれる眼ビューを識別

視差輪郭メタデータの制作

11:20)視差輪郭メタデータを制作するステップ:

  1. 左右の目の同期動画トラックを準備
  2. 視差/差分分析を実行し、各領域の深度情報を生成
  3. 視差情報を metadata payload としてパッケージング
  4. timed metadata track に書き込み、動画トラックと関連付け
  5. 同一ファイルに多重化、HLS パッケージング時にメタデータを含むセグメントを自動生成

ストレージと解像度のバランスとして 10×10 グリッドを推奨します。

HLS プレイリストの例

13:57)3D 動画をサポートする multivariant playlist:

#EXTM3U
#EXT-X-VERSION:12

# 3D 動画ストリーム
#EXT-X-STREAM-INF:BANDWIDTH=8000000,REQ-VIDEO-LAYOUT="CH-STEREO"
3d_video_1080p.m3u8

# 2D 動画ストリーム(フォールバック)
#EXT-X-STREAM-INF:BANDWIDTH=4000000
2d_video_1080p.m3u8

# 2D iFrame ストリーム(サムネイルスクラブ)
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=2000000
2d_iframe_1080p.m3u8

# 音声ストリーム(2D/3D 共有)
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="English",LANGUAGE="en",URI="audio_en.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="中国語",LANGUAGE="zh",URI="audio_zh.m3u8"

# 字幕ストリーム(2D/3D 共有)
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="English",LANGUAGE="en",URI="subtitles_en.m3u8"

キーポイント:

  • #EXT-X-VERSION:12: HLS 仕様バージョン 12 が REQ-VIDEO-LAYOUT をサポート
  • REQ-VIDEO-LAYOUT="CH-STEREO": 立体動画ストリームを識別
  • 3D と 2D 動画は同一プレイリストに共存可能だが、読み込み後は自動切り替えしない
  • サムネイルシークをサポートするため 2D iFrame ストリームを含めることを推奨

3D コンテンツの快適性ガイドライン

14:46)3D コンテンツのデザインは視聴快適性を考慮する必要があります:

  • 極端な視差を避ける(正負どちらの方向も大きすぎてはいけない)
  • フォーカス困難を引き起こす高周波運動を避ける
  • ウィンドウ違反(window violations)による深度衝突を避ける
  • スクリーンサイズが快適性に影響、ユーザーは距離を調整してスクリーンサイズを変更可能

重要ポイント

  1. 動画プラットフォームに 3D コンテンツサポートを追加する

    • 何を作るか: 既存の HLS ワークフローに MV-HEVC エンコーディングを追加し、visionOS ユーザーに 3D 動画を提供
    • 価値がある理由: visionOS ユーザーは没入型視聴体験を期待し、3D コンテンツは差別化要因
    • 始め方: MV-HEVC 対応のエンコーディングツールを使用し、既存の HEVC ワークフローに立体ビューエンコーディングを追加
  2. 既存の字幕リソースを 3D コンテンツに再利用する

    • 何を作るか: 3D 動画に視差輪郭メタデータを追加し、既存の WebVTT 字幕が 3D 再生に自動適応
    • 価値がある理由: 字幕の再制作が不要、同一リソースが 2D と 3D の両ユーザーをサービス
    • 始め方: 動画ポストプロダクションで視差分析を実行し、10×10 グリッドの視差輪郭データを生成
  3. HLS ストリームに Spatial Audio を追加する

    • 何を作るか: 既存の音声ワークフローに Spatial Audio フォーマットを追加し、ステレオフォールバックを維持
    • 価値がある理由: visionOS のヘッドトラッキング対応空間オーディオはコア体験、フォールバックで互換性を確保
    • 始め方: Dolby Atmos または Apple Spatial Audio 対応のエンコーディングツールを使用し、HLS プレイリストで両方の音声バリアントを宣言
  4. CDN キャッシュ戦略を最適化する

    • 何を作るか: 3D 動画(MV-HEVC)のビットレートは通常 2D より高いため、CDN キャッシュと配信戦略を調整
    • 価値がある理由: visionOS ユーザーは 4K 3D 体験を期待、帯域幅とキャッシュ容量を確保する必要がある
    • 始め方: MV-HEVC の 2D HEVC に対するビットレート増分を分析し、CDN エッジキャッシュ設定を調整
  5. 2D/3D 混合プレイリストを構築する

    • 何を作るか: 同一 HLS プレイリストに 2D と 3D 動画バリアントを提供し、プレイヤーがデバイス能力に応じて選択
    • 価値がある理由: 1 つのプレイリストですべての Apple デバイスをカバーし、コンテンツ管理を簡素化
    • 始め方: #EXT-X-VERSION:12REQ-VIDEO-LAYOUT タグでバリアントを整理

関連セッション

コメント

GitHub Issues · utterances