您好我正在尝试将表示帧速率的整数转换为 CMTime,以便能够在 AVCaptureScreenInput 中设置 minFrameDuration。
直到现在我有
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);
我仍然无法理解为什么最后一种方法不起作用