Как конвертировать видео PHAsset в URL видео в Swift iOS - PullRequest
0 голосов
/ 29 сентября 2018

Я использую библиотеку AssetsPickerViewController для выбора кратного Videos.Здесь я получаю массив [PHAsset]:

func assetsPicker(controller: AssetsPickerViewController, selected assets: [PHAsset]) {
        self.assets = assets
}

Когда я печатаю свой self.assets[0], я получаю вывод:

<PHAsset: 0x105230b40> 49185CD0-E5D7-4A84-BB75-38DB58C2EB20/L0/001 mediaType=2/0, sourceType=1, (1920x1080), creationDate=2018-03-17 02:35:36 +0000, location=0, hidden=0, favorite=0 

Теперь моя проблема в том, когда я пытаюсьчтобы получить URL видео от self.assets[0], тогда мое приложение падает из-за нулевого актива.Я попробовал следующие решения, Все решения не работают для меня.

Соль 1:

PHCachingImageManager().requestAVAsset(forVideo: assets[0], options: nil, resultHandler: {(asset: AVAsset?, audioMix: AVAudioMix?, info: [NSObject : AnyObject]?) in

            let asset = asset as! AVURLAsset
             DispatchQueue.main.async {
                print(asset.url)
            }
            } as! (AVAsset?, AVAudioMix?, [AnyHashable : Any]?) -> Void)

Соль 2:

PHImageManager.default().requestAVAsset(forVideo: self.assets[0], options: nil, resultHandler: { (asset, mix, nil) in
            let myAsset = asset as? AVURLAsset
            do {
                let videoData = try Data(contentsOf: (myAsset?.url)!)
                print("video data : \(videoData)")

            } catch  {
                print("exception catch at block - while uploading video")
            }
        })

Соль 3:

PHImageManager.default().requestAVAsset(forVideo: assets[0], options: options, resultHandler: { (asset, audioMix, info) in
            if let urlAsset = asset as? AVURLAsset {
                let localVideoUrl = urlAsset.url
                print("VIDEO URL: ", localVideoUrl)
            } else {
                //nil
            }
        })

Может кто-нибудь предложить мне здесь, я что-то здесь упускаю?

...