Swift 4 сохраняет записанное видео в фотоальбом

#xcode #swift4 #avkit

#xcode #swift4 #avkit

Вопрос:

Это моя первая попытка записи и сохранения видео с помощью AVKit и т.д. И хотя я могу отображать и записывать видео с помощью метода:

  @IBAction func recordVideo(_ sender: Any) {

        // Check the camera is available
        if UIImagePickerController.isSourceTypeAvailable(UIImagePickerController.SourceType.camera){
            // present the camera
            controller.sourceType = .camera
            controller.mediaTypes = [kUTTypeMovie as String]
            controller.delegate =  self
            present (controller,animated: true, completion: nil)
        }else{
            // No camera available so show alert
            let alert = UIAlertController(title: "Oops!", message: "Can't access the camera!", preferredStyle: .alert)
            alert.addAction(UIAlertAction(title: "Give up", style: .default, handler: nil))
            self.present(alert, animated: true)

            uploadButton.isHidden = true
        }
    }
  

У меня возникли проблемы с сохранением записанного видео в фотоальбом. Когда я выполняю пошаговое выполнение кода, он переходит из строки ‘guard’ в блок ‘else’ и просто возвращается. Итак, по какой-то причине он не может ничего назначить «MediaType»

 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo vidInfo: [UIImagePickerController.InfoKey : Any]){

        dismiss(animated: true, completion: nil)

        guard let mediaType = vidInfo[UIImagePickerController.InfoKey.mediaURL] as? String,
            mediaType == (kUTTypeMovie as String),
            let url = vidInfo[UIImagePickerController.InfoKey.mediaURL] as? URL,
            UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(url.path)
            else {
                return
        }

        // Handle a movie capture
        UISaveVideoAtPathToSavedPhotosAlbum(url.path, self, nil, nil)
}
  

Будем признательны за любую помощь.

Комментарии:

1. vidInfo[UIImagePickerController.InfoKey.mediaURL] не может быть одновременно String и a URL .

2. Я понимаю, как бы мне переписать это, чтобы заставить это работать, я следовал примеру по ссылке , где это, похоже, работает.

3. Согласно документу: developer.apple.com/documentation/uikit/uiimagepickercontroller/… я думаю, вы ищете URL-адрес mediaType ( developer.apple.com/documentation/uikit/uiimagepickercontroller / … ), поэтому MediaType следует проверять с помощью этого ключа.