こんにちは、AVCaptureScreenInput で minFrameDuration を設定できるように、フレーム レートを表す整数を CMTime に変換しようとしています。
今まで私は
int numberOfFrames = [self convertFrameRateStringToInt:[parameters objectForKey:@"frameRate"]];
Float64 frameDuration = 1.0/numberOfFrames;
NSLog(@"numberOfFrames %i - frameDuration %f",numberOfFrames, frameDuration);
NSLog(@"timeshow %f",CMTimeGetSeconds(CMTimeMakeWithSeconds(frameDuration, 1)));
return CMTimeMakeWithSeconds(frameDuration,1);
numberOfFrames が 15 フレーム/秒に設定されている場合、frameDuration は 0.066667 であるため、CMTimeMakeWithSeconds のパラメーターは 0.066667 と 1 です。これは、CMTimeGetSeconds が 0.066667/1 = 0.066667 を返す必要があることを意味しますが、代わりに 0 を返します。
誰かが私が間違っていることを理解し、その理由を説明できますか? ありがとう。
Edit1:次のように機能を変更するようにしました:
int numberOfFrames = [self convertFrameRateStringToInt:string];
NSLog(@"timeshow %f",CMTimeGetSeconds(CMTimeMake(1, (int32_t)numberOfFrames)));
return CMTimeMake(1, (int32_t)numberOfFrames);
最後の方法がうまくいかなかった理由がまだわかりません