【问题标题】:How to make PHLivePhoto from Mov File?如何从 Mov 文件制作 PHLivePhoto?
【发布时间】:2016-05-03 10:24:35
【问题描述】:

我有一个 .MOV 文件和一个 .JPG 文件。当我尝试制作实时照片时:

func makeLivePhotoFromItems(imageURL: NSURL, videoURL: NSURL, previewImage: UIImage, completion: (livePhoto: PHLivePhoto) -> Void) {
    PHLivePhoto.requestLivePhotoWithResourceFileURLs([imageURL, videoURL], placeholderImage: previewImage, targetSize: CGSizeZero, contentMode: PHImageContentMode.AspectFit) {
        (livePhoto, infoDict) -> Void in
        print("info: \(livePhoto)")

        if let lp = livePhoto {
            completion(livePhoto: lp)
        }
    }
}

然后像这样制作:

  makeLivePhotoFromItems(url, videoURL: movURL, previewImage: UIImage(named: "preview")!) { (livePhoto) in

     }

它不工作。未创建实时照片和控制台写入:

info: Optional(<PHLivePhoto: 0x10077f660>)
complete
info: Optional(<PHLivePhoto: 0x10143ef30>)
complete
2016-05-03 13:23:18.191 LivePhoto[2170:982987] Error: Invalid video metadata
info: nil

我真的希望你能帮助我。

【问题讨论】:

  • original code 运行良好。所以我想说你的问题来自视频本身,而不是来自代码。事实上,我们看到“无效的视频元数据”,所以问题出在您的视频上。
  • @EricD 是的,我想是的。它可能是视频问题。但我尝试使用大约 5 部不同格式的电影。这个错误没有消失。我该如何调试它?
  • 要在 LivePhoto 中使用 MOV,它必须具有与 Apple 相同的规格(最大尺寸、编码等)。我的建议是从现有 LivePhoto 中获取 MOV 并检查其属性,然后使您的属性相似。
  • @EricD 好的,我理解你。但是我应该探索什么属性?你知道吗?
  • 大小(和比率)和编码类型是要检查的最重要的属性。但是,没有官方规范,这就是为什么我说“检查现有的并以它为例”。

标签: ios xcode swift phlivephoto


【解决方案1】:

image和mov文件必须有相同的标识符(NSString *assetIdentifier = [[NSUUID UUID] UUIDString]),并且元数据中mov的key必须是@"com.apple.quicktime.content.identifier"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    • 2013-01-31
    相关资源
    最近更新 更多