我正在四处寻找慢动作视频录制。我发现我们可以通过配置AVCaptureDevice's activeFormat
属性来实现。
我有能够获得最高帧速率的代码。但是,如果我想修复分辨率,那么慢动作会发生但只能超过一定的分辨率。我不想要低分辨率的慢动作视频。
我在5s上进行了测试,它给出了以下最高帧速率:
Format: <AVCaptureDeviceFormat: 0x174006680 'vide'/'420v' 1280x 720, { 3-120 fps}, fov:58.080, binned, supports vis, max zoom:52.00 (upscales @1.16), AF System:1, ISO:34.0-1088.0, SS:0.000012-0.333333>
Range: <AVFrameRateRange: 0x17400a5a0 3 - 120>
问题1:如何检查当前设备是否支持慢动作录制?
问题2:如果我想将1280x720作为我的阈值怎么办?因此,如果将来苹果制造出支持相同3-120 fps但分辨率较低的设备?我不希望我的视频质量受损。
问题3:设置此activeFormat
属性后,如何回滚到默认帧速率?
以下是代码:
- (void)configureCameraForHighestFrameRate:(AVCaptureDevice *)device
{
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 ) {
if ( [device lockForConfiguration:NULL] == YES ) {
device.activeFormat = bestFormat;
device.activeVideoMinFrameDuration = bestFrameRateRange.minFrameDuration;
device.activeVideoMaxFrameDuration = bestFrameRateRange.minFrameDuration;
[device unlockForConfiguration];
}
}
}
答案 0 :(得分:1)
您将获得最低120fps的优质慢动作视频。 所以您可以通过
进行检查device.activeVideoMaxFrameDuration.timescale >= 120
注意:在手动替换值之前检查它。