Processeur média (Swift)

Vous pouvez utiliser des transformateurs préconstruits dans la bibliothèque du processeur multimédia de Vonage ou créer votre propre transformateur audio ou vidéo personnalisé pour l'appliquer à la vidéo publiée. ou vidéo personnalisé à appliquer à la vidéo publiée.

Vous pouvez utiliser le OTPublisherKit.audioTransformers et OTPublisherKit.videoTransformers pour appliquer des transformateurs audio et vidéo à un flux.

Important : Les transformations des médias ne sont pas prises en charge sur tous les appareils. Voir exigences du client.

Le SDK iOS de Vonage Video comprend deux façons d'implémenter les transformateurs :

Exigences du client

Les transformateurs de la médiathèque de Vonage sont pris en charge par le chipset Apple A11 Bionic et plus, sur les combinaisons appareil-système d'exploitation suivantes :

Dispositif Système d'exploitation pris en charge
iPhone 11 et supérieur iOS 13 et plus
iPad Air 4 et supérieur iPadOS 14.1 et supérieur
iPad mini 5ème génération et plus iPadOS 14 et supérieur
iPad Pro 5ème génération ou plus iPadOS 14.5 ou supérieur
iPhone SE 2ème génération et plus iOS 13.4 ou supérieur

Tester sur d'autres appareils pour vérifier la prise en charge.

Les transformateurs nécessitent un processeur adéquat. Même sur les appareils pris en charge, les transformateurs peuvent ne pas être stables lorsque les processus d'arrière-plan limitent les ressources de traitement disponibles. Les mêmes limitations peuvent s'appliquer aux transformateurs de médias personnalisés en plus des transformateurs de la médiathèque de Vonage.

iOS peut limiter les performances du processeur pour économiser de l'énergie (par exemple, pour prolonger la durée de vie de la batterie). Cela peut entraîner des performances sous-optimales du transformateur et introduire des artefacts audio ou vidéo indésirables. Nous recommandons de désactiver le mode basse consommation dans de tels cas.

De nombreuses transformations vidéo (telles que le flou d'arrière-plan) utilisent la segmentation pour séparer le locuteur de l'arrière-plan. Pour obtenir les meilleurs résultats, utilisez un éclairage adéquat et un arrière-plan simple. Un éclairage insuffisant ou des arrière-plans complexes peuvent provoquer des artefacts vidéo (par exemple, l'orateur ou un chapeau qu'il porte peuvent être flous en même temps que l'arrière-plan).

Vous devez effectuer des tests de référence sur le plus grand nombre possible d'appareils pris en charge, quelle que soit la transformation.

Intégration de la médiathèque de Vonage

En raison de l'augmentation significative de la taille lors de l'intégration de la bibliothèque Vonage Media dans le SDK, à partir de OpenTok SDK v2.27.4, les transformateurs de médias sont disponibles via la bibliothèque Vonage Media opt-in. Cette bibliothèque doit être explicitement ajoutée au projet.

La médiathèque de Vonage était initialement intégrée à OpenTok SDK. Si votre version d'OpenTok SDK est antérieure à la version 2.27.4, passez directement à la section Application d'un transformateur vidéo à partir de la médiathèque de Vonage et Application d'un transformateur audio à partir de la médiathèque de Vonage.

La médiathèque de Vonage peut être intégrée à l'aide du gestionnaire de paquets Swift ou de CocoaPods :

Gestionnaire de paquets Swift

Vous pouvez ajouter les transformateurs vidéo VonageClientSDK en ajoutant le fichier Transformateurs vidéo du Client SDK de Vonage en tant que dépendance d'un paquet Swift.

Pour ajouter une dépendance à un paquet à votre projet Xcode, sélectionnez Fichier > Forfaits Swift > Ajouter une dépendance de paquetage et saisissez l'URL de son référentiel.

Cocoapodes

La médiathèque de Vonage est disponible sous la forme du pod "VonageClientSDKVideoTransformers", pour utiliser avec CocoaPods.

ℹ️ Si un appel à [OTVideoTransformer initWithName:properties:] ou [OTAudioTransformer initWithName:properties:] est effectué sans charger la bibliothèque, le transformateur retourné sera nul. Une exception sera levée avec le code d'erreur suivant 0x0A000006 - OTC_MEDIA_TRANSFORMER_OPENTOK_TRANSFORMERS_LIBRARY_NOT_LOADED.

Application d'un transformateur vidéo à partir de la médiathèque de Vonage

Utiliser le [OTVideoTransformer initWithName:properties:] pour créer un transformateur vidéo qui utilise un transformateur nommé de la médiathèque de Vonage.

Deux transformateurs sont pris en charge :

  • Flou d'arrière-plan. Pour ce filtre, le paramètre name au paramètre "BackgroundBlur". Et fixer un properties à une chaîne JSON. Le format JSON est "{"radius" : "None"}". Les valeurs valides pour le paramètre radius sont "None", "High" et "Low". Si vous définissez la propriété radius à "Custom", ajoutez un custom_radius à la propriété JSON chaîne de caractères : "{"radius" : "Custom", "custom_radius" : "value"}" (où custom_radius est un nombre entier positif définissant le rayon du flou).

    var backgroundBlur = new OTVideoTransformer()
    backgroundBlur.init(name: "BackgroundBlur", properties:"{\"radius\":\"High\"}")
    var myVideoTransformers = [backgroundBlur]
    publisher.videoTransformers = myVideoTransformers
    
  • Remplacement des antécédents. Pour ce filtre, le paramètre name au paramètre "BackgroundReplacement". Et fixer un properties à une chaîne JSON. Le format JSON est "{"chemin_du_fichier_image" : "chemin/vers/image"}", où image_file_path est le chemin d'accès absolu à une image locale à utiliser comme arrière-plan virtuel. Les formats d'image pris en charge sont PNG et JPEG.

    var backgroundReplacement = new OTVideoTransformer()
    backgroundReplacement.init(name: "BackgroundReplacement", properties:"{\"image_file_path\":\"path-to-image\"}")
    var myVideoTransformers = [backgroundReplacement]
    publisher.videoTransformers = myVideoTransformers
    

Application d'un transformateur audio à partir de la médiathèque de Vonage

Utiliser le [OTAudioTransformer initWithName:properties:] pour créer un transformateur vidéo qui utilise un transformateur nommé de la médiathèque de Vonage.

Un transformateur est pris en charge :

  • Suppression du bruit. Pour ce filtre, le paramètre name au paramètre "NoiseSuppression". Régler le properties à une chaîne JSON définissant les propriétés du transformateur. Pour le transformateur de suppression de bruit, ce JSON ne contient aucune propriété pour le moment. Donnez-lui la valeur d'une chaîne vide "".

    var noiseSuppression = new OTAudioTransformer()
    noiseSuppression.init(name: "NoiseSuppression", properties:"")
    var myAudioTransformers = [noiseSuppression]
    publisher.audioTransformers = myAudioTransformers
    

Création d'un transformateur vidéo personnalisé

Créez une classe qui met en œuvre la méthode OTCustomVideoTransformer protocole. Mettre en œuvre le OTCustomVideoTransformer.transform() en appliquant une transformation à la OTVideoFrame transmis à la méthode. L'objet OTCustomVideoTransformer.transform() est déclenchée pour chaque image vidéo.

Réglez ensuite le OTPublisherKit.videoTransformers à un tableau comprenant l'objet qui implémente l'interface OTCustomVideoTransformer.

Vous pouvez combiner le transformateur de la médiathèque de Vonage (voir la section précédente) avec des transformateurs personnalisés ou appliquer plusieurs transformateurs personnalisés en ajoutant plusieurs objets OTPublisherKit.VideoTransformer au tableau utilisé. plusieurs transformateurs personnalisés en ajoutant plusieurs objets OTPublisherKit.VideoTransformer au tableau utilisé pour le OTPublisherKit.videoTransformers propriété.

Création d'un transformateur audio personnalisé

Créez une classe qui met en œuvre la méthode OTCustomAudioTransformer protocole. Mettre en œuvre le OTCustomAudioTransformer.transform() en appliquant une transformation à la OTAudioData transmis à la méthode. L'objet OTCustomAudioTransformer.transform() est déclenchée pour chaque trame audio.

Réglez ensuite le OTPublisherKit.audioTransformers à un tableau qui inclut l'objet qui implémente l'interface CustomAudioTransformer :

Vous pouvez appliquer plusieurs transformateurs personnalisés en ajoutant plusieurs objets PublisherKit.AudioTransformer au tableau utilisé pour le OTPublisherKit.audioTransformers propriété.

Nettoyage des transformateurs vidéo pour un éditeur

Pour supprimer les transformateurs vidéo d'un éditeur, définissez le paramètre OTPublisherKit.videoTransformers à un tableau vide.

publisher.videoTransformers = [];

Nettoyage de transformateurs audio pour un éditeur

Pour supprimer les transformateurs audio d'un éditeur, définissez le paramètre OTPublisherKit.audioTransformers à un tableau vide.

publisher.audioTransformers = [];

Exemple d'application

Voir cet échantillon au vonage-video-ios-sdk-samples sur GitHub.