10
@objc func launchCoreML() {
    let settings = AVCapturePhotoSettings()
    let previewPixelType = settings.availablePreviewPhotoPixelFormatTypes.first
    let previewFormat = [
        kCVPixelBufferPixelFormatTypeKey as String: previewPixelType, 
        kCVPixelBufferWidthKey as String: 160, 
        kCVPixelBufferHeightKey as String: 160
    ] as [String : Any]

    settings.previewPhotoFormat = previewFormat
    cameraOutput.capturePhoto(with: settings, delegate: self)
}

我有一个错误说:

“AVCapturePhotoSettings”类型的值没有成员“availablePreviewPhotoPixelFormat”。

我正在使用 Xcode 9 的测试版。

4

3 回答 3

13

在 beta 4 中,它被重命名为__availablePreviewPhotoPixelFormat. 我还没有看过 beta 5。

于 2017-08-08T08:25:32.613 回答
5

升级到 Xcode 12.0 后我遇到了同样的问题

似乎在 Final Xcode Release: Version 12.0 (12A7209) 中再次settings.availablePreviewPhotoPixelFormatTypes更改为。settings.__availablePreviewPhotoPixelFormatTypes我已经在没有“重命名”的情况下使用它至少 2 年了。感谢@Matthijs Hollemans 的帮助

编辑:这是关于此更改的官方回复: https ://developer.apple.com/forums/thread/86810?answerId=259270022#259270022

此代码编译正常。

let settings = AVCapturePhotoSettings()
guard let previewPixelType = settings.__availablePreviewPhotoPixelFormatTypes.first else { return }
let previewFormat = [
    kCVPixelBufferPixelFormatTypeKey as String: previewPixelType,
    kCVPixelBufferWidthKey as String: 160,
    kCVPixelBufferHeightKey as String: 160
]
settings.previewPhotoFormat = previewFormat
output.capturePhoto(with: settings, delegate: self)
于 2020-09-23T15:28:29.880 回答
1
        var photoSettings: AVCapturePhotoSettings
        if #available(iOS 11.0, *) {
            photoSettings = AVCapturePhotoSettings.init(format: [AVVideoCodecKey: AVVideoCodecType.jpeg])
        } else {
            // Fallback on earlier versions
            photoSettings = AVCapturePhotoSettings()
            if photoSettings.__availablePreviewPhotoPixelFormatTypes.count > 0 {
                photoSettings.previewPhotoFormat = [kCVPixelBufferPixelFormatTypeKey as String : photoSettings.__availablePreviewPhotoPixelFormatTypes.first!]
            }
        }
于 2017-10-09T07:18:39.910 回答