2017-12-05 7 views
1

Ich mache eine benutzerdefinierte Kamera, um mit Full HD oder nur HD-Qualität zu filmen. Das Problem ist, dass, nachdem ich die Kamera zu 25 Bildern mit der Folge Code festgelegt:Aufnehmen von Videos mit 25 Bildern pro Sekunde in iOS

- (void) setFrameRate:(AVCaptureDevice*) camera { 
    NSError *error; 
    if (![camera lockForConfiguration:&error]) { 
     NSLog(@"Could not lock device %@ for configuration: %@", camera, error); 
     return; 
    } 
    AVCaptureDeviceFormat *format = camera.activeFormat; 
    double epsilon = 0.00000001; 
    int desiredFrameRate = 25; 
    for (AVFrameRateRange *range in format.videoSupportedFrameRateRanges) { 
     if (range.minFrameRate <= (desiredFrameRate + epsilon) && 
      range.maxFrameRate >= (desiredFrameRate - epsilon)) { 
      [camera setActiveVideoMaxFrameDuration:CMTimeMake(10, desiredFrameRate*10)]; 
      [camera setActiveVideoMinFrameDuration:CMTimeMake(10, desiredFrameRate*10)]; 
      break; 
     } 
    } 
    [camera unlockForConfiguration]; 
} 

Es das Video fps ändert aber nicht beschränkt auf genau 25 Frames pro Sekunde, wie ich gesetzt in Verfahren. Es schwankt zwischen 23,93 und 25,50 Bildern pro Sekunde. Wer weiß warum?

Antwort

1

Nach mehreren Versuchen und Debugging finde ich heraus, dass das Problem mit der Bildrate nicht genau 25 Frame hat mit der Aufnahmemethode zu tun und nicht mit dem Gerät Setup.

Ich benutzte AVAssetWriter Objekt, um das Video wie das Beispiel in der folgenden Link (https://reformatcode.com/code/ios/ios-8-film-from-both-back-and-front-camera) aufgezeichnet aufzunehmen.

Aber in keiner Weise war es möglich, genau 25 fps zu bekommen.

Ändern Sie das Objekt für die Aufnahme von Video für AVCaptureMovieFileOutput und war Abendessen einfach von dort einrichten und aufzeichnen. Ergebnis ist viel genauer, zwischen 25 und 25.01.

Verwandte Themen