0

我正在尝试编写一个 Mac 应用程序,该应用程序可以从连接的 ipad 中捕获屏幕截图/视频,例如 quicktime 或 zoom can。我正在尝试使用AVCapturePhotoOutput该类,但该func capturePhoto(with: AVCapturePhotoSettings, delegate: AVCapturePhotoCaptureDelegate)方法没有调用我的委托的任何方法,但我没有看到任何其他错误。我是否设置AVCapturePhotoSettings不正确,或者错过了设置捕获会话的步骤?

这是设置 aAVCaptureSession并尝试调用的代码capturePhoto

let device : AVCaptureDevice = message.object as! AVCaptureDevice;
                    print(device.deviceType, " localized name: ", device.localizedName, " model id", device.modelID)
                    var session = AVCaptureSession();
                    
                    let photoOutput = AVCapturePhotoOutput()
                    
                    session.beginConfiguration()
                    
                    guard session.canAddOutput(photoOutput) else { return }
                    session.sessionPreset = .photo
                    session.addOutput(photoOutput)
                    print("output added to session")
                    do {
                        try session.addInput(AVCaptureDeviceInput(device: device));
                        print("input added to session")
                        session.commitConfiguration();
                        session.startRunning();
                        print("session running")
                        
                        let photoSettings = AVCapturePhotoSettings()

                        print("about to try to capture a photo with",  device.localizedName)
                        photoOutput.capturePhoto(with: photoSettings, delegate: PhotoDelegate(theCV: self))
                        
                    } catch {
                        print("couldn't add capture device as input")
                    }
                }

这是我的委托,在我触发捕获后,这些方法都没有被调用。

class PhotoDelegate : NSObject, AVCapturePhotoCaptureDelegate{
    var cv : ContentView
    init(theCV : ContentView){
        cv = theCV
        print("delegate constructed")
    }

    
    func photoOutput(_ output: AVCapturePhotoOutput,
                     didFinishProcessingPhoto photo: AVCapturePhoto,
                     error: Error?){
        print("got the ipad photo!")
        print(photo.timestamp)
        
    }
    
    func photoOutput(_: AVCapturePhotoOutput, willBeginCaptureFor: AVCaptureResolvedPhotoSettings){
        print("starting the capture")
    }
    
    func photoOutput(_: AVCapturePhotoOutput, didFinishCaptureFor: AVCaptureResolvedPhotoSettings, error: Error?){
        print("did finish capture")
    }
    
   
}

我看到的输出(从我读到的,错误是无关的日志垃圾邮件,但我不是专家)

AVCaptureDeviceType(_rawValue: AVCaptureDeviceTypeExternalUnknown)  localized name:  Ben’s iPad  model id iOS Device
output added to session
input added to session
2022-01-07 20:48:26.165436-0700 presenterMode[65303:6394791] [] CMIOHardware.cpp:379:CMIOObjectGetPropertyData Error: 2003332927, failed
2022-01-07 20:48:26.165502-0700 presenterMode[65303:6394791] [] CMIO_DALA_Object.cpp:518:GetPropertyData Error: 2003332927, got an error getting the property data mObjectID 39
2022-01-07 20:48:26.168461-0700 presenterMode[65303:6394791] [] CMIOHardware.cpp:420:CMIOObjectSetPropertyData property isn't settable pft  glob
2022-01-07 20:48:26.168546-0700 presenterMode[65303:6394791] [] CMIOHardware.cpp:450:CMIOObjectSetPropertyData Error: 1852797029, failed
2022-01-07 20:48:26.170321-0700 presenterMode[65303:6394791] [] CMIOHardware.cpp:379:CMIOObjectGetPropertyData Error: 2003332927, failed
2022-01-07 20:48:26.170527-0700 presenterMode[65303:6394791] [] CMIOHardware.cpp:379:CMIOObjectGetPropertyData Error: 2003332927, failed
2022-01-07 20:48:26.170552-0700 presenterMode[65303:6394791] [] CMIO_DALA_Object.cpp:518:GetPropertyData Error: 2003332927, got an error getting the property data mObjectID 39
session running
about to try to capture a photo with Ben’s iPad
delegate constructed

4

0 回答 0