【发布时间】:2019-08-06 14:53:17
【问题描述】:
我有一个简单的应用程序,它显示 iPhone 照片库中的所有视频(使用 PHAsset)。 我能够显示所有视频的缩略图(在收藏视图中),但是当我点击任何视频时它只播放相同的视频,我没有硬编码任何网址。 下面是代码,不知道哪里错了。
- 获取视频资产
var va: PHFetchResult<PHAsset>!
override func viewDidLoad() {
let fetchOptions = PHFetchOptions()
fetchOptions.sortDescriptors = [ NSSortDescriptor(key: "creationDate", ascending: false) ]
fetchOptions.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.video.rawValue)
va = PHAsset.fetchAssets(with: fetchOptions)
}
- 点击集合视图中的视频缩略图时,创建新的 UIViewController 并传递资产数据
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
print(indexPath)
let vc=videoVC()
vc.vasset = self.va
vc.passedContentOffset = indexPath
self.navigationController?.pushViewController(vc, animated: true)
}
- 终于播放视频了
let Newasset = allAssets1[indexPath.row]
PHCachingImageManager().requestAVAsset(forVideo: Newasset, options: nil) { (Newasset, audioMix, args) in
let asset1 = asset as! AVURLAsset
DispatchQueue.main.async {
let player = AVPlayer(url: asset1.url)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
self.present(playerViewController, animated: true) {
playerViewController.player!.play()
}
}
}
我真的不确定代码哪里出错了。
【问题讨论】:
标签: ios swift video avplayer phasset