-
Mejora tu app con efectos de video basados en aprendizaje automático
Descubre cómo agregar efectos como conversión de velocidad de cuadros, superresolución y filtrado de ruido para mejorar la edición y las experiencias de streaming. Exploraremos los algoritmos de procesamiento basados en aprendizaje automático optimizados para el chip de Apple disponibles en la estructura Video Toolbox. Aprende a integrar estos efectos para mejorar las capacidades de tu app para casos de uso del mundo real.
Capítulos
- 0:00 - Introducción
- 1:04 - Descripción de los efectos de video
- 4:55 - Agrega efectos a tu app
- 6:46 - Ejemplo de uso: conversión de velocidad de fotogramas
- 11:16 - Ejemplo de uso: efecto de desenfoque de movimiento
- 13:46 - Ejemplo de uso: efecto de superresolución de baja latencia
- 14:55 - Ejemplo de uso: interpolación de cuadros de baja latencia
Recursos
-
Buscar este video…
-
-
8:06 - Frame rate conversion configuration
// Frame rate conversion configuration let processor = VTFrameProcessor() guard let configuration = VTFrameRateConversionConfiguration(frameWidth: width, frameHeight: height, usePrecomputedFlow: false, qualityPrioritization: .normal, revision: .revision1) else { throw Fault.failedToCreateFRCConfiguration } try processor.startSession(configuration: configuration) -
8:56 - Frame rate conversion buffer allocation
// Frame rate conversion buffer allocation //use sourcePixelBufferAttributes and destinationPixelBufferAttributes property of VTFrameRateConversionConfiguration to create source and destination CVPixelBuffer pools sourceFrame = VTFrameProcessorFrame(buffer: curPixelBuffer, presentationTimeStamp: sourcePTS) nextFrame = VTFrameProcessorFrame(buffer: nextPixelBuffer, presentationTimeStamp: nextPTS) // Interpolate 3 frames between reference frames for 4x slow-mo var interpolationPhase: [Float] = [0.25, 0.5, 0.75] //create destinationFrames let destinationFrames = try framesBetween(firstPTS: sourcePTS, lastPTS: nextPTS, interpolationIntervals: intervals) -
9:48 - Frame rate conversion parameters
// Frame rate conversion parameters guard let parameters = VTFrameRateConversionParameters(sourceFrame: sourceFrame, nextFrame: nextFrame, opticalFlow: nil, interpolationPhase: interpolationPhase, submissionMode: .sequential, destinationFrames: destinationFrames) else { throw Fault.failedToCreateFRCParameters } try await processor.process(parameters: parameters) -
12:35 - Motion blur process parameters
// Motion blur process parameters sourceFrame = VTFrameProcessorFrame(buffer: curPixelBuffer, presentationTimeStamp: sourcePTS) nextFrame = VTFrameProcessorFrame(buffer: nextPixelBuffer, presentationTimeStamp: nextPTS) previousFrame = VTFrameProcessorFrame(buffer: prevPixelBuffer, presentationTimeStamp: prevPTS) destinationFrame = VTFrameProcessorFrame(buffer: destPixelBuffer, presentationTimeStamp: sourcePTS) guard let parameters = VTMotionBlurParameters(sourceFrame: currentFrame, nextFrame: nextFrame, previousFrame: previousFrame, nextOpticalFlow: nil, previousOpticalFlow: nil, motionBlurStrength: strength, submissionMode: .sequential, destinationFrame: destinationFrame) else { throw Fault.failedToCreateMotionBlurParameters } try await processor.process(parameters: parameters)
-
-
- 0:00 - Introducción
Video Toolbox, una estructura ampliamente utilizada para apps de video, se mejora con la API VTFrameProcessor, un nuevo conjunto de algoritmos de procesamiento de video basados en aprendizaje automático optimizado para el chip de Apple. Esta API, introducida por primera vez en macOS 15.4, ahora está disponible en iOS 26. Este video muestra los efectos disponibles, los pasos de integración de la app y ejemplos de implementación para los principales casos de uso.
- 1:04 - Descripción de los efectos de video
La API VTFrameProcessor proporciona efectos de edición de video, incluida la conversión de velocidad de fotogramas para cámara lenta, superresolución para mejorar videos de baja resolución, desenfoque de movimiento para movimiento natural, filtrado de ruido temporal para suavizado e interpolación de baja latencia y superresolución para aplicaciones en tiempo real, como videoconferencias, lo que mejora la calidad y la claridad en varios escenarios de video.
- 4:55 - Agrega efectos a tu app
Esta API, a la que se accede a través de la estructura Video Toolbox, permite que las apps procesen videoclips a través de un proceso de dos pasos: Seleccionar un efecto y enviar fotogramas de entrada para su procesamiento, y la estructura devuelve cuadros de salida. La API es adecuada para la edición de video y la mejora de video en vivo, con varias funcionalidades, como conversión de velocidad de fotogramas, superresolución, desenfoque de movimiento y filtrado de ruido temporal. Se adjunta a esta presentación un código de referencia de muestra.
- 6:46 - Ejemplo de uso: conversión de velocidad de fotogramas
La conversión de velocidad de cuadros es una técnica de procesamiento de video que aumenta la cantidad de cuadros de un clip sintetizando nuevos cuadros. Esta capacidad mejora la suavidad de la reproducción, elimina las vibraciones y permite efectos de cámara lenta, comúnmente usados en el cine y los deportes para mejorar el impacto visual y el análisis. El proceso de implementación implica el uso de la API VTFrameProcessor en dos pasos principales. El primer paso es crear una sesión con un objeto de configuración que especifique configuraciones, como el tamaño del cuadro de entrada, el nivel de calidad y la revisión del algoritmo. El segundo paso es procesar los cuadros usando un objeto de parámetros que administra los buffers de entrada y salida y las configuraciones de interpolación. Una decisión importante para los desarrolladores es si precalcular el flujo óptico, un proceso computacionalmente costoso, ya que puede afectar el rendimiento de la app.
- 11:16 - Ejemplo de uso: efecto de desenfoque de movimiento
El desenfoque de movimiento en la edición de video simula una velocidad de obturación lenta, por medio del desenfoque de los objetos en movimiento para que el movimiento se vea natural y agregue velocidad. Puedes aplicarlo usando la clase VTMotionBlurConfiguration, que requiere dos fotogramas de referencia (siguiente y anterior) con una intensidad de desenfoque ajustable de 1 a 100.
- 13:46 - Ejemplo de uso: efecto de superresolución de baja latencia
La superresolución de baja latencia mejora las transmisiones de video en tiempo real al aumentar la resolución. El proceso involucra dos clases simples: Una clase de configuración y una clase de parámetros. Un ejemplo demuestra cómo estas capacidades mejoran la claridad de una videollamada.
- 14:55 - Ejemplo de uso: interpolación de cuadros de baja latencia
La interpolación de fotogramas de baja latencia ayuda a mejorar las transmisiones de video en tiempo real, especialmente en conexiones lentas, lo que suaviza las vibraciones y hace que las transmisiones sean más agradables de ver. La API también ofrece un filtro que combina la duplicación de la velocidad de fotogramas y el aumento de la resolución, lo que da como resultado rasgos faciales y fondos más nítidos, y transmisiones más fluidas. Además de estas capacidades, la API le permite crear apps atractivas con funcionalidades como cámara lenta, desenfoque de movimiento y experiencias de transmisión en vivo mejoradas.