【问题标题】:How to check if AVCaptureDeviceFormat supports Slow Motion recording?如何检查 AVCaptureDeviceFormat 是否支持慢动作录制?
【发布时间】:2017-06-28 15:05:16
【问题描述】:

我正在环顾四周以实现慢动作视频录制。我发现我们可以通过配置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];
        }
    }
}

【问题讨论】:

    标签: ios objective-c avcapturesession avcapturedevice


    【解决方案1】:

    您将获得最低 120 fps 范围内的优质慢动作视频。 所以你可以检查它

    device.activeVideoMaxFrameDuration.timescale >= 120
    

    注意:在手动替换值之前检查它。

    【讨论】:

    • 您能提供一些参考吗?我实际上需要弥补一些统计数据。或者我必须检查每台设备。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多