Вывод видео с камеры на 2 просмотра
Я пытаюсь вывести канал с камеры на 2 разных вида. Я хочу, чтобы один канал покрывал рамку устройства, а другой - сверху, чтобы он был меньше.
Я попытался использовать CAReplicatorLayer, как показано в AVCaptureSession с несколькими предварительными просмотрами, но я не могу достичь желаемых результатов.
У меня есть UIViewController Ext, где у меня есть мой код сессии:
func allConfig(withCamView cams:UIView) {
let captureDevice = AVCaptureDeviceDiscoverySession(deviceTypes: [.builtInDualCamera, .builtInWideAngleCamera], mediaType: AVMediaTypeVideo, position: .unspecified)
for device in (captureDevice?.devices)! {
if device.position == .front{
do {
let input = try AVCaptureDeviceInput(device: device)
if session.canAddInput(input) {
session.addInput(input)
}
if session.canAddOutput(previewOutput) {
session.addOutput(previewOutput)
}
previewLayer = AVCaptureVideoPreviewLayer(session: session)
previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
previewLayer.connection.videoOrientation = .portrait
cams.layer.addSublayer(previewLayer)
previewLayer.position = CGPoint(x: cams.frame.width/2, y: cams.frame.height/2)
previewLayer.bounds = cams.frame
session.startRunning()
} catch let avError {
print(avError)
}
}
}
}
Код репликации:
var replicationLayers = 2
func tt() {
let replayer = CAReplicatorLayer()
replayer.instanceCount = replicationLayers
replayer.instanceTransform = CATransform3DMakeTranslation(100.0, 100.0, 100.0)
replayer.addSublayer(previewLayer)
self.blurview.layer.addSublayer(replayer)
}
override func allConfig(withCamView cams: UIView) {
super.allConfig(withCamView: circCam)
tt()
}
Вот что я получаю:
Как я упоминал выше, я хочу канал в фоновом режиме и канал поверх него в пользовательском представлении. Как я могу этого добиться. Пожалуйста, ведите меня.
Ценю твою помощь.