2017-12-05 16 views
1

フルHDまたはHD画質でカスタムカメラを撮っています。問題は後に、私は次のコードを25のフレームにカメラを設定することです:iOSで25フレーム/秒でビデオを録画

- (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]; 
} 

私はこの方法で設定したようですが、ビデオFPSを変更ではなく、正確に毎秒25のフレーム。毎秒23.93フレームと25.50フレームの間で変動します。 誰もがその理由を知っていますか?

答えて

1

いくつか試してデバッグした後、フレームレートが正確に25フレームではないという問題は、記録方法と関係しており、デバイスの設定ではないことがわかりました。

次のリンク(https://reformatcode.com/code/ios/ios-8-film-from-both-back-and-front-camera)の例のように、AVAssetWriterオブジェクトを使用してビデオを録画していました。

しかし、まったく正確に25fpsを得ることはできませんでした。

AVCaptureMovieFileOutputのビデオを録画するオブジェクトを変更し、そこから設定して録画するのが簡単でした。はるかに正確に、25と25.01の間に結果をもたらします。

関連する問題