ios - AVFoundation 相机的正确 ISO 值

标签 ios avfoundation iso

在使用 AVFoundation 时,我使用这两个属性来了解设备相机可以使用的最小和最大 ISO:

AVCaptureDeviceFormat *activeFormat = _videoDevice.activeFormat;
minISO = activeFormat.minISO;
maxISO = activeFormat.maxISO;

但是这些行给我以下结果:

minISO = 23
maxISO = 736

但是没有 ISO 23 或 736 这样的东西。事实上,如果你用 ISO 23 调整相机,它会自动调整到 ISO 50,而 ISO 736 会让相机调整到 ISO 800。

有没有办法在设置之前知道给定相机可以使用的真实 ISO?

最佳答案

您可以定义标准 ISO 值列表:

let isos: [Float] = [32, 50, 64, 80, 100, 125, 160, 200, 250, 320, 400, 500, 640, 800, 1000, 1250, 1600, 1800]

并且在通过最小和最大 ISO 值初始化捕获设备过滤器之后:

var isos_available: [Float] = []
    
for one_iso in isos {
    if one_iso >= min_iso && one_iso <= max_iso {
        isos_available.append(one_iso)
    }
}

还有快门速度:

var shutters: [Float] = [1, 2, 4, 8, 15, 30, 60, 125, 250, 500, 1000, 2000, 4000, 8000]
var shutters_available: [Float] = []
    
let min_seconds = CMTimeGetSeconds(self.device.activeFormat.minExposureDuration)
let max_seconds = CMTimeGetSeconds(self.device.activeFormat.maxExposureDuration)
    
for one_shutter in shutters {
    let seconds = 1.0 / Float64(one_shutter)
    if seconds >= min_seconds && seconds <= max_seconds {
        shutters_available.append(one_shutter)
    }
}

关于ios - AVFoundation 相机的正确 ISO 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40604334/

相关文章:

ios 如何从应用商店 url 中提取 ID 号部分?

ios - 联系人选择器的委派设置不正确

ios - 如何使用 swift 监控 ios 上的音频输入 - 例如?

sql - 国际国家/地区(州、省、地区等)的列类型和大小

ios - 根据ISOCountryCode获取货币符号和货币代码

ios - __NSArrayM 插入对象 :atIndex:]; object cannot be nil

ios - 为 UITableView 指定 UITableViewRowAnimationNone 时发生行动画

ios - 将音频缓冲区 [从文件] 添加到 'live' 音频缓冲区 [录制到文件]

ios - 哪些iphone条码sdk可以同时扫描多个一维条码

c - __isoc99_scanf 和 scanf