-
Améliorez votre app avec des effets vidéo basés sur l’apprentissage automatique
Découvrez comment ajouter des effets tels que la conversion de fréquence d'images, la super-résolution et la réduction du bruit pour améliorer le montage vidéo et l'expérience de diffusion en direct. Nous explorerons les algorithmes de traitement vidéo basés sur l'apprentissage automatique, optimisés pour la puce Apple et disponibles dans le framework Video Toolbox. Apprenez à intégrer ces effets afin d'améliorer les capacités de votre app pour des cas d'utilisation réels.
Chapitres
- 0:00 - Introduction
- 1:04 - Présentation des effets vidéo
- 4:55 - Ajouter des effets à votre app
- 6:46 - Exemple d’utilisation : conversion de fréquence d’images
- 11:16 - Exemple d’utilisation : effet de flou de mouvement
- 13:46 - Exemple d’utilisation : effet de super résolution à latence faible
- 14:55 - Exemple d’utilisation : Interpolation d’images à latence faible
Ressources
-
Rechercher dans cette vidéo…
-
-
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 - Introduction
Video Toolbox, un framework largement utilisé pour les applications vidéo, est amélioré avec l’API VTFrameProcessor, un nouvel ensemble d’algorithmes de traitement vidéo basés sur le ML et optimisés pour les puces Apple. Cette API, ajoutée pour la première fois dans macOS 15.4, est désormais disponible dans iOS 26. Cette vidéo présente les effets disponibles, les étapes d’intégration d’app et des exemples de mise en œuvre pour les principaux cas d’utilisation.
- 1:04 - Présentation des effets vidéo
L’API VTFrameProcessor offre des effets de montage vidéo, notamment la conversion de la fréquence d’images pour le ralenti, la super résolution pour améliorer les vidéos basse résolution, le flou de mouvement pour un mouvement naturel, le filtrage temporel du bruit pour la fluidité, ainsi que l’interpolation et la super résolution à faible latence pour les applications en temps réel comme la visioconférence, améliorant la qualité et la clarté de divers scénarios vidéo.
- 4:55 - Ajouter des effets à votre app
Cette API, accessible via le framework Video Toolbox, permet aux applications de traiter les clips vidéo en deux étapes : la sélection d’un effet et l’envoi des trames d’entrée pour traitement, le framework renvoyant des trames de sortie. Cette API est adaptée au montage vidéo et à l’amélioration vidéo en direct, avec des fonctionnalités telles que la conversion de la fréquence d’images, la super résolution, le flou de mouvement et le filtrage temporel du bruit. Un exemple de code de référence est joint à cette présentation.
- 6:46 - Exemple d’utilisation : conversion de fréquence d’images
La conversion de la fréquence d’images est une technique de traitement vidéo qui permet d’augmenter le nombre d’images d’un clip en synthétisant de nouvelles images. Cette fonctionnalité améliore la fluidité de la lecture, élimine les saccades et permet des effets de ralenti. Elle est couramment utilisée dans la réalisation de films et le sport, afin d’améliorer l’impact et l’analyse visuels. Le processus de mise en œuvre implique l’utilisation de l’API 'VTFrameProcessor' en deux étapes principales. La première étape consiste à créer une session avec un objet de configuration qui spécifie des paramètres tels que la taille de la trame d’entrée, le niveau de qualité et la révision de l’algorithme. La deuxième étape consiste à traiter les images à l’aide d’un objet parameters qui gère les tampons d’entrée et de sortie et les paramètres d’interpolation. Les développeurs devront déterminer s’ils souhaitent précalculer le flux optique, un processus coûteux en termes de calcul, car il peut avoir un impact sur les performances des apps.
- 11:16 - Exemple d’utilisation : effet de flou de mouvement
Le flou de mouvement dans le montage vidéo simule une vitesse d’obturation lente, floutant les objets en mouvement pour rendre le mouvement naturel et ajouter de la vitesse. Vous pouvez l’appliquer en utilisant la classe 'VTMotionBlurConfiguration', nécessitant deux images de référence (la suivante et la précédente) avec une intensité de flou réglable comprise entre 1 et 100.
- 13:46 - Exemple d’utilisation : effet de super résolution à latence faible
La super résolution à faible latence améliore les flux vidéo en temps réel en augmentant la résolution. Ce processus implique deux classes simples : une classe de configuration et une classe de paramètres. Un exemple montre comment ces fonctionnalités améliorent la clarté d’un appel vidéo.
- 14:55 - Exemple d’utilisation : Interpolation d’images à latence faible
L’interpolation d’images à faible latence permet d’améliorer les flux vidéo en temps réel, en particulier sur les connexions lentes, en éliminant les saccades et en rendant les flux plus agréables à regarder. L’API propose également un filtre qui combine le doublement de la fréquence d’images et l’amélioration de la résolution, ce qui permet d’obtenir des traits du visage et des fonds plus nets ainsi que des flux plus fluides. En plus de ces fonctionnalités, l’API vous permet de créer des applications captivantes avec des fonctionnalités telles que le ralenti, le flou de mouvement et des expériences améliorées de streaming en direct.