Processeur média (iOS)
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 :
Modéré - Pour les vidéos, vous pouvez appliquer le transformateur vidéo de flou d'arrière-plan inclus dans la médiathèque de Vonage. Voir Application d'un transformateur vidéo à partir de la médiathèque de Vonage.
Avancé - Vous pouvez créer votre propre transformateurs vidéo personnalisés et transformateurs audio sur mesure.
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
nameau paramètre"BackgroundBlur". Et fixer unpropertiesà une chaîne JSON. Le format JSON est "{"radius" : "None"}". Les valeurs valides pour le paramètreradiussont "None", "High" et "Low". Si vous définissez la propriétéradiusà "Custom", ajoutez uncustom_radiusà la propriété JSON chaîne de caractères : "{"radius" : "Custom", "custom_radius" : "value"}" (oùcustom_radiusest un nombre entier positif définissant le rayon du flou).NSMutableArray * myVideoTransformers = [[NSMutableArray alloc] init]; OTVideoTransformer *backgroundBlur = [[OTVideoTransformer alloc] initWithName:@"BackgroundBlur" properties:@"{\"radius\":\"High\"}"]; [myVideoTransformers addObject:backgroundBlur]; _publisher.videoTransformers = [[NSArray alloc] initWithArray:myVideoTransformers];Remplacement des antécédents. Pour ce filtre, le paramètre
nameau paramètre"BackgroundReplacement". Et fixer unpropertiesà une chaîne JSON. Le format JSON est "{"chemin_du_fichier_image" : "chemin/vers/image"}", oùimage_file_pathest 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.NSMutableArray * myVideoTransformers = [[NSMutableArray alloc] init]; OTVideoTransformer *backgroundReplacement = [[OTVideoTransformer alloc] initWithName:@"BackgroundReplacement" properties:@"{\"image_file_path\":\"path-to-image\"}]; [myVideoTransformers addObject:backgroundReplacement]; _publisher.videoTransformers = [[NSArray alloc] initWithArray: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
nameau paramètre"NoiseSuppression". Régler lepropertiesà 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"".
Création d'un transformateur vidéo personnalisé
Créez une classe qui met en œuvre la méthode OTCustomVideoTransformer protocole. Implémenter la méthode `[OTCVideoTransformer transform :]`, en appliquant une transformation à l'objet `OTVideoFrame` passé dans la méthode. La méthode `[OTCustomVideoTransformer transform :]` est déclenchée pour chaque image vidéo :
@interface CustomTransformer : NSObject <OTCustomVideoTransformer>
@end
@implementation CustomTransformer
- (void)transform:(nonnull OTVideoFrame *)videoFrame {
OTPixelFormat pixelFormat = videoFrame.format.pixelFormat;
int strides[] =
{
[videoFrame getPlaneStride:0],
[videoFrame getPlaneStride:2],
[videoFrame getPlaneStride:1]
};
uint8_t* planes[] =
{
[videoFrame getPlaneBinaryData:0],
[videoFrame getPlaneBinaryData:2],
[videoFrame getPlaneBinaryData:1]
};
[videoFrame convertInPlace:pixelFormat planes:planes strides:strides];
}
@end
Réglez ensuite le OTPublisherKit.videoTransformers à un tableau qui inclut l'objet qui implémente l'interface
OTCustomVideoTransformer :
Vous pouvez combiner le transformateur de la bibliothèque Vonage Media (voir la section précédente) avec des transformateurs personnalisés ou appliquer des transformateurs personnalisés multiples en ajoutant plusieurs objets PublisherKit.VideoTransformer à la liste ArrayList utilisée.
plusieurs transformateurs personnalisés en ajoutant plusieurs objets PublisherKit.VideoTransformer à l'ArrayList utilisée
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.
est déclenchée pour chaque trame audio. L'exemple suivant applique un simple limiteur d'amplitude sur
l'audio :
@interface CustomAudioTransformer : NSObject <OTCustomAudioTransformer>
@end
@implementation CustomAudioTransformer
- (void)transform:(nonnull OTAudioData *)audioData {
int CROP_LIMIT = 32767 * 0.05;
int samplesPerChannel = (int)audioData.numberOfSamples * (int)audioData.numberOfChannels;
int16_t* buffer = audioData.sampleBuffer;
for (int s = 0; s < samplesPerChannel; ++s) {
int sample = buffer[s];
NSLog(@"CustomAudioTransformer. Samples %d", sample);
if (sample > CROP_LIMIT)
buffer[s] = CROP_LIMIT;
else if (sample < -CROP_LIMIT)
buffer[s] = -CROP_LIMIT;
}
}
@end
Réglez ensuite le OTPublisherKit.audioTransformers à un tableau qui inclut l'objet qui implémente l'interface
CustomAudioTransformer :
CustomAudioTransformer* customAudioTransformer;
ArrayList<PublisherKit.AudioTransformer> audioTransformers = new ArrayList<>();
customAudioTransformer = [CustomAudioTransformer alloc];
OTAudioTransformer *audiotrans = [[OTAudioTransformer alloc] initWithName:@"audio"
transformer:customAudioTransformer];
NSMutableArray * myAudioTransformers = [[NSMutableArray alloc] init];
[myAudioTransformers addObject:audiotrans];
_publisher.audioTransformers = [[NSArray alloc] initWithArray:myAudioTransformers];
Vous pouvez appliquer plusieurs transformateurs personnalisés en ajoutant plusieurs objets OTPublisherKit.AudioTransformer à l'ArrayList utilisée
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.
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.
Exemple d'application
Voir cet échantillon
à la opentok-ios-sdk-samples sur GitHub.