如何从使用PHAsset.fetchAsset获取的视频资产中获取UTI或MIME类型?

时间:2018-07-10 23:43:02

标签: ios swift avfoundation phasset

我遇到了一个问题,在从照片库中获取视频资产后,我似乎似乎找不到一种从视频资产中获取UTI或MIME类型的好方法。

let assets = PHAsset.fetchAssets(in: someCollection, options: videosOnly)
(iterating over each asset in assets...)
PHImageManager.default().requestAVAsset(forVideo: asset, options: nil) { (AVAsset: avAsset, AVAudioMix: avAudioMix, info) in
    (I'm trying to find the UTI/MIME type here...)
}

我发现一个棘手的解决方案是通过将avAsset转换为AVURLAsset来获取文件的pathExtension:

guard let avURLAsset = avAsset as? AVURLAsset else { return }
let videoExt = avURLAsset.url.pathExtension

这似乎在基本测试用例中获得了相应的文件类型('m4v','mov','mp4'),但是我担心这不是一个足够强大的解决方案。我看到另一篇文章(Finding image type from NSData or UIImage),其中详细介绍了如何通过查看NSData的字节来获取图像类型,但并未涉及视频文件。

我还尝试了How to get MIME type for image or video in iOS 8 using PHAsset?中建议的解决方案:

let requestContentEditingOptions = PHContentEditingInputRequestOptions()
asset.requestContentEditingInput(with: requestContentEditingOptions) { (contentEditingInput, contentEditingInfo) in
    guard let videoUTI = contentEditingInput?.uniformTypeIdentifier else { completion(nil); return }
}

不幸的是,当我尝试这样做时,uniformTypeIdentifier属性显示为nil。如果有人发现我的实施存在潜在问题,我很乐意听到。

之前有人遇到过吗?很想听听任何想法,或者任何人想知道的事,pathExtension是生产应用程序的合理选择。

0 个答案:

没有答案