Swift - 如何获取 .Mov 格式?
Posted
技术标签:
【中文标题】Swift - 如何获取 .Mov 格式?【英文标题】:Swift - How to fetch a .Mov format? 【发布时间】:2019-01-09 16:33:09 【问题描述】:我找到了很多关于使用
获取视频或图像的解决方案phfetchOptions.predicate = NSPredicate(format : "mediaType = %d" , PHAssetMediaType.video.rawvalue)
还有一个PHAssetMediaSubtype
,这与我正在寻找的非常不同。
如何准确地从PHAsset
中的所有其他格式获取 .Mov 文件的数量
我已经接近解决方案,但我想这不是获得计数的正确方法。创建多个后台调用的视频数量,而不是该过程应该在一个异步调用中完成。有什么建议吗?
private func getMovVideosCount()
let fetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.video.rawValue)
var count : Int = 0
let imagesAndVideos = PHAsset.fetchAssets(with: fetchOptions)
for i in 0..<imagesAndVideos.count
let videoRequestOptions = PHVideoRequestOptions()
PHImageManager.default().requestPlayerItem(forVideo: imagesAndVideos[i], options: videoRequestOptions) (playerItem, result) in
let currentVideoUrlAsset = playerItem?.asset as? AVURLAsset
if let currentVideoFilePAth = currentVideoUrlAsset?.url
let lastObject = currentVideoFilePAth.pathExtension
if lastObject == "MOV"
count += 1
print(Thread.isMainThread) // false
print(Thread.isMainThread) // true
【问题讨论】:
【参考方案1】:这个解决方案给出了.MOV的计数并解决了调度组的并发问题。
private func getMovVideosCount()
let fetchOptions = PHFetchOptions()
let dispatchgroup = DispatchGroup()
fetchOptions.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.video.rawValue)
var count : Int = 0
let imagesAndVideos = PHAsset.fetchAssets(with: fetchOptions)
for i in 0..<imagesAndVideos.count
dispatchgroup.start()
let videoRequestOptions = PHVideoRequestOptions()
PHImageManager.default().requestPlayerItem(forVideo: imagesAndVideos[i], options: videoRequestOptions) (playerItem, result) in
let currentVideoUrlAsset = playerItem?.asset as? AVURLAsset
if let currentVideoFilePAth = currentVideoUrlAsset?.url
let lastObject = currentVideoFilePAth.pathExtension
if lastObject == "MOV"
count += 1
print(Thread.isMainThread) // false
dispatchgroup.leave()
dispatchgroup.notify()
print(Thread.isMainThread) // true
【讨论】:
以上是关于Swift - 如何获取 .Mov 格式?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 iOS 9 和 Objective C 中的 .MOV 文件中获取缩略图?
如何在 Swift 4 中使用 FetchedResultsController 获取 DateSectionTitles