Medienprozessor (Web)
Verwenden Sie die Vonage Media Processor-Bibliothek, um benutzerdefinierte Transformationen auf veröffentlichte Streams anzuwenden.
Sie können die Publisher.setAudioMediaProcessorConnector() und Publisher.setVideoMediaProcessorConnector() Methoden zur Anwendung benutzerdefinierter Audio- und Videotransformatoren, die die Vonage Media Processor-Bibliothek verwenden.
Es gibt drei Möglichkeiten, Transformatoren zu implementieren:
- Grundlegend: Verwenden Sie die
Publisher.applyVideoFilter()Methode, um den vordefinierten Filter für die Hintergrundunschärfe oder die Hintergrundersetzung einfach anzuwenden. Diese Methode implementiert diese Filter mithilfe der Vonage-Medienbibliothek und erfordert nur wenige Konfigurationseinstellungen:
await publisher.applyVideoFilter({
type: 'backgroundBlur',
blurStrength: 'high',
});
- Mäßig: Sie können Transformatoren aus dem Vonage ML Transformatoren-Bibliothek.
const config = {
transformerType: 'VirtualBackground',
backgroundAssetUri: 'https://MY_IMAGE_URL',
};
const processor = await createVonageMediaProcessor(config);
publisher.setVideoMediaProcessorConnector(processor.getConnector());
Siehe die Ersetzen von Hintergrundbildern und Hintergrundunschärfe Beispielanwendungen.
- Fortgeschrittene: Sie können Ihre eigene Transformatorklasse schreiben, die die Transformator Klasse:
class OverlayTextTransformer implements Transformer {
// transform function must be implemented.
transform(frame:any, controller:TransformStreamDefaultController) {
// This will be more complicated in a real-world transformer...
this.startCtx_.drawImage(frame, 0, 0, .., ..,)
this.startCtx_.font = "30px Arial";
this.startCtx_.fillText(this.message_, 50, 150);
frame.close();
controller.enqueue(new VideoFrame(this.startCanvas_, {timestamp, alpha: 'discard'}));
}
}
const transformer = new OverlayTextTransformer('Hello World');
const transformers = [ transformer ]
const mediaProcessor = new MediaProcessor();
mediaProcessor.setTransformers(transformers);
const mediaProcessorConnector = new MediaProcessorConnector(mediaProcessor);
publisher.setVideoMediaProcessorConnector(mediaProcessorConnector);
Anmerkung: Medienumwandlungen werden nicht auf allen Geräten unterstützt. Siehe Unterstützte Browser.
Die Vonage Medienprozessor Bibliothek, verfügbar unter npmerleichtert die Nutzung des Einfügbare Ströme API zur Durchführung von Transformationsvorgängen an Video- und Audiospuren.
Die Bibliothek umfasst zwei Schlüsselklassen:
- MediaProzessor - Steuert Transformatoren und enthält einen setTransformers() Methode, mit der Sie Transformatoren festlegen können.
- MediaProcessorConnector - Akzeptiert eine
MediaProcessorObjekt in seinem Konstruktor und behandelt Eingabe- und Ausgabespuren. Die OpenTok.js-Implementierung verwaltet die Spuren. Sie müssen nur dieMediaProcessorConnectorInstanz.
Zur Verwendung eines MediaProcessorConnector um einen Transformator an das Audio- oder Videosystem eines Verlags anzuschließen, verwenden Sie die Publisher.setAudioMediaProcessorConnector() und Publisher.setVideoMediaProcessorConnector() Methoden.
Publisher.setVideoMediaProcessorConnector() Methode
Die Publisher.setVideoMediaProcessorConnector() Methode wendet einen Videotransformer auf einen veröffentlichten Stream an:
import { MediaProcessor, MediaProcessorConnector } from '@vonage/media-processor';
import OT from '@vonage/client-sdk-video';
import MyTransformer from './path/to/my-transformer';
const mediaProcessor = new MediaProcessor();
const transformers = [
new MyTransformer(),
];
mediaProcessor.setTransformers(transformers);
const connector = new MediaProcessorConnector(mediaProcessor);
const publisher = OT.initPublisher('targetDiv', () => {
publisher.setVideoMediaProcessorConnector(connector);
});
Anmerkung: Die Publisher.setVideoMediaProcessorConnector() Methode ist nicht kompatibel mit der Publisher.applyVideoFilter() Methode.
Publisher.setAudioMediaProcessorConnector() Methode
Die Publisher.setAudioMediaProcessorConnector() wendet einen Audiotransformator auf einen veröffentlichten Stream an:
import { MediaProcessor, MediaProcessorConnector } from '@vonage/media-processor';
import OT from '@vonage/client-sdk-video';
import MyTransformer from './path/to/my-transformer';
const mediaProcessor = new MediaProcessor();
const transformers = [
new MyTransformer(),
];
mediaProcessor.setTransformers(transformers);
const connector = new MediaProcessorConnector(mediaProcessor);
const publisher = OT.initPublisher('targetDiv', () => {
publisher.setAudioMediaProcessorConnector(connector);
});
Anforderungen des Kunden
Die API für einfügbare Ströme, die von der
Publisher.setVideoMediaProcessorConnector() und Publisher.setAudioMediaProcessorConnector()
Methoden werden nur in neueren Versionen von Chrome, Electron, Opera, Samsung Internet, Edge und WebView Android unterstützt. Sie wird nicht unterstützt
in anderen (nicht-Chromium-basierten) Browsern oder auf iOS. Sie können überprüfen, ob der Client diese Funktion unterstützt, indem Sie die
OT.hasMediaProcessorSupport()
Methode.
Transformatoren erfordern eine angemessene Prozessorunterstützung. Selbst in unterstützten Browsern sind Transformatoren möglicherweise nicht stabil, wenn Hintergrundprozesse die verfügbaren Verarbeitungsressourcen begrenzen. Verwenden Sie Chrome (Desktop oder Android) für optimale Ergebnisse.
Stellen Sie sicher, dass die Laptops/Desktops diese Mindestanforderungen erfüllen, um eine optimale Nutzung zu ermöglichen:
- CPU - Intel Core i5 (mit 4 Kernen oder höher) oder Apple Silicon M1 (oder höher)
- 8G RAM (oder mehr)
- Dedizierter Grafikprozessor (z. B. NVIDIA)
Einige Betriebssysteme bieten mehrere Akku-Einstellungen oder Modi an, um Energie zu sparen (z. B. um die Lebensdauer der Laptop-Batterie zu verlängern), indem die CPU-Leistung gedrosselt wird. Dies kann zu einer suboptimalen Transformatorleistung führen und unerwünschte Audio- oder Video-Artefakte verursachen. Wir empfehlen Ihnen, Ihr Betriebssystem so einzustellen, dass es den besten Leistungsmodus verwendet (oder auf nicht Energiesparmodus) in solchen Fällen.
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.
Mehr über Transformatoren und Beispielcode
Weitere Informationen finden Sie in der Vonage Medienprozessor Dokumentation der Bibliothek.
Die video-api-web-samples Repo enthält die folgenden Beispielanwendungen, die die Vonage Media Processor-Bibliothek verwenden, um Transformationen auf in OpenTok.js veröffentlichte Streams anzuwenden:
- Basis-Audio-Transformator - Zeigt, wie man einen Audiotransformer mit einem Webworker und einem separaten Thread für den Webworker anwendet.
- Basis-Video-Transformator - Zeigt, wie man einen Videotransformer mit einer Leinwand, einem Webworker und einem separaten Thread für den Webworker anwendet.
- Zeigt, wie man einen einfachen Transformator verwendet, um den Herausgeber zu vergrößern.
- Moderat-Hintergrund-Schleier - Zeigt, wie man einen Videotransformator aus dem
@vonage/ml-transformersModul.
Es gibt weitere Beispiele, die die Vonage Media Transformers Bibliothek verwenden hier.
Weitere Optionen zur Anpassung der Benutzeroberfläche
Weitere Optionen zum Anpassen der Benutzeroberfläche finden Sie im Abschnitt Anpassen der Benutzeroberfläche Leitfaden.