Формат файла Apple Live Photo
Apple представит Live Photo в iOS 9/iPhone 6s. Где задокументирован формат файла?
6 ответов
Вот ссылка. В противном случае вот текст:
Живые фотографии
Живые фотографии - это новая функция iOS 9, которая позволяет пользователям захватывать и переживать свои любимые моменты с более богатым контекстом, чем традиционные фотографии. Когда пользователь нажимает кнопку спуска затвора, приложение "Камера" захватывает гораздо больше контента вместе с обычной фотографией, включая аудио и дополнительные кадры до и после фотографии. Просматривая эти фотографии, пользователи могут взаимодействовать с ними и воспроизводить весь захваченный контент, благодаря чему фотографии оживают.
iOS 9.1 представляет API-интерфейсы, которые позволяют приложениям воспроизводить живые фотографии, а также экспортировать данные для совместного использования. В платформе Photos появилась новая поддержка для извлечения объекта PHLive Photo из объекта PHImageManager, который используется для представления всех данных, содержащихся в Live Photo. Вы можете использовать объект PHLive PhotoView (определенный в платформе PhotosUI) для отображения содержимого Live Photo. Представление PHLive PhotoView обеспечивает отображение изображения, обработку всего взаимодействия с пользователем и применение визуальных обработок для воспроизведения содержимого.
Вы также можете использовать PHAssetResource для доступа к данным объекта PHLive Photo для совместного использования. Вы можете запросить объект PHLive Photo для актива в библиотеке фотографий пользователя с помощью PHImageManager или UIImagePickerController. Если у вас есть расширение для общего доступа, вы также можете получить объекты PHLive Photo с помощью NSItemProvider. На принимающей стороне общего ресурса вы можете воссоздать объект PHLive Photo из набора файлов, изначально экспортированных отправителем.
Рекомендации по отображению живых фотографий
Важно помнить, что Live Photo по-прежнему является фотографией. Если вам нужно отобразить живую фотографию в среде, которая не поддерживает PHLivePhotoView, рекомендуется представлять ее как обычную фотографию.
Не отображайте дополнительные кадры и аудио из Live Photo отдельно. Важно, чтобы содержимое Live Photo было представлено согласованным образом, использующим одинаковую модель визуальной обработки и взаимодействия во всех приложениях.
Рекомендуется идентифицировать фотографию как живую фотографию, поместив значок, предоставленный методом класса PHLivePhotoView, livePhotoBadgeImageWithOptions:PHLivePhotoBadgeOptionsOverContent в верхнем левом углу фотографии.
Обратите внимание, что поддержка визуального эффекта, с которым пользователи сталкиваются при просмотре фотографий в приложении "Фотографии", не поддерживается.
Руководство по обмену живыми фотографиями
Данные Live Photo экспортируются в виде набора файлов в объекте PHAssetResource. Набор файлов должен быть сохранен как единое целое при загрузке их на сервер. Когда вы перестраиваете PHLive Photo с этими файлами на стороне получателя, файлы проверяются; загрузка не удалась, если файлы не принадлежат одному и тому же ресурсу.
Если ваше приложение позволяет пользователям применять эффекты или корректировки к фотографии перед ее отправкой, обязательно примените одинаковые настройки ко всем кадрам Live Photo. В качестве альтернативы, если вы не поддерживаете корректировку всего содержимого Живой фотографии, поделитесь ею как с обычной фотографией и покажите соответствующую индикацию пользователю.
Если в вашем приложении есть пользовательский интерфейс для выбора фотографий, которыми вы хотите поделиться, вы должны позволить пользователям воспроизводить все содержимое, чтобы они точно знали, чем они делятся. При выборе фотографий для обмена в вашем приложении пользователи также должны иметь возможность отключить Live Photo, чтобы они могли опубликовать это как традиционное фото.
Живое фото имеет два ресурса. Они связаны вместе с идентификатором актива (UUID в виде строки).
- JPEG; это должно иметь запись метаданных для
kCGImagePropertyMakerAppleDictionary
с[17 : assetIdentifier]
(17 - это ключ идентификатора активов Apple Maker 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
байт (иначе -1) и может быть проигнорировано. При использованииAVAssetReader
ты можешь использоватьCMSampleBufferGetOutputPresentationTimeStamp
чтобы получить это время.
- Запись метаданных Quicktime верхнего уровня для
assetIdentifier
это то, что связывает два элемента вместе, и отслеживание метаданных по времени - это то, что сообщает системе, где неподвижное изображение находится на временной шкале фильма.
За пределами документации, Live Photos состоят из 2 ресурсов, изображения и мов (файл фильма быстрого времени). Таким образом, у каждого Live Photo есть 2 "фактических" файла, связанных с оберткой типа Live Photo.
Живые фотографии на самом деле два файла. Исходное изображение JPEG и видео Full HD.
Унифицированный идентификатор типа (UTI) для формата kUTTypeLivePhoto
/ com.apple.live-photo
@available(OSX 10.12, *)
public let kUTTypeLivePhoto: CFString
/*
*
* kUTTypeLivePhoto
*
* Live Photo
*
* UTI: com.apple.live-photo
*
*
*/
Дополнительная информация о живых фотографиях:
- согласен, он имеет расширение.mov
- он сохранен в каталоге /var/mobile/media/DCIM/100apple/ вместе с jpg версией фотографии
- живые фотографии можно воспроизводить даже на устройстве без 3D-касания (я могу воспроизвести его на своем ipad 2017 с помощью длительного нажатия на фото)
- его можно воспроизводить даже на старых телефонах (например, iphone 5) даже на iOS8, если вы установите твик PhotosLive