2017-02-15 20 views
2

Я воспользовался следующим кодом, чтобы показать все видеоролики в camera roll и показывать их в UICollectionView.Swift - Как получить URL всех видеофайлов в Camera Roll?

func getVideoFromCameraRoll() { 
    let options = PHFetchOptions() 
    options.sortDescriptors = [ NSSortDescriptor(key: "creationDate", ascending: false) ] 
    options.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.video.rawValue) 
    videos = PHAsset.fetchAssets(with: options) 
    videoLibraryCV.reloadData() 
} 

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    return videos.count 
} 

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) 
    let asset = videos!.object(at: indexPath.row) 
    let width: CGFloat = 150 
    let height: CGFloat = 150 
    let size = CGSize(width:width, height:height) 
    cell.layer.borderWidth = 0.5 
    cell.layer.borderColor = UIColor.lightGray.cgColor 
    PHImageManager.default().requestImage(for: asset, targetSize: size, contentMode: PHImageContentMode.aspectFit, options: nil) 
    { (image, userInfo) -> Void in 

     let imageView = cell.viewWithTag(1) as! UIImageView 
     imageView.image = image 

     let labelView = cell.viewWithTag(2) as! UILabel 
     labelView.text = String(format: "%02d:%02d",Int((asset.duration/60)),Int(asset.duration) % 60) 
    } 
    return cell 
} 

Теперь мне нужно для воспроизведения выбранного видео с UICollectionView. Как получить выбранный URL-адрес видео?

ответ

4
// For Playing video on didSelectItemAtIndexPath method 
    func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 
     let asset = photos!.object(at: indexPath.row) 
     guard (asset.mediaType == PHAssetMediaType.Video) else { 
      print("Not a valid video media type") 
      return 
     } 

     PHCachingImageManager().requestAVAssetForVideo(asset, options: nil, resultHandler: {(asset: AVAsset?, audioMix: AVAudioMix?, info: [NSObject : AnyObject]?) in 
      let asset = asset as! AVURLAsset 
      print(asset.URL) // Here is video URL 
     }) 

    }