LIVE

Live Photosの中身:2つのファイルと1つの識別子

Live Photos は、1つの識別子を共有する静止画と短い動画です。各ファイルが持つもの、写真がペアにする方法、一緒に保つ方法。

かんたんな答え

Live Photos は2つのファイルです。静止画(HEIC または JPEG)と、音声付きの短い QuickTime ムービーです。両方に同じコンテンツ識別子が入り、写真はそれを使って1つの項目として保ちます。2つが分かれると、たとえばメールが静止画だけを送ると、残るのは普通の写真です。

Live Photos は、写真が1つの項目として表示する2つのファイルです。静止画(HEIC または JPEG)と、音声付きの短い QuickTime ムービーです。両方に同じコンテンツ識別子が入り、動画には静止画と一致するフレームのマーカーがあります。写真がペアにするのは、その識別子であって、ファイル名ではありません。

以下は、各ファイルが持つもの、ペアの仕組み、2つが分かれたときに起きることです。動画から自分のものを作るなら、Beavery が両方を作ります。

2つのファイル、1つの項目

Appleの撮影の文書は、直接書いています。写真は Live Photos を1つの項目として表示しますが、別々のファイルからできています。主となる静止画と、直前と直後の動きと音を持つ動画ファイルです。アプリは両方を、1つの項目として一緒に写真へ保存します。

写真フレームワークは、ライブラリ側から同じことを説明しています。Live Photos のアセットは、静止画のリソースと動画のリソースを持ちます。動画は、paired video というリソースタイプとして戻ってきます。iPhoneのカメラで撮るとき、Appleは動画が撮影の前後約1.5秒を覆う、と書いています。Beavery のようなアプリで動画から作った Live Photos は、選んだ区間を覆います。

1件の中身

Beaveryから iPhone シミュレータの写真ライブラリへ Live Photos を1件保存し(手順はこちら)、写真が保存した2つのファイルを読みました。同じ名前で並んでいました。IMG_0082.HEIC と IMG_0082.MOV です。

ファイル 中身 もう一方と結ぶもの
IMG_0082.HEIC 静止画。1080 × 1920 の HEIC Appleのメーカーノートのメタデータ(ImageIO の MakerApple 辞書)の中の識別子
IMG_0082.MOV 3.6秒の H.264 動画、AAC の音声、メタデータのトラック 同じ識別子。QuickTime の content.identifier。加えて、静止画と一致するフレームのための、時間付きの still-image-time マーカー

両方のファイルに、同じ UUID が入っていました。動画側は文書になっています。AVFoundation は、そのキーを quickTimeMetadataContentIdentifier と呼びます。画像側では、Appleは MakerApple 辞書を文書にしていますが、識別子を持つ個別のキーは文書にしていないので、このファイルで見えたことだけを書きます。

写真が、同じものだと知る方法

ペアにするのは、一致する識別子です。ファイルから Live Photos を読み込む Apple の文書は、写真が作れるのは、以前にキャプチャした Live Photos のアセットから書き出された同じ一組のファイルからだけで、先にファイルとそのメタデータを確認する、と書いています。確認に失敗すると、Live Photos はなく、静止画だけです。

つまりファイル名は関係なく、2つのファイルを同じフォルダに置くことも関係ありません。大事なのは、両方のファイルがまだ識別子を持ち、動画がメタデータを落とすような再エンコードをされていないことです。

分解して、戻す

Macでは、写真は**「ファイル」>「書き出す」>「未編集のオリジナルを書き出す」**で Live Photos を書き出せます。Appleは、静止画と動画の2つの別ファイルになる、と書いています。1つの Live Photos として写真へ戻すには、アプリが1つのリクエストで両方のファイルを追加する必要があります(Appleの PHAssetCreationRequest)。2つのファイルを1つずつ写真へドロップするのは、文書にされた方法ではありません。

Beaveryが写真へ保存するときは、その1回のリクエストを使います。代わりに Live Photos をフォルダへ書き出すと、静止画、動画(motion.mov)、小さなマニフェストを入れた .beaverylive パッケージを1つ書くので、ペアは一緒のままで、あとから Beavery が再び開けます。

送ったときに起きること

Appleが文書にしているのは、この一部だけです。

  • メールは、Live Photos を静止画として送ります。
  • iPhone または iPad のメッセージは、動きを残します。相手はそれをタップし、長押しして再生します。Macのメッセージは、開くと1回再生します。
  • 静止画だけを共有するのは、共有シートの選択です。送り先を選ぶ前に、写真の左上の「LIVE」をタップします。

ほかのアプリ(チャットアプリ、ソーシャルネットワーク、クラウドドライブ)については、Appleの文書は答えを出せません。受け取るアプリによります。両方のファイルとそのメタデータを残すアプリは動きを表示でき、絵だけを残すか再圧縮するアプリは静止画を表示します。経路ごとの助言は、送ったあと Live Photos が動かなくなる理由にあります。

2つのファイルが分かれるとき

  • メールのように、静止画だけを送る経路を通った。
  • 受け取るアプリが絵を残し、動画を落とした。
  • Live がオフになった。写真では、Live Photos を「オフ」に切り替えられ、静止画になります。
  • ほかの場所で編集された。Appleは、別のアプリで Live Photos を編集すると、Live Photos のエフェクトが失われることがある、と記しています。
  • 2つのファイルが分かれ、変えられたので、識別子やメタデータがもう一致しない。

自分の動画から Live Photos を作っているなら、写真へ保存し、写真から送ってください。経路が許す限り、両方は一緒のままです。直し方は送ったあと Live Photos が動かないを、動画が画質と HDR で何を残すかは動画から作る Live Photos の画質を見てください。Mac版 Beaveryも、同じ方法で Live Photos を保存します。

よくある質問

Live Photos は、短い動画そのものですか?

違います。フルの静止画に、別の短い動画が付いたものです。写真は静止画を表示し、長押しすると動画を再生します。静止画は、見るときに動画から切り出したフレームではなく、自分のファイルです。

Live Photos をメールできますか?

Appleは、メールで共有した Live Photos は静止画として送られる、と書いています。Appleのデバイス同士のメッセージは動きを残します。ほかのアプリは、受け取るアプリによります。

Live Photos に音声はありますか?

たいていあります。動画の部分は QuickTime ムービーで、Appleはカメラが撮影の前後に起きたこと、音声を含めて記録する、と書いています。無音の動画や静止画から作った Live Photos には、音声がありません。

2つのファイルをペアにする識別子は、どこにありますか?

動画の中では、QuickTime のコンテンツ識別子で、Appleが文書にしています。静止画の中では、Appleのメーカーノートのメタデータにあります。Appleはその辞書を文書にしていますが、正確なキーは文書にしていません。

写真と動画が2つのファイルとしてあります。なぜ1つにならないのですか?

写真がペアにするのは、同じ識別子と、期待されるメタデータを持つ静止画と動画だけです。ペアとして作られていない2ファイル、または途中で再エンコードされた2ファイルは、名前が一致するだけでは1つになりません。

このガイドの確認方法

確認の根拠
iPhone 17 Pro Max シミュレータ、iOS 27.0:Beavery が保存した Live Photos 1件について、シミュレータの写真ライブラリから2つのファイルを読み戻した(1.0 (1)、デバッグビルド da0d377)
実機での検証
このガイドの手順は、まだ実機で一つずつ試していません。
確認日