Swift
Crear el capturador de pantalla
El SDK de Vonage espera una capturadora de vídeo personalizada que se ajuste a OTVideoCapture. Crear un nuevo archivo ScreenCapturer.swift y ponerlo en práctica:
- Almacenar una referencia a la vista a capturar - aunque nuestra aplicación está configurada en SwiftUI, la forma más sencilla de hacerlo es con
UIViewque pasaremos al Capturador, alternativamente esto se puede hacer con unUIViewRepresentableenvoltorio. - Renderizar la vista periódicamente - uso
drawHierarchy(in:afterScreenUpdates:). - Convertir a
CVPixelBuffer/OTVideoFrame- y pasar fotogramas avideoCaptureConsumer.
Captar una vista
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 de este proyecto de ejemplo. Maneja:
- 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
Exponer la vista raíz para la captura a pantalla completa8
Exponer la vista raíz para la captura a pantalla completa9
Resumen10
Conclusión