Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在swift中使用PHImageManager(requestAVAssetForVideo)_Ios_Swift_Phasset_Timelapse - Fatal编程技术网

Ios 在swift中使用PHImageManager(requestAVAssetForVideo)

Ios 在swift中使用PHImageManager(requestAVAssetForVideo),ios,swift,phasset,timelapse,Ios,Swift,Phasset,Timelapse,我用objective-c图像采集器图像采集器来选择时间间隔,但我用的是swift。我只能访问objective-c代码,所以我使用了objective-c到swift转换器,但出现了一个错误 func qb_imagePickerController(imagePickerController: QBImagePickerController, didFinishPickingAssets assets: [AnyObject]) { for asset in assets as! [

我用objective-c图像采集器图像采集器来选择时间间隔,但我用的是swift。我只能访问objective-c代码,所以我使用了objective-c到swift转换器,但出现了一个错误

func qb_imagePickerController(imagePickerController: QBImagePickerController, didFinishPickingAssets assets: [AnyObject]) {
    for asset in assets as! [PHAsset] {
        PHImageManager.defaultManager().requestAVAssetForVideo(asset, options: nil, resultHandler: {(avAsset: AVAsset, audioMix: AVAudioMix, info: [NSObject : AnyObject]) -> Void in
            var url: NSURL = NSURL(string: "\(asset)")!
            var avAsset: AVURLAsset = AVURLAsset(URL: url, options: nil)
            var playerItem: AVPlayerItem = AVPlayerItem(asset: avAsset)
            var videoPlayer: AVPlayer = AVPlayer(playerItem: playerItem)
            videoPlayer.play()
        })
    }
    self.dismissViewControllerAnimated(true, completion: { _ in })
}
这是我目前拥有的代码。我收到的错误如下

无法将类型为“(AVAsset,AVAudioMix,[NSObject:AnyObject])->Void”的值转换为预期的参数类型“(AVAsset?,AVAudioMix?,[NSObject:AnyObject]?)->Void”


查看
requestAVAssetForVideo:options:resultandler:
的文档,您拥有的
resultandler
与所需签名不匹配

更改此行:

PHImageManager.defaultManager().requestAVAssetForVideo(asset, options: nil, resultHandler: {(avAsset: AVAsset, audioMix: AVAudioMix, info: [NSObject : AnyObject]) -> Void in
致:


请注意在预期位置添加了

查看文档以获取
请求视频:选项:resultHandler:
您拥有的
resultHandler
与所需签名不匹配

更改此行:

PHImageManager.defaultManager().requestAVAssetForVideo(asset, options: nil, resultHandler: {(avAsset: AVAsset, audioMix: AVAudioMix, info: [NSObject : AnyObject]) -> Void in
致:

请注意在预期位置添加了

从QBImagePickerController中的didFinishPickingAssets从Swift 4.2中的Phaset获取视频URL 从QBImagePickerController中的didFinishPickingAssets从Swift 4.2中的相集获取视频URL
很高兴我能帮忙。如果解决了您的问题,请不要忘记接受答案。我正在使用您的代码从照片库获取视频资源,并使用AvPlayServiceWController播放它。视频很好,但没有音频。你有什么想法吗?很高兴我能帮上忙。如果解决了您的问题,请不要忘记接受答案。我正在使用您的代码从照片库获取视频资源,并使用AvPlayServiceWController播放它。视频很好,但没有音频。你有什么想法吗?
let imagePicker = QBImagePickerController()
imagePicker.delegate = self
imagePicker.numberOfColumnsInPortrait = 2
imagePicker.maximumNumberOfSelection = 2
imagePicker.allowsMultipleSelection = true
imagePicker.mediaType = .video

self.present(imagePicker, animated: true, completion: nil)

func qb_imagePickerController(_ imagePickerController: QBImagePickerController!, didFinishPickingAssets assets: [Any]!) {
     for asset in assets
     {
        PHCachingImageManager().requestAVAsset(forVideo: asset as! PHAsset, options: nil, resultHandler: {(asset, audioMix, info) -> Void in
        if asset != nil {
            let avasset = asset as! AVURLAsset
            let urlVideo = avasset.url
            yourarray.add(urlVideo as URL)
        }

       })

    }


   imagePickerController.dismiss(animated: true) {
       //You can access video urls here
       print("Total Videos:\(yourarray.count)")
   }

}