Ich verwende AVCaptureVideoPreviewLayer (macOS, nicht iOS), um Videoeingaben von einer angeschlossenen Kamera zu erfassen. Ich habe Setup eine Aufnahmesitzung und erstellt eine UIView um das Bild anzuzeigen:AVCaptureVideoPreviewLayer kann nicht auf macOS gespiegelt werden
self.captureLayer = AVCaptureVideoPreviewLayer(session: self.captureSession); self.playerView.layer = self.captureLayer;
Alles funktioniert gut, und ich sehe das Bild von der Kamera, aber jetzt mag ich das Bild spiegeln (vertikal) . Ich bin mit einem CATransform3DMakeScale:
self.captureLayer.transform = CATransform3DMakeScale(-1.0, 1.0, 1.0);
statt Spiegel das Bild jedoch die Schicht geht einfach leer (Hintergrund der übergeordneten Ansicht).
Ich habe andere Transformationen (z. B. Größenänderungen) ausprobiert und sie funktionieren gut. Ich habe versucht, die Spiegelung auch die Superlayer:
self.captureLayer.superLayer?.transform = CATransform3DMakeScale(-1.0, 1.0, 1.0);
Und das funktioniert (obwohl es das gesamte Fenster inklusive der Titelleiste spiegelt!).
Jede Hilfe wird geschätzt. Ich glaube, dass die Transformation korrekt ist, aber aus irgendeinem Grund gilt es nicht für eine AVCaptureVideoPreviewLayer.
können Sie versuchen, die Lösung wie von mir zur Verfügung gestellt? – manishg
Danke @manishganvir - wirklich schätzen die Antwort und Codebeispiel. Werde dieses Wochenende versuchen, aber wenn das funktioniert, gehe ich davon aus, dass es nur eine Spiegelung über den horizontalen Zugriff bereitstellen wird, während CATransform3DMakeScale ich auch vertikal spiegeln kann (was auch in meiner App verwendet wird). –
@manishganvir Habe gerade Ihren Beispielcode - funktioniert super. Auch gefunden 'self.cameraLayer! .connection.videoOrientation = AVCaptureVideoOrientation.portraitUpsideDown' liefert mir eine vertikale Spiegelung. Danke für Ihre Hilfe! –