AVplayer не воспроизводит видео из галереи iPhone - PullRequest
0 голосов
/ 09 апреля 2019

Итак, этот код работал нормально в моем предыдущем проекте, протестированном на iPhone 5s, но когда я встроил его в свой основной проект, он не работает, он выбирает видео из галереи, показывает плеер, но продолжает искать видео - (выигралне играйте), только черный экран плеера с индикатором поиска ниже и кнопками паузы и т. д.458877] [обнаружение] ошибки, обнаруженные при обнаружении расширений: Ошибка Домена = PlugInKit Code = 13 "запрос отменен" UserInfo = {NSLocalizedDescription = запрос отменен}

Много раз искал и пришел к выводу из одного из ответовна форумах Apple, что это ничего не влияет и лучше игнорируется.

import UIKit
import AVKit
import AVFoundation

class GalleryVideoSelectorViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate {

let ipc = UIImagePickerController()

override func viewDidLoad() {
    super.viewDidLoad()
    ipc.delegate=self

}
@IBAction func SelectVideo(_ sender: Any) {
    ipc.sourceType = .photoLibrary

    ipc.mediaTypes = ["public.movie"]
    present(ipc,animated:true,completion: nil)
}

@IBAction func PlayBackVideo(_ sender: Any) {
    if let videoURL = UserDefaults.standard.url(forKey: "LullabyURL") {
        let player = AVPlayer(url: videoURL)
        let playerViewController = AVPlayerViewController()
        playerViewController.player = player
        self.present(playerViewController,animated:true)
        {
            playerViewController.player!.play()
        }
    }
}
@objc func imagePickerController(_ picker:UIImagePickerController, didFinishPickingMediaWithInfo info:[String:Any])
{
    ipc.dismiss(animated:true){

        var videourl = info["UIImagePickerControllerReferenceURL"] as? URL
        if let videoURL = videourl{

            defaults.set(videoURL,forKey: "LullabyURL")
            let player = AVPlayer(url:videourl!)
            print (videourl!)
            let playerViewController = AVPlayerViewController()
            playerViewController.player = player
            self.present(playerViewController,animated:true)
            {
                playerViewController.player!.play()
            }

        }

    }

}

1 Ответ

0 голосов
/ 13 мая 2019

Это обновленная версия моего делегата, которая фактически вызывала проблему.

@objc func imagePickerController(_ picker:UIImagePickerController, didFinishPickingMediaWithInfo info:[UIImagePickerController.InfoKey:Any])
{
    ipc.dismiss(animated:true){
       let videourl = info[UIImagePickerController.InfoKey.mediaURL] as! URL
            UserDefaults.standard.set(videourl,forKey: "LullabyURL")
            let player = AVPlayer(url: videourl)
            let playerViewController = AVPlayerViewController()
            playerViewController.player = player
            self.present(playerViewController,animated:true)
            {
                playerViewController.player!.play()
            }
    }
}

Изменено "didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]" to "didFinishPickingMediaWithInfo.foK:: UIImagePicker:Любой] "

и URL видео из" let videourl = info ["UIImagePickerControllerReferenceURL"] как? URL "для" let videourl = info [UIImagePickerController.InfoKey.mediaURL] как! URL "

...