Swift
Crear el capturador de pantalla
El SDK de Vonage espera una capturadora de vídeo personalizada que se ajuste a OTVideoCapture. Crea un nuevo archivo ScreenCapturer.swift y ponerlo en práctica:
- Almacenar una referencia a la vista a capturar – aunque nuestra aplicación esté desarrollada en SwiftUI, la forma más sencilla de hacerlo es con
UIViewque pasaremos al Capturador, alternativamente esto se puede hacer con unUIViewRepresentableenvoltura. - Renderizar la vista periódicamente - uso
drawHierarchy(in:afterScreenUpdates:). - Convertir a
CVPixelBuffer/OTVideoFrame– y pasar los fotogramas avideoCaptureConsumer.
Captura una vista
Copia
import Foundation
import UIKit
import OpenTok
class ScreenCapturer: NSObject, OTVideoCapture {
var videoContentHint: OTVideoContentHint
var videoCaptureConsumer: OTVideoCaptureConsumer?
private let captureView: UIView
private let captureQueue = DispatchQueue(label: "screen-capture")
private var timer: DispatchSourceTimer
private var capturing = false
private var videoFrame: OTVideoFrame
private var pixelBuffer: CVPixelBuffer?
init(withView view: UIView) {
self.videoContentHint = .none
self.captureView = view
self.timer = DispatchSource.makeTimerSource(flags: .strict, queue: captureQueue)
self.videoFrame = OTVideoFrame(format: OTVideoFormat(argbWithWidth: 0, height: 0))
}
private func captureFrame() -> UIImage {
UIGraphicsBeginImageContextWithOptions(captureView.bounds.size, false, 0)
defer { UIGraphicsEndImageContext() }
captureView.drawHierarchy(in: captureView.bounds, afterScreenUpdates: false)
return UIGraphicsGetImageFromCurrentImageContext() ?? UIImage()
}
// Implement initCapture, start, stop, releaseCapture, isCaptureStarted, captureSettings
// and feed frames to videoCaptureConsumer. See ScreenCapturer.swift for full implementation.
}
Copie el texto completo ScreenCapturer.swift implementación de este proyecto de ejemplo. Este se encarga de:
- Captura con temporizador a ~10 fps
- Redimensionamiento y relleno para compatibilidad con codificadores
CVPixelBuffercreación yOTVideoFrameentrega
Compartir pantalla
Aprende a implementar la capacidad de compartir pantallas usando la plataforma de Video API de Vonage.
Pasos
1
Introducción2
Primeros pasos3
Crear un nuevo proyecto4
Añadir el SDK de vídeo de Vonage5
Configuración de la autenticación6
Crear el capturador de pantalla7
Mostrar la vista raíz para realizar una captura a pantalla completa8
Mostrar la vista raíz para realizar una captura a pantalla completa9
Resumen10
Conclusión