Advertisement
Guest User

Untitled

a guest
Jul 16th, 2018
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 3.49 KB | None | 0 0
  1.  
  2. import UIKit
  3. import AVKit
  4. import MobileCoreServices
  5.  
  6. import AVFoundation
  7.  
  8. class RecordViewController: UIViewController, AVCaptureFileOutputRecordingDelegate {
  9.  
  10.    
  11.    
  12.     var captureSession = AVCaptureSession()
  13.     var sessionOutput = AVCapturePhotoOutput()
  14.     var movieOutput = AVCaptureMovieFileOutput()
  15.     var previewLayer = AVCaptureVideoPreviewLayer()
  16.    
  17.     @IBOutlet var cameraView: UIView!
  18.    
  19.     override func viewWillAppear(_ animated: Bool) {
  20.         self.cameraView = self.view
  21.        
  22.         let devices = AVCaptureDevice.devices()
  23.         for device in devices {
  24.             if device.position == AVCaptureDevice.Position.back{
  25.                
  26.                
  27.                 do{
  28.                    
  29.                     let input = try AVCaptureDeviceInput(device: device as! AVCaptureDevice)
  30.                    
  31.                     if captureSession.canAddInput(input){
  32.                        
  33.                         captureSession.addInput(input)
  34.                    
  35.                         if captureSession.canAddOutput(sessionOutput){
  36.                            
  37.                             captureSession.addOutput(sessionOutput)
  38.                            
  39.                             previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
  40.                             previewLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
  41.                             previewLayer.connection?.videoOrientation = AVCaptureVideoOrientation.portrait
  42.                             cameraView.layer.addSublayer(previewLayer)
  43.                            
  44.                             previewLayer.position = CGPoint(x: self.cameraView.frame.width / 2, y: self.cameraView.frame.height / 2)
  45.                             previewLayer.bounds = cameraView.frame
  46.                            
  47.                            
  48.                         }
  49.                        
  50.                         captureSession.addOutput(movieOutput)
  51.                        
  52.                         captureSession.startRunning()
  53.                        
  54.                         let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
  55.                        
  56.                         let fileUrl = paths[0].appendingPathComponent("output.mov")
  57.                         try? FileManager.default.removeItem(at: fileUrl)
  58.                         movieOutput.startRecording(to: fileUrl, recordingDelegate: self)
  59.                        
  60. //
  61.                         DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
  62.                             print("stopping")
  63.                             self.movieOutput.stopRecording()
  64.                         }
  65.  
  66.                     }
  67.                    
  68.                 }
  69.                 catch{
  70.                    
  71.                     print("Error")
  72.                 }
  73.                
  74.             }
  75.         }
  76.        
  77.     }
  78.    
  79.     func captureOutput(captureOutput: AVCaptureFileOutput!, didFinishRecordingToOutputFileAtURL outputFileURL: NSURL!, fromConnections connections: [AnyObject]!, error: NSError!) {
  80.         print("FINISHED \(error)")
  81.         // save video to camera roll
  82.  
  83.     }
  84.     func fileOutput(_ output: AVCaptureFileOutput, didFinishRecordingTo outputFileURL: URL, from connections: [AVCaptureConnection], error: Error?) {
  85.         if error == nil {
  86.             print("saving")
  87.             UISaveVideoAtPathToSavedPhotosAlbum(outputFileURL.path, nil, nil, nil)
  88.         }
  89.        
  90.     }
  91.    
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement