Как я могу получить доступ к видео / изображению с URL AVURLAsset в swift 3.3x?

У меня есть AVUrlAsset что-то вроде этого "файл:///var/mobile/Media/DCIM/101APPLE/IMG_1006.MOV". Как я могу получить доступ к видео с этого URL в Swift?

2 ответа

Таким образом, вы можете получить все видео

        DispatchQueue.global(qos: .background).async {

        PHPhotoLibrary.requestAuthorization { (status) -> Void in

            let allVidOptions = PHFetchOptions()
            allVidOptions.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.video.hashValue) //Any type you want to fetch
            allVidOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: true)]


//Now the set the option to `fetchAssets`
            let allVids = PHAsset.fetchAssets(with: allVidOptions)

            print("All Videos Count \(allVids.count)")

            for index in 0..<allVids.count {

                let videoRequestOptions =           PHVideoRequestOptions()
                videoRequestOptions.deliveryMode = .fastFormat //quality-> 360p mp4
                videoRequestOptions.version =      .original


                PHImageManager.default().requestPlayerItem(forVideo: allVids[index], options: videoRequestOptions , resultHandler: { (playerItem, result) in

                    // print(result as! [String: AnyObject])
                    // print(playerItem)

                    let currentVideoUrlAsset = playerItem?.asset as?  AVURLAsset

                    let currentVideoFilePAth = currentVideoUrlAsset!.url

                    let lastObject = currentVideoFilePAth.pathExtension

                    print(lastObject)

                    if lastObject == "M4V" {

                        self.arrOfVideos.append(playerItem!)

                    }


                    //NSString *lastPath = [videoURL lastPathComponent];
                    //NSString *fileExtension = [lastPath pathExtension];
                    //NSLog(@"File extension %@",fileExtension);


                    var i = Int()
                    print("Appending.... \(i);)")
                    i += 1

                    print("My Videos Count \(self.arrOfVideos.count)")


                    DispatchQueue.main.async(execute: {

                        self.tblVideos.reloadData()
                    })

                })

                //fetch Asset here
                //print(allVids[index].description)
                //   print(self.arrOfVideos) //will show empty first then after above completion the execution will come here again

            }

        }

    }

Я думаю, вы знали путь URL. тогда вы можете сделать следующее:

let urlStr = URL.init(fileURLWithPath:"file:///var/mobile/Media/DCIM/101APPLE/IMG_1006.MOV") 
let asset = AVURLAsset.init(url: urlStr)

Справка по яблоку помогает

Другие вопросы по тегам