2016-07-05 29 views
0

Ich beziehe mich auf die AVScreenShack Beispiel. Ich habe sogar die Vorschau-Funktion los, um zu sehen, ob es verbessert. Aber das Frame-Skipping ist sehr gut sichtbar. Ich dachte, dass mein Computer nicht stark genug ist, aber als ich den QuickTime Player zum Aufzeichnen des Bildschirms verwendete, war das Video seidig glatt.Warum bekomme ich eine langsamere Bildrate während des Capturing Screen in OSX?

Wie kann ich den folgenden Code verbessern, um eine hohe fps-Ausgabe zu erhalten?

func startRecording(){ 
     mSession = AVCaptureSession() 
     mSession?.sessionPreset = AVCaptureSessionPresetHigh 
     let displayId : CGDirectDisplayID = CGMainDisplayID() 

     let session : AVCaptureSession 
     if mSession != nil { 
      session = mSession! 
     }else{ 
      return 
     } 

     let input : AVCaptureScreenInput = AVCaptureScreenInput(displayID: displayId) 
     input.minFrameDuration = CMTimeMake(1, 35) 
     if let rect = delegate?.cropRect() { 
      input.cropRect = rect 
     } 

     if session.canAddInput(input) { 
      session.addInput(input) 
     }else{ 
      return 
     } 

     mMovieFileOutput = AVCaptureMovieFileOutput() 

     if session.canAddOutput(mMovieFileOutput) { 
      session.addOutput(mMovieFileOutput!) 
     } 

     mSession?.startRunning() 
     mMovieFileOutput?.movieFragmentInterval = kCMTimeInvalid 
     mMovieFileOutput?.startRecording(toOutputFileURL: URL(fileURLWithPath:"/Users/Tester/Desktop/capture.mov"), recordingDelegate: self) 

    } 

Antwort

1

Sie können eine höhere Framerate erhalten, indem die minimale Rahmendauer senken:

input.minFrameDuration = CMTimeMake(1, 60) 

N. B. Dies garantiert keine höhere Framerate, aber es erlaubt einen.

+0

Es ist glatter als zuvor, aber immer noch nervös. Das einzige, was ich nicht verstehe, ist, dass das menschliche Auge Frames überspringen kann, wenn die fps unter 24 gehen. Ich bin mir nicht sicher, was hier passiert. – Bavan

+0

Bavan - nur FYI, das ist veraltet (ich erinnere mich, als ich ein Kind war). Diese Quelle sagt, dass die durchschnittliche Bevölkerung 45 FPS erkennen kann, 25%, die mehr als 60FPS sehen können und einige (ausgebildete Kampfpiloten), die über 220FPS erkennen können https://www.reddit.com/r/askscience/comments/1vy3qe/how_many_frames_per_second_can_the_eye_see /? st = iqbi33ce & sh = ea892b27 Einige Benutzer, Sie können eins sein, erkennen überspringende Bilder bei 60FPS. –