应用程序在 swift 中为所有视频 PHAsset 播放相同的视频
Posted
技术标签:
【中文标题】应用程序在 swift 中为所有视频 PHAsset 播放相同的视频【英文标题】:app plays same video for all video PHAsset in swift 【发布时间】: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()
我真的不确定代码哪里出错了。
【问题讨论】:
【参考方案1】:您可能需要检查您传递的 indexPath,这应该可以工作。
改变
let Newasset = allAssets1[indexPath.row]
到
let Newasset = allAssets1[indexPath.item]
【讨论】:
以上是关于应用程序在 swift 中为所有视频 PHAsset 播放相同的视频的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS8/Swift 中为 UIDatePicker 设置文本颜色和字体
如何在我的精灵套件游戏 Swift 中为所有 iPhone 获得相同的布局尺寸