2014-10-04 14 views
15

Ich habe es geschafft, Code zu schreiben, der die Kamera öffnet und das Video in der Vorschau anzeigt. Ich möchte nun die Rahmen von dem Ausgang erfassen ideal als H.264 codiert an einen Server sendenAusgabe von AVCaptureSession in Swift zum Senden an den Server

Hier ist, was ich habe:

import UIKit 
import AVFoundation 

class ViewController: UIViewController { 

    let captureSession = AVCaptureSession() 
    var previewLayer : AVCaptureVideoPreviewLayer? 

    // If we find a device we'll store it here for later use 
    var captureDevice : AVCaptureDevice? 

    override func viewDidLoad() { 
     super.viewDidLoad()    
     // Do any additional setup after loading the view, typically from a nib. 

     captureSession.sessionPreset = AVCaptureSessionPresetHigh 

     let devices = AVCaptureDevice.devices() 

     // Loop through all the capture devices on this phone 
     for device in devices { 
      // Make sure this particular device supports video 
      if (device.hasMediaType(AVMediaTypeVideo)) { 
       // Finally check the position and confirm we've got the back camera 
       if(device.position == AVCaptureDevicePosition.Back) { 
        captureDevice = device as? AVCaptureDevice 
        if captureDevice != nil { 
         println("Capture device found") 
         beginSession() 
        } 
       } 
      } 
     } 

    } 

    func beginSession() { 

     var err : NSError? = nil 
     captureSession.addInput(AVCaptureDeviceInput(device: captureDevice, error: &err)) 

     if err != nil { 
      println("error: \(err?.localizedDescription)") 
     } 

     previewLayer = AVCaptureVideoPreviewLayer(session: captureSession) 
     self.view.layer.addSublayer(previewLayer) 
     previewLayer?.frame = self.view.layer.frame 

     captureSession.startRunning() 

    } 

} 

Das Öffnen der Kamera erfolgreich, und ich kann das Material eine Vorschau .

Ich habe diesen Objective-C-Code gefunden, der aussieht, als ob er die Ausgabe bekommt, aber ich weiß nicht, wie man ihn in swift umwandelt. Es verwendet AVCaptureVideoDataOutput, AVAssetWriter, AVAssetWriterInput und AVAssetWriterInputPixelBufferAdaptor, um Frames in eine H.264-codierte Filmdatei zu schreiben.

Can use AVCaptureVideoDataOutput and AVCaptureMovieFileOutput at the same time?

Kann jemand helfen, konvertieren oder geben Sie mir Hinweise, wie aus meinem aktuellen Code um den Rahmen zu bekommen?

+0

Die Dokumentation für diese Art von Dingen fehlt für die schnelle. Es ist ziemlich frustrierend. –

+0

Haben Sie eine Lösung gefunden? –

+0

versuchen Sie, Code aus [Kann AVCaptureVideoDataOutput und AVCaptureMovieFileOutput gleichzeitig zu konvertieren?] (Http://stackoverflow.com/questions/4944083/can-use-avcapturevideodataoutput-and-avcapturemoviefileoutput-the-same-time)) zu schnell? –

Antwort

3

Apple hat ein Beispielprojekt AVCam in Objective, das mit diesen Dingen arbeitet.

Here's eine andere Frage zu SO über die Verwendung von AVCamera in Swift.

Ich persönlich benutzte diese https://github.com/alex-chan/AVCamSwift, und es ist in Ordnung. Ich musste es nur in Latest Swift Syntax in Xcode konvertieren und es hat gut funktioniert.

Ein anderer Vorschlag ist, den gefundenen ObjectiveC-Code zu verwenden und ihn in Ihren Swift-Code über einen Bridging-Header zu importieren.

Verwandte Themen