Формат файла Apple Live Photo

Apple представит Live Photo в iOS 9/iPhone 6s. Где документирован формат файла?

Ответы

Ответ 1

Здесь link. В противном случае здесь текст:

Живые фотографии

Live Photos - это новая функция iOS 9, которая позволяет пользователям захватывать и оживить свои любимые моменты в более богатом контексте, чем традиционные фото. Когда пользователь нажимает кнопку спуска затвора, приложение "Камера" захватывает гораздо больше контента вместе с обычной фотографией, в том числе аудио и дополнительные кадры до и после фотографии. При просмотре через эти фотографии пользователи могут взаимодействовать с ними и воспроизводить все захваченный контент, что делает фотографии ожившими.

В iOS 9.1 представлены API-интерфейсы, которые позволяют приложениям включать воспроизведение Live Photos, а также экспортировать данные для совместного использования. Существует новый поддержка в рамке "Фотографии" для извлечения объекта PHLivePhoto из Объект PHImageManager, который используется для представления всех данных, которые содержит Live Photo. Вы можете использовать объект PHLivePhotoView (определенный в рамке PhotosUI) для отображения содержимого Live Photo. Представление PHLivePhotoView заботится о отображении изображения, обработке все взаимодействие с пользователем и применение визуальных обработок для воспроизведения контента.

Вы также можете использовать PHAssetResource для доступа к данным PHLivePhoto объект для совместного использования. Вы можете запросить объект PHLivePhoto для актив в библиотеке фотографий пользователей с помощью PHImageManager или UIImagePickerController. Если у вас есть расширение общего доступа, вы также можете получить объекты PHLivePhoto с помощью NSItemProvider. На принимающей стороне доли, вы можете воссоздать объект PHLivePhoto из набора файлы, первоначально экспортированные отправителем.

Рекомендации по отображению живых фотографий

Важно помнить, что Live Photo по-прежнему остается фото. Если вам нужно отобразить Live Photo в среда, которая не поддерживает PHLivePhotoView, рекомендуется что вы представляете его как обычную фотографию.

Не показывать дополнительные кадры и аудио Live Photo отдельно. Важно, чтобы содержимое Live Photo было представлено в последовательный подход, который использует ту же визуальную обработку и взаимодействие модель во всех приложениях.

Рекомендуется, чтобы вы идентифицировали фотографию как живое фото, разместив Значок, предоставляемый методом класса PHLivePhotoView livePhotoBadgeImageWithOptions: PHLivePhotoBadgeOptionsOverContent в в верхнем левом углу фотографии.

Обратите внимание, что нет никакой поддержки для обеспечения визуального эффекта, который пользователи ощущают, как они прокручивают фотографии в приложении "Фото".

Рекомендации по совместному использованию живых фотографий

Данные Live Photo экспортируется как набор файлов в объект PHAssetResource. Набор файлы должны сохраняться как единое целое при их загрузке на сервер. Когда вы восстанавливаете PHLivePhoto с этими файлами на стороне приемника, файлы проверяются; загрузка не выполняется, если файлы не поступают из тот же актив.

Если ваше приложение позволяет пользователям применять эффекты или корректировки к фотографии до разделяя его, обязательно примените те же настройки ко всем кадрам Живая фотография. Кроме того, если вы не поддерживаете настройку всего содержимое Live Photo, поделитесь им как с обычной фотографией и покажите соответствующая индикация для пользователя.

Если ваше приложение имеет пользовательский интерфейс для выбора фотографий для совместного использования, вы должны разрешить пользователям воспроизвести все содержимое, чтобы они точно знали, что они собой представляют. При выборе фотографий для совместного использования в приложении пользователи также должны быть в состоянии отключить Live Photo, чтобы они могли опубликовать его как традиционный фото.

Ответ 2

Живое фото имеет два ресурса. Они связаны вместе с идентификатором актива (UUID как строка).

  • JPEG; это должно иметь запись метаданных для kCGImagePropertyMakerAppleDictionary с помощью [17 : assetIdentifier] (17 - это ключ идентификатора Apple Note Note).
  • Quicktime MOV, закодированный с H.264 с соответствующей частотой кадров (12-15 кадров в секунду) и размером (1080p). Этот MOV должен иметь:
    • Запись метаданных QuickTime верхнего уровня для ["com.apple.quicktime.content.identifier" : assetIdentifier]. Если вы используете AVAsset, вы можете получить это от asset.metadataForFormat(AVMetadataFormatQuickTimeMetadata)
    • Трек отслеживаемых метаданных с ["com.apple.quicktime.still-image-time" : 0xFF]; Фактическое время неподвижного изображения соответствует отметке времени представления для этого элемента метаданных. Похоже, что полезная нагрузка представляет собой единственный байт 0xFF (aka -1) и его можно игнорировать. Если вы используете AVAssetReader, вы можете использовать CMSampleBufferGetOutputPresentationTimeStamp, чтобы получить это время.

assetIdentifier - это то, что связывает два элемента вместе, а трек с запрограммированными метаданными - это то, что сообщает системе, где неподвижное изображение находится на временной шкале видео.

Ответ 3

За пределами документации Live Photos состоят из 2 ресурсов, изображения и mov (файл видеоролика Quicktime). Таким образом, у каждого Live Photo есть 2 "фактических" файла, связанных оболочкой типа Live Photo.

Ответ 4

Live Photos - это фактически два файла. Оригинальное изображение JPEG и Full HD Video.

Ответ 5

UTI для формата kUTTypeLivePhoto

@available(OSX 10.12, *)
public let kUTTypeLivePhoto: CFString

/*
 *
 *  kUTTypeLivePhoto
 *
 *    Live Photo
 *
 *    UTI: com.apple.live-photo
 *
 *
 */