Medienprozessor (Swift)
Sie können vorgefertigte Transformatoren in der Vonage Media Processor-Bibliothek verwenden oder Ihre eigenen benutzerdefinierten Audio- oder oder Videotransformator erstellen, der auf veröffentlichte Videos angewendet wird.
Sie können die OTPublisherKit.audioTransformers und OTPublisherKit.videoTransformers
Eigenschaften, um Audio- und Videotransformatoren auf einen Stream anzuwenden.
Das ist wichtig: Die Medienumwandlung wird nicht von allen Geräten unterstützt. Siehe Kundenanforderungen.
Das Vonage Video iOS SDK bietet zwei Möglichkeiten zur Implementierung von Transformatoren:
Mäßig - Für Videos können Sie die Videotransformatoren Hintergrundunschärfe und Hintergrundersetzung anwenden, die in der Datei Vonage-Mediathek. Siehe Anwenden eines Videotransformators aus der Vonage-Medienbibliothek. Für Audio können Sie den Audioübertrager mit Rauschunterdrückung verwenden, der in der Vonage-Mediathek. Siehe Anwenden eines Audiotransformators aus der Vonage-Medienbibliothek.
Fortgeschrittene - Sie können Ihre eigene kundenspezifische Videoübertrager und kundenspezifische Audio-Transformatoren.
Anforderungen des Kunden
Die Transformatoren aus der Vonage-Mediathek werden auf dem Apple A11 Bionic-Chipsatz und höher auf den folgenden Geräte-Betriebssystem-Kombinationen unterstützt:
| Gerät | Unterstützte Betriebssysteme |
|---|---|
| iPhone 11 und höher | iOS 13 und höher |
| iPad Air 4 und höher | iPadOS 14.1 und höher |
| iPad mini 5. Generation und höher | iPadOS 14 und höher |
| iPad Pro 5. Generation oder höher | iPadOS 14.5 oder höher |
| iPhone SE 2. Generation und höher | iOS 13.4 oder höher |
Testen Sie auf anderen Geräten, um die Unterstützung zu prüfen.
Transformatoren erfordern eine angemessene Prozessorunterstützung. Selbst auf unterstützten Geräten sind Transformatoren möglicherweise nicht stabil, wenn Hintergrundprozesse die verfügbaren Verarbeitungsressourcen begrenzen. Die gleichen Einschränkungen können für benutzerdefinierte Medientransformatoren zusätzlich zu den Transformatoren aus der Vonage-Medienbibliothek gelten.
iOS kann die CPU-Leistung drosseln, um Energie zu sparen (z. B. um die Lebensdauer der Batterie zu verlängern). Dies kann zu einer suboptimalen Transformatorleistung führen und unerwünschte Audio- oder Videoartefakte verursachen. Wir empfehlen, den Energiesparmodus in solchen Fällen zu deaktivieren.
Viele Videotransformationen (z. B. Hintergrundunschärfe) verwenden Segmentierung, um den Sprecher vom Hintergrund zu trennen. Die besten Ergebnisse erzielen Sie, wenn Sie eine gute Beleuchtung und einen einfachen Hintergrund verwenden. Unzureichende Beleuchtung oder komplexe Hintergründe können Videoartefakte verursachen (z. B. kann der Sprecher oder ein Hut, den der Sprecher trägt, zusammen mit dem Hintergrund verschwimmen).
Sie sollten Benchmark-Tests auf so vielen unterstützten Geräten wie möglich durchführen, unabhängig von der Transformation.
Integration der Vonage-Mediathek
Aufgrund der erheblich gestiegenen Größe bei der Integration der Vonage Media Library in das SDK sind die Media Transformers ab OpenTok SDK v2.27.4 über die opt-in Vonage Media Library verfügbar. Diese Bibliothek muss explizit zum Projekt hinzugefügt werden.
Die Vonage Medienbibliothek war ursprünglich in OpenTok SDK eingebettet. Wenn Ihre OpenTok SDK-Version älter als 2.27.4 ist, wechseln Sie direkt zu Anwenden eines Videotransformators aus der Vonage-Medienbibliothek und Anwenden eines Audiotransformators aus der Vonage-Medienbibliothek.
Die Vonage Media Library kann entweder mit dem Swift Package Manager oder mit CocoaPods integriert werden:
Swift-Paketmanager
Sie können die VonageClientSDK Video Transformers hinzufügen, indem Sie die Vonage Client SDK Video-Transformatoren Repository als eine Swift-Paketabhängigkeit.
Um eine Paketabhängigkeit zu Ihrem Xcode-Projekt hinzuzufügen, wählen Sie Datei > Schnelle Pakete > Paketabhängigkeit hinzufügen und geben Sie die URL des Repositorys ein.
Kokospalmen
Die Vonage Medienbibliothek ist als Pod "VonageClientSDKVideoTransformers" verfügbar, für Verwendung mit CocoaPods.
ℹ️
Wenn ein Aufruf an [OTVideoTransformer initWithName:properties:] oder [OTAudioTransformer initWithName:properties:] durchgeführt wird, ohne die Bibliothek zu laden, ist der zurückgegebene Transformator null. Es wird eine Ausnahme mit dem folgenden Fehlercode ausgelöst 0x0A000006 - OTC_MEDIA_TRANSFORMER_OPENTOK_TRANSFORMERS_LIBRARY_NOT_LOADED.
Anwenden eines Videotransformators aus der Vonage-Medienbibliothek
Verwenden Sie die [OTVideoTransformer initWithName:properties:]
Methode, um einen Videotransformer zu erstellen, der einen benannten Transformer aus der Vonage-Medienbibliothek verwendet.
Es werden zwei Transformatoren unterstützt:
Hintergrundunschärfe. Für diesen Filter setzen Sie den
nameParameter zu"BackgroundBlur". Und setzen Sie einepropertiesin eine JSON-Zeichenkette um. Das Format des JSON ist "{"radius": "None"}". Gültige Werte für denradiussind "Keine", "Hoch" und "Niedrig". Wenn Sie die EigenschaftradiusEigenschaft auf "Benutzerdefiniert", fügen Sie einecustom_radiusEigenschaft an die JSON Zeichenfolge: "{"radius": "Custom", "custom_radius": "value"}" (wobeicustom_radiusist eine positive ganze Zahl die den Unschärferadius definiert).var backgroundBlur = new OTVideoTransformer() backgroundBlur.init(name: "BackgroundBlur", properties:"{\"radius\":\"High\"}") var myVideoTransformers = [backgroundBlur] publisher.videoTransformers = myVideoTransformersHintergrundaustausch. Für diesen Filter setzen Sie den
nameParameter zu"BackgroundReplacement". Und setzen Sie einepropertiesParameter in eine JSON-Zeichenfolge umgewandelt. Das Format des JSON-Strings ist "{"image_file_path": "path/to/image"}", wobeiimage_file_pathist der absolute Dateipfad eines lokalen Bildes, das als virtueller Hintergrund verwendet werden soll. Unterstützte Bildformate sind PNG und JPEG.var backgroundReplacement = new OTVideoTransformer() backgroundReplacement.init(name: "BackgroundReplacement", properties:"{\"image_file_path\":\"path-to-image\"}") var myVideoTransformers = [backgroundReplacement] publisher.videoTransformers = myVideoTransformers
Anwenden eines Audiotransformators aus der Vonage-Medienbibliothek
Verwenden Sie die [OTAudioTransformer initWithName:properties:]
Methode, um einen Videotransformer zu erstellen, der einen benannten Transformer aus der Vonage-Medienbibliothek verwendet.
Es wird ein Transformator unterstützt:
Geräuschunterdrückung. Für diesen Filter setzen Sie den
nameParameter zu"NoiseSuppression". Setzen Sie diepropertiesauf eine JSON-Zeichenkette, die Eigenschaften für den Transformator definiert. Für den Rauschunterdrückungstransformator enthält diese JSON-Zeichenkette derzeit keine Eigenschaften. Setzen Sie ihn auf eine leere Zeichenfolge"".var noiseSuppression = new OTAudioTransformer() noiseSuppression.init(name: "NoiseSuppression", properties:"") var myAudioTransformers = [noiseSuppression] publisher.audioTransformers = myAudioTransformers
Erstellen eines benutzerdefinierten Videotransformators
Erstellen Sie eine Klasse, die die OTCustomVideoTransformer
Protokoll. Implementieren Sie das OTCustomVideoTransformer.transform() Methode, die Anwendung einer Transformation auf die OTVideoFrame Objekt, das an die Methode übergeben wird. Die OTCustomVideoTransformer.transform() Methode wird für jedes Videobild ausgelöst.
Stellen Sie dann die OTPublisherKit.videoTransformers Eigenschaft auf ein Array, das das Objekt enthält, das die
OTCustomVideoTransformer-Schnittstelle implementiert.
Sie können den Transformator der Vonage-Medienbibliothek (siehe vorheriger Abschnitt) mit benutzerdefinierten Transformatoren kombinieren oder
mehrere benutzerdefinierte Transformatoren anwenden, indem Sie mehrere OTPublisherKit.VideoTransformer-Objekte zu dem Array hinzufügen, das
für die OTPublisherKit.videoTransformers Eigentum.
Erstellen eines benutzerdefinierten Audiotransformators
Erstellen Sie eine Klasse, die die OTCustomAudioTransformer
Protokoll. Implementieren Sie das OTCustomAudioTransformer.transform() Methode, die Anwendung einer Transformation auf die OTAudioData Objekt, das an die Methode übergeben wird. Die OTCustomAudioTransformer.transform() Methode wird für jeden Audio-Frame ausgelöst.
Stellen Sie dann die OTPublisherKit.audioTransformers Eigenschaft auf ein Array, das das Objekt enthält, das die
CustomAudioTransformer-Schnittstelle implementiert:
Sie können mehrere benutzerdefinierte Transformatoren anwenden, indem Sie mehrere PublisherKit.AudioTransformer-Objekte zu dem Array hinzufügen, das für
für die OTPublisherKit.audioTransformers Eigentum.
Clearing von Videotransformatoren für einen Verlag
Um Videotransformatoren für einen Verlag zu löschen, setzen Sie den OTPublisherKit.videoTransformers Eigenschaft auf ein leeres Array.
publisher.videoTransformers = [];
Clearing von Audio-Transformatoren für einen Verlag
Um Audiotransformatoren für einen Verlag zu löschen, setzen Sie den OTPublisherKit.audioTransformers Eigenschaft auf ein leeres Array.
publisher.audioTransformers = [];
Beispiel-Applikation
Siehe diese Probe am vonage-video-ios-sdk-samples Repo auf GitHub.