2016-12-16 6 views
2

У меня есть функция, которую я хочу использовать для сохранения видео в рулоне камеры. Почему-то после остановки записи ничего не происходит? Она не сохраняет его в рулон камеры или давать какие-либо другие ошибки, чемОшибка при сохранении видео в рулоне камеры? [Swift]

Error Domain=NSCocoaErrorDomain Code=-1 "(null)"

Вот мой код:

@IBAction func record(_ sender: UIButton) { 

    if recordingInProgress{ 
     output.stopRecording() 
     recordingLabel.textColor = UIColor.rgb(red: 173, green: 173, blue: 173) 
     PHPhotoLibrary.shared().performChanges({ 
      PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: self.outputURL as URL) 
     }) { saved, error in 
      if saved { 
       let alertController = UIAlertController(title: "Your video was successfully saved", message: nil, preferredStyle: .alert) 
       let defaultAction = UIAlertAction(title: "OK", style: .default, handler: nil) 
       alertController.addAction(defaultAction) 
       self.present(alertController, animated: true, completion: nil) 
      } 
     } 
    } 


    else{ 
     let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString 
     let outputPath = "\(documentsPath)/output.mov" 
     outputURL = NSURL(fileURLWithPath: outputPath) 
     output.startRecording(toOutputFileURL: outputURL as URL!, recordingDelegate: self) 
     recordingLabel.textColor = UIColor.rgb(red: 250, green: 3, blue: 33) 
    } 

    recordingInProgress = !recordingInProgress 


} 

ответ

1

Вы получаете доступ к видео-файл слишком рано после вызова stopRecording. Как указано выше here, вы должны попытаться использовать URL-адрес в обратном вызове делегата capture(_:didFinishRecordingToOutputFileAt:fromConnections:error:), потому что запись должна завершить любую запись в файл после того, как вы попросите его остановить.

Вы хотите переместить фотографию вызова библиотеки в этот метод делегата:

func capture(_ captureOutput: AVCaptureFileOutput!, didFinishRecordingToOutputFileAt outputFileURL: URL!, fromConnections connections: [Any]!, error: Error!) { 
    // PHPhotoLibrary.shared().performChanges... 
} 
Смежные вопросы