我正在使用一些计算机视觉算法,这些算法要求我使用较低的帧速率〜有时甚至是7-10 fps。
问题在于,我不希望用户在使用应用时体验不佳,但我仍希望以较低的帧速率处理。是否有内置API来执行此操作?
我不必进入委托方法并自行手动删除框架并处理所需的框架。
答案 0 :(得分:1)
在没有搞砸视频的情况下手动删除帧有点困难/几乎不可能,但您可以像这样配置编码器
// in you initialisation code
NSError *err;
AVCaptureDevice* dev = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
[dev lockForConfiguration:&err];
[self configureCameraForFrameRate:dev frameRate:10];
[dev unlockForConfiguration];
- (void)configureCameraForFrameRate:(AVCaptureDevice *)device frameRate:(NSInteger)rate;
{
AVCaptureDeviceFormat *bestFormat = nil;
AVFrameRateRange *bestFrameRateRange = nil;
for ( AVCaptureDeviceFormat *format in [device formats] ) {
for ( AVFrameRateRange *range in format.videoSupportedFrameRateRanges ) {
if ( range.maxFrameRate > bestFrameRateRange.maxFrameRate ) {
bestFormat = format;
bestFrameRateRange = range;
}
}
}
if ( bestFormat ) {
device.activeFormat = bestFormat;
CMTime time = CMTimeMake(1, rate);
device.activeVideoMinFrameDuration = time;
//NSLog(@"%d %lld",bestFrameRateRange.minFrameDuration.timescale, bestFrameRateRange.minFrameDuration.value);
device.activeVideoMaxFrameDuration = time;
}
}
不确定这是实现这一目标的最佳方法,但是...... ^^'