[iOS] Как конвертировать видео в LivePhoto?

Как конвертировать video к LivePhoto?

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info {

}

Спасибо.

4 ответа

Используя метод класса PHLivePhoto, вы можете создать любое видео MOV для живого фото

+(PHLivePhotoRequestID)requestLivePhotoWithResourceFileURLs:(NSArray<NSURL *> *)fileURLs placeholderImage:(UIImage *__nullable)image targetSize:(CGSize)targetSize contentMode:(PHImageContentMode)contentMode
 resultHandler:(void(^)(PHLivePhoto *__nullable livePhoto, NSDictionary *info))resultHandler;
/// Requests a Live Photo from the given resource URLs. The result handler will be called multiple times to deliver new PHLivePhoto instances with increasingly more content. If a placeholder image is provided, the result handler will first be invoked synchronously to deliver a live photo containing only the placeholder image. Subsequent invocations of the result handler will occur on the main queue.
//  The targetSize and contentMode parameters are used to resize the live photo content if needed. If targetSize is equal to CGRectZero, content will not be resized.
//  When using this method to provide content for a PHLivePhotoView, each live photo instance delivered via the result handler should be passed to -[PHLivePhotoView setLivePhoto:].
+ (PHLivePhotoRequestID)requestLivePhotoWithResourceFileURLs:(NSArray<NSURL *> *)fileURLs placeholderImage:(UIImage *__nullable)image targetSize:(CGSize)targetSize contentMode:(PHImageContentMode)contentMode resultHandler:(void(^)(PHLivePhoto *__nullable livePhoto, NSDictionary *info))resultHandler;

Преобразование видео — непростая задача. Процесс следующий

  1. сначала один URL -адрес изображения и один URL -адрес видео требуется для создания живого фото.
  2. добавить одни метаданные в этот файл изображения, который является идентификатором контента
  3. добавить те же метаданные идентификатора контента в видеофайл
  4. добавьте к видео другие метаданные, которые являются отметкой времени кадра для изображения, которое будет отображаться в виде эскиза (изображение, используемое на 1-м шаге)

После добавления метаданных в файл изображения и видео используйте следующий API

      PHLivePhoto.request(withResourceFileURLs fileURLs: [URL], placeholderImage image: UIImage?, targetSize: CGSize, contentMode: PHImageContentMode, resultHandler: @escaping (PHLivePhoto?, [AnyHashable : Any]) -> Void) -> PHLivePhotoRequestID

Пожалуйста, проверьте этот ответ , в котором есть прекрасное объяснение необходимых метаданных для создания живого фотообъекта.

И вы можете проверить следующий проект GitHub для справки по коду.

Нет возможности конвертировать другие файлы в Live Photo однако в новейшем iOS SDK это могут делать некоторые инструментальные приложения, например Live Studio. И, может быть, некоторые онлайн-учебники, которые объясняют, как сделать Live Photo из других файлов, которые вы можете узнать с. Возможно, вы можете изгонять в одну сторону с iOS.

Желаю вам!

Другие вопросы по тегам