-
ALLGEMEINER STAND DER TECHNIK
-
Gebiet der Offenbarung
-
Die Technologie der Offenbarung betrifft allgemein interaktive Web-Real-Time-Communications(WebRTC)-Sitzungen.
-
Technischer Hintergrund
-
Web Real-Time Communications (WebRTC) verkörpert eine laufende Bemühung um die Entwicklung von Industriestandards zum Integrieren von Echtzeitkommunikationsfunktionalität in Webclients, etwa Webbrowsern, um direkte Interaktion mit anderen Webclients zu ermöglichen. Diese Echtzeitkommunikationsfunktionalität ist für Webentwickler über Standardauszeichnungs-Tags zugänglich, etwa diejenigen, die durch Version 5 der Hypertext Markup Language (HTML5) bereitgestellt werden, und über clientseitige Skript-Anwendungsprogrammierschnittstellen (APIs) wie JavaScript-APIs. Weitere Informationen zu WebRTC finden sich in „WebRTC: APIs and RTCWEB Protocols of the HTML5 Real-Time Web“ von Alan B. Johnston und Daniel C. Burnett (2012 Digital Codex LLC), das durch Bezugnahme in seinem vollen Umfang hierin aufgenommen wird.
-
WebRTC stellt integrierte Fähigkeiten zum Herstellen von Echtzeitvideo-, -audio- und/oder -datenströmen sowohl bei interaktiven Punkt-zu-Punkt-Sitzungen als auch bei interaktiven Mehr-Teilnehmer-Sitzungen bereit. Die WebRTC-Standards werden derzeit vom World Wide Web Consortium (W3C) und von der Internet Engineering Task Force (IETF) gemeinsam entwickelt. Informationen zum derzeitigen Stand der WebRTC-Standards finden sich z. B. unter http://www.w3c.org und http://www.ietf.org. Aus PERKINS, C., WESTERLUND, M., OTT, J., „Web Real-Time Communication (WebRTC): Media Transport and USE of RTP“, Network Working Group, Feb. 2013, URL.https://tools.ietf.org/html/draft-ietf-rtcweb-rtp-usage-06 ist es zudem das Empfangen eines WebRTC-Angebot-Antwort-Austausches zwischen einem ersten WebRTC.Client und einem zweiten WEbRTC-Client durch einen WebRTC-Server, der auf einer Computereinrichtung ausgeführt wird, bekannt.
-
Um eine interaktive WebRTC-Sitzung (z. B. einen Echtzeitvideo-, -audio- und/oder -datenaustausch) herzustellen, können zwei Webclients WebRTC-fähige Webanwendungen, etwa HTML5/JavaScript-Webanwendungen, von einem WebRTC-Anwendungsserver abrufen. Durch die Webanwendungen nehmen die zwei Webclients eine Medienaushandlung auf, um zu kommunizieren und eine Vereinbarung über Parameter, die Eigenschaften der interaktiven WebRTC-Sitzung definieren, zu erzielen. Diese Medienaushandlung ist bekannt als WebRTC-„Angebot-Antwort“-Austausch. Bei einem Angebot-Antwort-Austausch sendet ein erster Webclient, der auf einer Sendercomputereinrichtung betrieben wird, ein „Angebot“ an einen zweiten Webclient auf einer Empfängercomputereinrichtung. Das Angebot beinhaltet ein WebRTC-Sitzungsbeschreibungsobjekt, das Medientypen und -fähigkeiten spezifiziert, die der erste Webclient unterstützt und zur Nutzung bei der interaktiven WebRTC-Sitzung vorzieht. Der zweite Webclient meldet sich dann mit einer WebRTC-Sitzungsbeschreibungsobjekt-„Antwort“ zurück, die angibt, welche der angebotenen Medientypen und -fähigkeiten er unterstützt und für die interaktive WebRTC-Sitzung akzeptiert. Sobald der WebRTC-Angebot-Antwort-Austausch abgeschlossen ist, können die Webclients dann eine direkte Peerverbindung zueinander herstellen und können mit einem Echtzeitaustausch von Medien oder Daten beginnen. Die Peerverbindung zwischen den Webclients verwendet typischerweise das Secure Real-Time Transport Protocol (SRTP), um Echtzeitmedienflüsse zu transportieren, und kann verschiedene andere Protokolle für Echtzeitdatenaustausch einsetzen.
-
Jedoch ist eine Peer-to-Peer-Architektur unter manchen Umständen möglicherweise nicht optimal für Echtzeitinteraktion. Beispielsweise ist es möglicherweise nötig, Aufzeichnen oder Überwachen des interaktiven WebRTC-Flusses bereitzustellen und/oder bekannte Inkompatibilitäten zwischen Webclients an Endpunkten des interaktiven WebRTC-Flusses anzugehen. Die WebRTC-Standards sehen vor, dass ein interaktiver WebRTC-Fluss in Situationen, in denen keine direkte Peerverbindung möglich ist, durch einen TURN(Traversal Using Relay around NAT)-Server geroutet wird. Jedoch ist ein interaktiver WebRTC-Fluss, der durch einen TURN-Server läuft, verschlüsselt und kann daher am TURN-Server nicht untersucht oder überwacht werden. Ferner würde Konvertieren eines interaktiven WebRTC-Flusses in ein einfacher handhabbares Format in Echtzeit ein Gateway erfordern, das möglicherweise übermäßig komplex und/oder gewerblich nicht erhältlich ist.
-
KURZE DARSTELLUNG DER DETAILLIERTEN BESCHREIBUNG
-
In der detaillierten Beschreibung offenbarte Ausführungsformen stellen virtuelle Back-to-Back-Web-Real-Time-Communications(WebRTC)-Agenten bereit. Verwandte Verfahren, Systeme und computerlesbare Medien werden ebenfalls offenbart. In einigen Ausführungsformen instanziiert ein WebRTC-Server, durch den zwei oder mehr WebRTC-Clients eine interaktive WebRTC-Sitzung herzustellen versuchen, einen oder mehrere virtuelle WebRTC-Agenten. Der WebRTC-Server kannveranlassen, dass jeder der zwei oder mehr WebRTC-Clients einen interaktiven WebRTC-Fluss zu dem einen oder den mehreren virtuellen WebRTC-Agenten herstellt. Der WebRTC-Server kann die virtuellen WebRTC-Agenten dann aufeinanderfolgend („Back-to-Back“) verbinden, indem er den Inhalt der hergestellten interaktiven WebRTC-Flüsse zwischen oder unter dem einen oder den mehreren virtuellen WebRTC-Agenten leitet. Auf diese Weise kann der WebRTC-Server eine interaktive WebRTC-Sitzung für die zwei oder mehr WebRTC-Clients bereitstellen, während er auch zusätzliche Medienverarbeitungsfunktionalität bereitstellt. Als nicht einschränkende Beispiele beinhaltet die Medienverarbeitungsfunktionalität möglicherweise Aufzeichnen und/oder Überwachen der interaktiven WebRTC-Flüsse, Extrahieren von Inhalt aus oder Einfügen von Inhalt in die interaktiven WebRTC-Flüsse und/oder Beseitigen potenzieller oder tatsächlicher Inkompatibilitäten zwischen den WebRTC-Clients.
-
In diesem Zusammenhang ist in einer Ausführungsform ein Verfahren zum Bereitstellen eines virtuellen Back-to-Back-WebRTC-Agenten bereitgestellt. Das Verfahren umfasst Empfangen eines WebRTC-Angebot-Antwort-Austausches zwischen einem ersten WebRTC-Client und einem zweiten WebRTC-Client durch einen WebRTC-Server, der auf einer Computereinrichtung ausgeführt wird. Das Verfahren umfasst weiter Instanziieren eines oder mehrerer virtueller WebRTC-Agenten. Das Verfahren umfasst auch Herstellen eines ersten interaktiven WebRTC-Flusses zwischen dem ersten WebRTC-Client und einem des einen oder der mehreren virtuellen WebRTC-Agenten und eines zweiten interaktiven WebRTC-Flusses zwischen dem zweiten WebRTC-Client und einem des einen oder der mehreren virtuellen WebRTC-Agenten. Das Verfahren umfasst zusätzlich Leiten eines Inhalts des ersten interaktiven WebRTC-Flusses an den zweiten interaktiven WebRTC-Fluss und eines Inhalts des zweiten interaktiven WebRTC-Flusses an den ersten interaktiven WebRTC-Fluss über den einen oder die mehreren virtuellen WebRTC-Agenten.
-
In einer anderen Ausführungsform ist ein System zum Bereitstellen eines virtuellen Back-to-Back-WebRTC-Agenten bereitgestellt. Das System umfasst mindestens eine Kommunikationsschnittstelle und einen WebRTC-Server, der mit der mindestens einen Kommunikationsschnittstelle assoziiert ist. Der WebRTC-Server umfasst einen WebRTC-Anwendungsanbieter, der konfiguriert ist, um einen WebRTC-Angebot-Antwort-Austausch zwischen einem ersten WebRTC-Client und einem zweiten WebRTC-Client zu empfangen. Der WebRTC-Server umfasst weiter einen virtuellen WebRTC-Agent-Manager. Der virtuelle WebRTC-Agent-Manager ist konfiguriert, um einen oder mehrere virtuelle WebRTC-Agenten zu instanziieren. Der virtuelle WebRTC-Agent-Manager ist weiter konfiguriert, um einen ersten interaktiven WebRTC-Fluss zwischen dem ersten WebRTC-Client und einem des einen oder der mehreren virtuellen WebRTC-Agenten und einen zweiten interaktiven WebRTC-Fluss zwischen dem zweiten WebRTC-Client und einem des einen oder der mehreren virtuellen WebRTC-Agenten herzustellen. Der virtuelle WebRTC-Agent-Manager ist auch konfiguriert, um einen Inhalt des ersten interaktiven WebRTC-Flusses an den zweiten interaktiven WebRTC-Fluss und einen Inhalt des zweiten interaktiven WebRTC-Flusses an den ersten interaktiven WebRTC-Fluss über den einen oder die mehreren virtuellen WebRTC-Agenten zu leiten.
-
In einer anderen Ausführungsform ist ein nicht transientes computerlesbares Medium bereitgestellt. Auf dem nicht transienten computerlesbaren Medium sind computerausführbare Befehle abgelegt, um zu veranlassen, dass ein Prozessor ein Verfahren implementiert, das Empfangen eines WebRTC-Angebot-Antwort-Austausches zwischen einem ersten WebRTC-Client und einem zweiten WebRTC-Client umfasst. Das durch die computerausführbaren Befehle implementierte Verfahren umfasst weiter Instanziieren eines oder mehrerer virtueller WebRTC-Agenten. Das durch die computerausführbaren Befehle implementierte Verfahren umfasst auch Herstellen eines ersten interaktiven WebRTC-Flusses zwischen dem ersten WebRTC-Client und einem des einen oder der mehreren virtuellen WebRTC-Agenten und eines zweiten interaktiven WebRTC-Flusses zwischen dem zweiten WebRTC-Client und einem des einen oder der mehreren virtuellen WebRTC-Agenten. Das durch die computerausführbaren Befehle implementierte Verfahren umfasst zusätzlich Leiten eines Inhalts des ersten interaktiven WebRTC-Flusses an den zweiten interaktiven WebRTC-Fluss und eines Inhalts des zweiten interaktiven WebRTC-Flusses an den ersten interaktiven WebRTC-Fluss über den einen oder die mehreren virtuellen WebRTC-Agenten.
-
KURZE BESCHREIBUNG DER FIGUREN
-
Die beiliegenden Zeichnungsfiguren, die in diese Patentschrift aufgenommen sind und einen Bestandteil von ihr bilden, veranschaulichen diverse Ausgestaltungen der Offenbarung und dienen zusammen mit der Beschreibung dazu, die Prinzipien der Offenbarung zu erläutern.
- 1 ist ein Begriffsschema, das eine interaktive Web-Real-Time-Communications(WebRTC)-Sitzung zwischen zwei WebRTC-Clients über einen WebRTC-Server, der einen virtuellen WebRTC-Agent-Manager beinhaltet, und zwei virtuellen Back-to-Back-WebRTC-Agenten veranschaulicht;
- 2 ist ein Flussdiagramm, das beispielhafte Abläufe des WebRTC-Servers und des virtuellen WebRTC-Agent-Managers von 1 zum Bereitstellen virtueller Back-to-Back-WebRTC-Agenten veranschaulicht;
- 3 ist ein Schema, das beispielhafte Kommunikationsflüsse innerhalb eines beispielhaften Systems, welches den virtuellen WebRTC-Agent-Manager und virtuelle Back-to-Back-WebRTC-Agenten von 1 beinhaltet, veranschaulicht;
- 4 ist ein Begriffsschema, das eine interaktive WebRTC-Sitzung zwischen zwei WebRTC-Clients unter Nutzung eines einzigen, von einem virtuellen WebRTC-Agent-Manager verwalteten virtuellen WebRTC-Agenten einsetzen, veranschaulicht;
- die 5A-5C sind Flussdiagramme, die detailliertere beispielhafte Abläufe zum Bereitstellen virtueller Back-to-Back-WebRTC-Agenten und zusätzlicher Medienverarbeitungsfunktionalität veranschaulichen; und
- 6 ist ein Blockschema eines beispielhaften prozessorbasierten Systems, welches den WebRTC-Server und den virtuellen WebRTC-Agent-Manager von 1 beinhalten kann.
-
DETAILLIERTE BESCHREIBUNG
-
Nunmehr werden mit Bezug auf die Zeichnungsfiguren diverse beispielhafte Ausführungsformen der vorliegenden Offenbarung beschrieben. Das Wort „beispielhaft“ wird hierin in der Bedeutung „als ein Beispiel, ein Beispielsfall oder zur Veranschaulichung dienend“ genutzt. Jede hierin als „beispielhaft“ beschriebene Ausführungsform ist nicht zwangsläufig als gegenüber anderen Ausführungsformen bevorzugt oder vorteilhaft auszulegen.
-
In der detaillierten Beschreibung offenbarte Ausführungsformen stellen virtuelle Back-to-Back-Web-Real-Time-Communications(WebRTC)-Agenten bereit. Verwandte Verfahren, Systeme und computerlesbare Medien werden ebenfalls offenbart. In einigen Ausführungsformen instanziiert ein WebRTC-Server, durch den zwei oder mehr WebRTC-Clients eine interaktive WebRTC-Sitzung herzustellen versuchen, einen oder mehrere virtuelle WebRTC-Agenten. Der WebRTC-Server kann veranlassen, dass jeder der zwei oder mehr WebRTC-Clients einen interaktiven WebRTC-Fluss zu dem einen oder den mehreren virtuellen WebRTC-Agenten herstellt. Der WebRTC-Server kann die virtuellen WebRTC-Agenten dann aufeinanderfolgend („Back-to-Back“) verbinden, indem er den Inhalt der hergestellten interaktiven WebRTC-Flüsse zwischen oder unter dem einen oder den mehreren virtuellen WebRTC-Agenten leitet. Auf diese Weise kann der WebRTC-Server eine interaktive WebRTC-Sitzung für die zwei oder mehr WebRTC-Clients bereitstellen, während er auch zusätzliche Medienverarbeitungsfunktionalität bereitstellt. Als nicht einschränkende Beispiele beinhaltet die Medienverarbeitungsfunktionalität möglicherweise Aufzeichnen und/oder Überwachen der interaktiven WebRTC-Flüsse, Extrahieren von Inhalt aus oder Einfügen von Inhalt in die interaktiven WebRTC-Flüsse und/oder Beseitigen potenzieller oder tatsächlicher Inkompatibilitäten zwischen den WebRTC-Clients.
-
In diesem Zusammenhang ist in einer Ausführungsform ein Verfahren zum Bereitstellen eines virtuellen Back-to-Back-WebRTC-Agenten bereitgestellt. Das Verfahren umfasst Empfangen eines WebRTC-Angebot-Antwort-Austausches zwischen einem ersten WebRTC-Client und einem zweiten WebRTC-Client durch einen WebRTC-Server, der auf einer Computereinrichtung ausgeführt wird. Das Verfahren umfasst weiter Instanziieren eines oder mehrerer virtueller WebRTC-Agenten. Das Verfahren umfasst auch Herstellen eines ersten interaktiven WebRTC-Flusses zwischen dem ersten WebRTC-Client und einem des einen oder der mehreren virtuellen WebRTC-Agenten und eines zweiten interaktiven WebRTC-Flusses zwischen dem zweiten WebRTC-Client und einem des einen oder der mehreren virtuellen WebRTC-Agenten. Das Verfahren umfasst zusätzlich Leiten eines Inhalts des ersten interaktiven WebRTC-Flusses an den zweiten interaktiven WebRTC-Fluss und eines Inhalts des zweiten interaktiven WebRTC-Flusses an den ersten interaktiven WebRTC-Fluss über den einen oder die mehreren virtuellen WebRTC-Agenten.
-
1 veranschaulicht ein beispielhaftes interaktives Kommunikationssystem 10, das virtuelle Back-to-Back-WebRTC-Agenten, wie hierin offenbart, bereitstellt. Insbesondere stellt das beispielhafte interaktive Kommunikationssystem 10 einen WebRTC-Server 12 bereit, der auf einer Computereinrichtung 14 ausgeführt wird und der einen virtuellen WebRTC-Agent-Manager 16 beinhaltet. Der virtuelle WebRTC-Agent-Manager 16 handhabt die Instanziierung virtueller WebRTC-Agenten und koordiniert die Herstellung und die Leitung von Inhalt von interaktiven WebRTC-Flüssen zwischen virtuellen WebRTC-Agenten, um eine interaktive WebRTC-Sitzung zwischen zwei oder mehr Endpunkten bereitzustellen. Wie hierin genutzt, bezieht sich ein „virtueller WebRTC-Agent“ auf eine Instanz eines Browsers oder einer anderen WebRTC-fähigen Clientanwendung, die gesteuert vom virtuellen WebRTC-Agent-Manager 16 auf der Computereinrichtung 14 ausgeführt wird. Eine „interaktive WebRTC-Sitzung“ bezieht sich auf Abläufe zum Ausführen eines WebRTC-Angebot-Antwort-Austausches, zum Herstellen einer Peerverbindung und zum Einleiten eines interaktiven WebRTC-Flusses zwischen zwei oder mehr Endpunkten. Ein „interaktiver WebRTC-Fluss“, wie hierin offenbart, bezieht sich auf einen interaktiven Medienfluss und/oder einen interaktiven Datenfluss, der/die zwischen oder unter zwei oder mehr Endpunkten gemäß den WebRTC-Standards und -Protokollen läuft/laufen. Als nicht einschränkende Beispiele umfasst ein interaktiver Medienfluss, der einen interaktiven WebRTC-Fluss bildet, möglicherweise einen Echtzeitaudiostream und/oder einen Echtzeitvideostream oder andere Echtzeitmedien- oder -datenstreams. Daten und/oder Medien, die einen interaktiven WebRTC-Fluss umfassen, können hierin gemeinsam als „Inhalt“ bezeichnet werden.
-
Zu Zwecken der Veranschaulichung ist ein interaktiver WebRTC-Fluss 18 in 1 als zwischen der Computereinrichtung 14 und einer Computereinrichtung 20 laufend gezeigt, und ein interaktiver WebRTC-Fluss 22 ist als zwischen der Computereinrichtung 14 und einer Computereinrichtung 24 laufend gezeigt. Es versteht sich, dass die Computereinrichtungen 14, 20 und 24 sich alle innerhalb desselben öffentlichen oder privaten Netzes befinden können oder sich innerhalb separater, kommunikativ gekoppelter öffentlicher oder privater Netze befinden können. Einige Ausführungsformen des interaktiven Kommunikationssystems 10 von 1 können vorsehen, dass jede der Computereinrichtungen 14, 20 und 24 eine beliebige Computereinrichtung mit Netzkommunikationsfähigkeiten sein kann, etwa ein Smartphone, ein Tabletcomputer, eine dedizierte Web-Appliance, ein Medienserver, ein Desktop- oder ein Server-Computer oder eine speziell angefertigte Kommunikationseinrichtung, wobei es sich um nicht einschränkende Beispiele handelt. Die Computereinrichtungen 14, 20 und 24 beinhalten Kommunikationsschnittstellen 26, 28 bzw. 30 zum Verbinden der Computereinrichtungen 14, 20 und 24 mit einem oder mehreren öffentlichen und/oder privaten Netzen. In einigen Ausführungsformen können die Elemente der Computereinrichtungen 14, 20 und 24 über mehr als eine Computereinrichtung 14, 20, 24 verteilt sein.
-
Die Computereinrichtungen 20 und 24 von 1 beinhalten WebRTC-Clients 32 bzw. 34. Jeder der WebRTC-Clients 32 und 34 ist möglicherweise eine WebRTC-fähige Webbrowseranwendung, eine dedizierte Kommunikationsanwendung, eine mobile Anwendung oder eine schnittstellenlose Anwendung wie eine Daemon- oder Dienstanwendung, wobei es sich um nicht einschränkende Beispiele handelt. Die WebRTC-Clients 32 und 34 implementieren die Protokolle, die Codecs und die Anwendungsprogrammierschnittstellen (APIs), die zum Bereitstellen interaktiver Echtzeit-WebRTC-Sitzungen zwischen den Computereinrichtungen 20 bzw. 24 und der Computereinrichtung 14 nötig sind.
-
Wie in 1 ersichtlich, ist die Computereinrichtung 20 kommunikativ an eine Audioeingabeeinrichtung 36 (z. B. ein Mikrofon) zum Empfangen von Audioeingaben und eine Audioausgabeeinrichtung 38 (zum Beispiel Lautsprecher oder Kopfhörer) zum Generieren von Audioausgaben gekoppelt. Die Computereinrichtung 20 ist weiter kommunikativ an eine Videoeingabeeinrichtung 40 (etwa eine Kamera, eine Webcam oder eine andere Videoquelle) zum Empfangen von Videoeingaben und eine Videoausgabeeinrichtung 42 (z. B. eine Anzeige) zum Anzeigen von Videoausgaben gekoppelt. Desgleichen ist die Computereinrichtung 24 kommunikativ an eine Audioeingabeeinrichtung 44, eine Audioausgabeeinrichtung 46, eine Videoeingabeeinrichtung 48 und eine Videoausgabeeinrichtung 50 gekoppelt. Die Audioeingabeeinrichtungen 36 und 44, die Audioausgabeeinrichtungen 38 und 46, die Videoeingabeeinrichtungen 40 und 48 und/oder die Videoausgabeeinrichtungen 42 und 50 können in die jeweiligen Computereinrichtungen 20 und 24 integriert sein, und/oder sie können Peripheriegeräte und/oder virtuelle Einrichtungen sein, die kommunikativ an die jeweiligen Computereinrichtungen 20 und 24 gekoppelt sind. In einigen Ausführungsformen können die Computereinrichtungen 20 und/oder 24 kommunikativ an mehr oder weniger Einrichtungen gekoppelt sein als in 1 veranschaulicht.
-
Um eine interaktive WebRTC-Sitzung herzustellen, laden der WebRTC-Client 32 und der WebRTC-Client 34 eine WebRTC-Webanwendung (nicht gezeigt) von einem WebRTC-Anwendungsanbieter 52 des WebRTC-Servers 12 über Hyper-Text-Transfer-Protocol(HTTP)/HyperText-Transfer-Protocol-Secure(HTTPS)-Verbindungen 54 und 56 herunter. In einigen Ausführungsformen umfasst die WebRTC-Webanwendung möglicherweise eine HTML5/JavaScript-Webanwendung, die unter Nutzung von HTML5 ein Rich User Interface bereitstellt, und JavaScript zum Handhaben von Benutzereingaben und zum Kommunizieren mit dem WebRTC-Anwendungsanbieter 52 nutzt. Der WebRTC-Client 32 und der WebRTC-Client 34 nehmen dann einen WebRTC-Angebot-Antwort-Austausch auf, bei dem sie WebRTC-Sitzungsbeschreibungsobjekte (nicht gezeigt) über den WebRTC-Anwendungsanbieter 52 austauschen. Die ausgetauschten WebRTC-Sitzungsbeschreibungsobjekte werden genutzt, um die Medientypen und -fähigkeiten für die gewünschte interaktive WebRTC-Sitzung zu bestimmen.
-
In einer typischen Peer-to-Peer-Architektur würde, sobald der WebRTC-Angebot-Antwort-Austausch abgeschlossen ist, ein interaktiver WebRTC-Fluss direkt zwischen dem WebRTC-Client 32 und dem WebRTC-Client 34 über eine Peerverbindung hergestellt. Jedoch ist, wie oben angemerkt, eine Peer-to-Peer-Architektur unter manchen Umständen möglicherweise nicht optimal. Beispielsweise kann eine Peer-to-Peer-Architektur veranlassen, dass Aufzeichnen oder Überwachen des interaktiven WebRTC-Flusses und/oder Angehen von Inkompatibilitäten zwischen dem WebRTC-Client 32 und dem WebRTC-Client 34 schwierig oder impraktikabel sind.
-
In diesem Zusammenhang werden virtuelle WebRTC-Agenten 58 und 60 vom virtuellen WebRTC-Agent-Manager 16 bereitgestellt. Im Beispiel von 1, wenn der WebRTC-Anwendungsanbieter 52 den WebRTC-Angebot-Antwort-Austausch von den WebRTC-Clients 32 und 34 empfängt, instanziiert der virtuelle WebRTC-Agent-Manager 16 die virtuellen WebRTC-Agenten 58 und 60, die den WebRTC-Clients 32 und 34 entsprechen. In einigen Ausführungsformen kann der virtuelle WebRTC-Agent-Manager 16 die virtuellen WebRTC-Agenten 58 und 60 instanziieren, indem er eine oder mehrere Instanzen eines WebRTC-Clients, etwa einen Webbrowser, auf der Computereinrichtung 14 startet. Einige Ausführungsformen können vorsehen, dass die virtuellen WebRTC-Agenten 58 und 60 innerhalb einer virtuellen Instanz eines Betriebssystems ausgeführt werden.
-
Nach der Instanziierung werden die virtuellen WebRTC-Agenten 58 und 60 vom virtuellen WebRTC-Agent-Manager 16 je dazu angewiesen, eine virtuelle WebRTC-Anwendung (nicht gezeigt) von einem Anbieter virtueller WebRTC-Anwendungen, 62, herunterzuladen. Einige Ausführungsformen können vorsehen, dass der Anbieter virtueller WebRTC-Anwendungen, 62, kommunikativ an den virtuellen WebRTC-Agent-Manager 16 gekoppelt ist. In einigen Ausführungsformen kann der Anbieter virtueller WebRTC-Anwendungen, 62, in den virtuellen WebRTC-Agent-Manager 16 und/oder den WebRTC-Anwendungsanbieter 52 integriert sein oder ansonsten ein Element des virtuellen WebRTC-Agent-Managers und/oder des WebRTC-Anwendungsanbieters bilden. Die virtuelle WebRTC-Anwendung beinhaltet Spezialbefehle zum Kommunizieren über eine Schnittstelle mit den WebRTC-APIs der virtuellen WebRTC-Agenten 58 und 60. Die virtuellen WebRTC-Agenten 58 und 60 können über die virtuelle WebRTC-Anwendung mit den WebRTC-Clients 32 bzw. 34 und mit dem virtuellen WebRTC-Agent-Manager 16 kommunizieren.
-
Der virtuelle WebRTC-Agent-Manager 16veranlasst, dass die virtuellen WebRTC-Agenten 58 und 60 die interaktiven WebRTC-Flüsse 18 und 22 zu den entsprechenden WebRTC-Clients 32 und 34 herstellen. Dabei können der virtuelle WebRTC-Agent-Manager 16 und/oder die virtuellen WebRTC-Agenten 58 und 60 die zwischen den WebRTC-Clients 32 und 34 übermittelten Daten modifizieren, um die Herstellung der interaktiven WebRTC-Flüsse 18 und 22 zu ermöglichen. Zum Beispiel lassen sich Daten, die auf den Ort und/oder die Identität der Endpunkte jedes der interaktiven WebRTC-Flüsse 18 und 22 bezogen sind, so modifizieren, dass die virtuellen WebRTC-Agenten 58 und 60 als Proxys für ihre entsprechenden WebRTC-Clients 32 und 34 fungieren können.
-
Der virtuelle WebRTC-Agent-Manager 16 verbindet dann die virtuellen WebRTC-Agenten 58 und 60 aufeinanderfolgend („Back-to-Back“) (d. h. der durch den interaktiven WebRTC-Fluss 18 des virtuellen WebRTC-Agenten 58 ausgegebene Inhalt wird als Eingabe in den interaktiven WebRTC-Fluss 22 des virtuellen WebRTC-Agenten 60 geleitet und umgekehrt). Um eine „Back-to-Back“-Verbindung zu realisieren, stellt der virtuelle WebRTC-Agent-Manager 16 einen virtuellen Audioempfänger 64 (Rx), einen virtuellen Audiosender (Tx) 66, einen virtuellen Videoempfänger (Rx) 68, einen virtuellen Videosender (Tx) 69, einen virtuellen Datenempfänger (Rx) 70 und einen virtuellen Datensender (Tx) 71 bereit, an die der virtuelle WebRTC-Agent 58 kommunikativ gekoppelt ist. Desgleichen ist der virtuelle WebRTC-Agent 60 kommunikativ an einen virtuellen Audioempfänger (Rx) 72, einen virtuellen Audiosender (Tx) 74, einen virtuellen Videoempfänger (Rx) 76, einen virtuellen Videosender (Tx) 77, einen virtuellen Datenempfänger (Rx) 78 und einen virtuellen Datensender (Tx) 79 gekoppelt, die vom virtuellen WebRTC-Agent-Manager 16 bereitgestellt werden. Wenn die interaktiven WebRTC-Flüsse 18 und 22 anfangen, leiten die virtuellen WebRTC-Agenten 58 und 60 Audiosignale, die aus den entsprechenden interaktiven WebRTC-Flüssen 18 und 22 empfangen werden, weiter an die virtuellen Audioempfänger 64 und 72. Die virtuellen WebRTC-Agenten 58 und 60 leiten auch Videosignale, die aus den entsprechenden interaktiven WebRTC-Flüssen 18 und 22 empfangen werden, weiter an die virtuellen Videoempfänger 68 und 76 und leiten Daten, die aus den entsprechenden interaktiven WebRTC-Flüssen 18 und 22 empfangen werden, weiter an die Datenempfänger 70 und 78.
-
Der virtuelle Audioempfänger 64, der kommunikativ an den virtuellen WebRTC-Agenten 58 gekoppelt ist, ist konfiguriert zum Leiten von Audiosignalen, die aus dem virtuellen WebRTC-Agenten 58 empfangen werden, an den virtuellen Audiosender 74, der kommunikativ an den virtuellen WebRTC-Agenten 60 gekoppelt ist. Der virtuelle Videoempfänger 68, der kommunikativ an den virtuellen WebRTC-Agenten 58 gekoppelt ist, ist konfiguriert zum Leiten von Videosignalen, die aus dem virtuellen WebRTC-Agenten 58 empfangen werden, an den virtuellen Videosender 77, der kommunikativ an den virtuellen WebRTC-Agenten 60 gekoppelt ist. Der virtuelle Datenempfänger 70, der kommunikativ an den virtuellen WebRTC-Agenten 58 gekoppelt ist, ist konfiguriert zum Leiten von Daten, die aus dem virtuellen WebRTC-Agenten 58 empfangen werden, an den virtuellen Datensender 79, der kommunikativ an den virtuellen WebRTC-Agenten 60 gekoppelt ist. Desgleichen ist der virtuelle Audioempfänger 72, der kommunikativ an den virtuellen WebRTC-Agenten 60 gekoppelt ist, konfiguriert zum Leiten von Audiosignalen, die aus dem virtuellen WebRTC-Agenten 60 empfangen werden, an den virtuellen Audiosender 66, der kommunikativ an den virtuellen WebRTC-Agenten 58 gekoppelt ist. Der virtuelle Videoempfänger 76, der kommunikativ an den virtuellen WebRTC-Agenten 60 gekoppelt ist, ist konfiguriert zum Leiten von Videosignalen, die aus dem virtuellen WebRTC-Agenten 60 empfangen werden, an den virtuellen Videosender 69, der kommunikativ an den virtuellen WebRTC-Agenten 58 gekoppelt ist. Der virtuelle Datenempfänger 78, der kommunikativ an den virtuellen WebRTC-Agenten 60 gekoppelt ist, ist konfiguriert zum Leiten von Daten, die aus dem virtuellen WebRTC-Agenten 60 empfangen werden, an den virtuellen Datensender 71, der kommunikativ an den virtuellen WebRTC-Agenten 60 gekoppelt ist.
-
Aus der Perspektive der WebRTC-Clients 32 und 34 scheint die resultierende interaktive WebRTC-Sitzung, die die interaktiven WebRTC-Flüsse 18 und 22 beinhaltet, sich nicht zu unterscheiden von einer interaktiven WebRTC-Sitzung, die über eine direkte Peerverbindung transportiert wird. Während der resultierenden interaktiven WebRTC-Sitzung kann der virtuelle WebRTC-Agent-Manager 16 Inhalt aus dem interaktiven WebRTC-Fluss 18 und/oder dem interaktiven WebRTC-Fluss 22 extrahieren, indem er auf eine Eingabe aus den virtuellen Audioempfängern 64 und/oder 72, den virtuellen Videoempfängern 68 und/oder 76 und/oder den virtuellen Datenempfängern 70 und/oder 78 zugreift. Der virtuelle WebRTC-Agent-Manager 16 kann auch Inhalt in den interaktiven WebRTC-Fluss 18 und/oder den interaktiven WebRTC-Fluss 22 einfügen, indem er eine Ausgabe aus den virtuellen Audiosendern 66 und/oder 74, den virtuellen Videosendern 70 und/oder 78 und/oder den virtuellen Datensendern 71 und 79 modifiziert. Daher können einige Ausführungsformen vorsehen, dass Inhalt aus dem interaktiven WebRTC-Fluss 18 und/oder dem interaktiven WebRTC-Fluss 22 extrahiert oder darin eingefügt werden kann. In einigen Ausführungsformen kann Inhalt aus dem interaktiven WebRTC-Fluss 18 und/oder dem interaktiven WebRTC-Fluss 22 vom virtuellen WebRTC-Agent-Manager 16 aufgezeichnet oder umgewandelt werden.
-
In einigen Ausführungsformen kann Inhalt aus dem interaktiven WebRTC-Fluss 18 und/oder dem interaktiven WebRTC-Fluss 22 optional an einen Funktionalitätsanbieter 80 geleitet oder von einem Funktionalitätsanbieter empfangen werden, wie durch den bidirektionalen Videofeed 82, den bidirektionalen Audiofeed 84 und den bidirektionalen Datenfeed 85 angegeben. Der Funktionalitätsanbieter 80 kann zusätzliche Medienverarbeitungsfunktionalität bereitstellen, etwa Aufzeichnen oder Umwandeln von Inhalt des interaktiven WebRTC-Flusses 18 und/oder des interaktiven WebRTC-Flusses 22. In einigen Ausführungsformen kann der Medienverarbeitungsfunktionalitätsanbieter 80 Inhalt, etwa Audio- oder Videoankündigungen, zur Einfügung in den interaktiven WebRTC-Fluss 18 und/oder den interaktiven WebRTC-Fluss 22 bereitstellen.
-
Im Beispiel von 1 werden die zwei virtuellen WebRTC-Agenten 58 und 60 vom virtuellen WebRTC-Agent-Manager 16 instanziiert. Dies kann unter Umständen nützlich sein, unter denen etwa der WebRTC-Client 32 und der WebRTC-Client 34 bekanntermaßen inkompatibel sind oder eine eingeschränkte Kompatibilität aufweisen. Als nicht einschränkendes Beispiel sind die WebRTC-Clients 32 und 34 möglicherweise Webbrowser mit unterschiedlichen Stufen von Support für die WebRTC-APIs. Um solche Inkompatibilitäten zu beheben, können der spezifische Clienttyp und/oder die spezifische Clientversion des WebRTC-Clients 32 und/oder des WebRTC-Clients 34 vom WebRTC-Anwendungsanbieter 52 und/oder vom virtuellen WebRTC-Agent-Manager 16 bestimmt werden. In einigen Ausführungsformen lassen sich der Clienttyp und/oder die Clientversion des WebRTC-Clients 32 und/oder des WebRTC-Clients 34 basierend auf Daten, die als Teil eines WebRTC-Angebot-Antwort-Austausches, eines Abfrage-Rückmeldung-Austausches zwischen dem virtuellen WebRTC-Agent-Manager 16 und dem WebRTC-Client 32 und/oder dem WebRTC-Client 34 empfangen werden, einem HTTP-Kopf oder anderen vom WebRTC-Client 32 und/oder vom WebRTC-Client 34 bereitgestellten Daten bestimmen. Der virtuelle WebRTC-Agent-Manager 16 kann dann die virtuellen WebRTC-Agenten 58 und 60 mit einem Clienttyp und/oder einer Clientversion instanziieren, die dem Clienttyp und/oder der Clientversion der WebRTC-Clients 32 bzw. 34 entsprechen. Da jeder der WebRTC-Clients 32 und 34 mit einem virtuellen WebRTC-Agenten desselben Typs und derselben Version direkt kommuniziert, lassen sich Inkompatibilitäten zwischen den WebRTC-Clients 32 und 34 beseitigen.
-
Umgekehrt kann der virtuelle WebRTC-Agent-Manager 16 in Situationen, in denen die WebRTC-Clients 32 und 34 bekanntermaßen kompatibel sind, eine interaktive WebRTC-Sitzung zwischen den WebRTC-Clients 32 und 34 unter Nutzung eines einzigen virtuellen WebRTC-Agenten bereitstellen. Durch Bereitstellen eines einzigen virtuellen WebRTC-Agenten können Rechenressourcen der Computereinrichtung 14 eingespart und die Skalierbarkeit des WebRTC-Servers 12 erhöht werden. Diese Ausführungsform wird hinsichtlich 4 unten detaillierter erörtert.
-
Um beispielhafte Abläufe des WebRTC-Anwendungsanbieters 52 und des virtuellen WebRTC-Agent-Managers 16 von 1 zum Bereitstellen virtueller Back-to-Back-WebRTC-Agenten allgemein zu beschreiben, ist 2 bereitgestellt. Der Klarheit halber wird beim Beschreiben von 2 auf Elemente von 1 Bezug genommen. Im Beispiel von 2 beginnen die Abläufe damit, dass der WebRTC-Anwendungsanbieter 52 einen WebRTC-Angebot-Antwort-Austausch zwischen einem ersten WebRTC-Client 32 und einem zweiten WebRTC-Client 34 empfängt (Block 86). In einigen Ausführungsformen beinhaltet die WebRTC-Angebot-Antwort einen Austausch von WebRTC-Sitzungsbeschreibungsobjekten, die genutzt werden können, um die Medientypen und -fähigkeiten des ersten WebRTC-Clients 32 und des zweiten WebRTC-Clients 34 für die gewünschte interaktive WebRTC-Sitzung zu bestimmen.
-
Der virtuelle WebRTC-Agent-Manager 16 instanziiert als Nächstes einen oder mehrere virtuelle WebRTC-Agenten 58 und 60 (Block 88). Einige Ausführungsformen können vorsehen, dass ein einziger virtueller WebRTC-Agent instanziiert wird, falls bestimmt wird, dass der erste WebRTC-Client 32 und der zweite WebRTC-Client 34 kompatibel sind. In einigen Ausführungsformen kann sowohl für den ersten WebRTC-Client 32 als auch für den zweiten WebRTC-Client 34 ein virtueller WebRTC-Agent hergestellt werden, falls bestimmt wird, dass der erste WebRTC-Client 32 und der zweite WebRTC-Client 34 inkompatibel sind. Als nicht einschränkendes Beispiel kann der virtuelle WebRTC-Agent-Manager 16 den einen oder die mehreren virtuellen WebRTC-Agenten 58 und 60 instanziieren, indem er eine oder mehrere Instanzen eines WebRTC-Clients, etwa einen Webbrowser, auf der Computereinrichtung 14 startet.
-
Der virtuelle WebRTC-Agent-Manager 16 stellt dann einen ersten interaktiven WebRTC-Fluss 18 zwischen dem ersten WebRTC-Client 32 und einem des einen oder der mehreren virtuellen WebRTC-Agenten (z. B. dem virtuellen WebRTC-Agenten 58) und einen zweiten interaktiven WebRTC-Fluss 22 zwischen dem zweiten WebRTC-Client 34 und einem des einen oder der mehreren virtuellen WebRTC-Agenten (z. B. dem virtuellen WebRTC-Agenten 60) her (Block 90). Gemäß einigen Ausführungsformen hierin können der virtuelle WebRTC-Agent-Manager 16 und/oder die virtuellen WebRTC-Agenten 58 und 60 die zwischen den WebRTC-Clients 32 und 34 übermittelten Daten modifizieren, um die Herstellung der interaktiven WebRTC-Flüsse 18 und 22 zu ermöglichen. Zum Beispiel lassen sich Daten bezüglich des Orts und/oder der Identität der Endpunkte jedes der interaktiven WebRTC-Flüsse 18 und 22 so modifizieren, dass die virtuellen WebRTC-Agenten 58 und 60 als Proxys für ihre entsprechenden WebRTC-Clients 32 und 34 fungieren können.
-
Der virtuelle WebRTC-Agent-Manager 16 leitet als Nächstes über den einen oder die mehreren virtuellen WebRTC-Agenten 58 und 60 einen Inhalt des ersten interaktiven WebRTC-Flusses 18 an den zweiten interaktiven WebRTC-Fluss 22 und einen Inhalt des zweiten interaktiven WebRTC-Flusses 22 an den ersten interaktiven WebRTC-Fluss 18 (Block 92). Daraus resultiert eine „Back-to-Back“-Verbindung zwischen dem einen oder den mehreren virtuellen WebRTC-Agenten 58 und 60. In einigen Ausführungsformen ist dies realisierbar durch die Nutzung virtueller Audioempfänger und -sender, virtueller Videoempfänger und -sender und virtueller Datenempfänger und -sender, die vom virtuellen WebRTC-Agent-Manager 16 bereitgestellt werden, wie in 1 veranschaulicht.
-
Um beispielhafte Kommunikationsflüsse während der Herstellung einer interaktiven WebRTC-Sitzung unter Nutzung der virtuellen WebRTC-Agenten 58 und 60 von 1 zu veranschaulichen, ist 3 bereitgestellt. In 3 sind der WebRTC-Client 32, der virtuelle WebRTC-Agent 58, der WebRTC-Server 12, der virtuelle WebRTC-Agent 60 und der WebRTC-Client 34 von 1 je durch vertikale gestrichelte Linien dargestellt. Es versteht sich, dass der WebRTC-Server 12 den WebRTC-Anwendungsanbieter 52 und den virtuellen WebRTC-Agent-Manager 16 beinhaltet, die der Klarheit halber in diesem Beispiel weggelassen sind. Es versteht sich für dieses Beispiel weiter, dass der WebRTC-Client 32 und der WebRTC-Client 34 je eine WebRTC-fähige Webanwendung, etwa eine HTML5/JavaScript-WebRTC-Anwendung, vom WebRTC-Server 12 heruntergeladen haben.
-
Wie in 3 ersichtlich, beginnt die Herstellung einer interaktiven WebRTC-Sitzung über die virtuellen WebRTC-Agenten 58 und 60 damit, dass der WebRTC-Client 34 ein Sitzungsbeschreibungsobjekt (SDP) an den WebRTC-Server 12 sendet (in diesem Beispiel über eine HTTPS-Verbindung). Das WebRTC-Sitzungsbeschreibungsobjekt wird als SDP-Objekt A bezeichnet und vom Pfeil 94 angegeben. Das SDP-Objekt A stellt das „Angebot“ bei einem WebRTC-Angebot-Antwort-Austausch dar und legt die Medientypen und -fähigkeiten fest, welche der WebRTC-Client 34 unterstützt und für die Nutzung bei der interaktiven WebRTC-Sitzung vorzieht.
-
Der WebRTC-Server 12 (d. h. der virtuelle WebRTC-Agent-Manager 16) instanziiert den virtuellen WebRTC-Agenten 60, der dem WebRTC-Client 34 entspricht, wie vom Pfeil 96 angegeben. In einigen Ausführungsformen lassen sich ein Clienttyp und/oder eine Clientversion des WebRTC-Clients 34 basierend auf dem SDP-Objekt A, einem Abfrage-Rückmeldung-Austausch zwischen dem WebRTC-Server 12 und dem WebRTC-Client 34, einem HTTP-Kopf oder anderen vom WebRTC-Client 34 bereitgestellten Daten bestimmen. Der virtuelle WebRTC-Agent 60 kann mit einem Clienttyp und/oder einer Clientversion, die bekanntermaßen mit dem WebRTC-Client 34 kompatibel sind, instanziiert werden. Der WebRTC-Server 12 leitet dann das SDP-Objekt A weiter an den WebRTC-Client 32, wie vom Pfeil 98 angegeben.
-
Nachdem der WebRTC-Client 32 das SDP-Objekt A vom WebRTC-Server 12 empfangen hat, sendet der WebRTC-Client 32 als Rückmeldung ein WebRTC-Sitzungsbeschreibungsobjekt, das als SDP-Objekt B bezeichnet wird, über HTTPS an den WebRTC-Server 12, wie vom Pfeil 100 angegeben. Das SDP-Objekt B stellt in diesem Beispiel die „Antwort“ beim WebRTC-Angebot-Antwort-Austausch dar. Der WebRTC-Server 12 (d. h. der virtuelle WebRTC-Agent-Manager 16) instanziiert dann den virtuellen WebRTC-Agenten 58, der dem WebRTC-Client 32 entspricht, wie vom Pfeil 102 angegeben. Einige Ausführungsformen können vorsehen, dass ein Clienttyp und/oder eine Clientversion des WebRTC-Clients 32 basierend auf dem SDP-Objekt B, einem Abfrage-Rückmeldung-Austausch zwischen dem virtuellen WebRTC-Agent-Manager 16 und dem WebRTC-Client 32, einem HTTP-Kopf oder anderen vom WebRTC-Client 32 bereitgestellten Daten bestimmt werden können. Der virtuelle WebRTC-Agent 58 kann mit einem Clienttyp und/oder einer Clientversion, die bekanntermaßen mit dem WebRTC-Client 32 kompatibel sind, instanziiert werden. Der WebRTC-Server 12 leitet wiederum das SDP-Objekt B weiter an den WebRTC-Client 34, wie vom Pfeil 104 gezeigt.
-
Weiter mit Bezug auf 3 beginnen der WebRTC-Client 32 und der WebRTC-Client 34 dann mit „Hole Punching“, um den besten Weg zur Herstellung direkter Kommunikationen mit den virtuellen WebRTC-Agenten 58 bzw. 60 zu bestimmen. Dies wird durch die bidirektionalen Pfeile 106 und 108 in 3 angegeben. Hole Punching ist eine Technik, die oft Protokolle wie Interactive Connectivity Establishment (ICE) nutzt, über die beide WebRTC-Clients 32 und 34 eine Verbindung zu einem keinen Einschränkungen unterliegenden Drittanbieterserver (nicht gezeigt) herstellen, der externe und interne Adressinformationen zur Nutzung bei direkten Kommunikationen freigibt.
-
Sobald das von den Pfeilen 106 und 108 angegebene ICE Hole Punching erfolgreich ist, beginnen der WebRTC-Client 32 und der WebRTC-Client 34 mit Schlüsselaushandlungen, um eine sichere Peerverbindung herzustellen. In einer typischen Peer-to-Peer-Architektur erfolgen die Schlüsselaushandlungen direkt zwischen dem WebRTC-Client 32 und dem WebRTC-Client 34. Jedoch verhandelt in diesem Beispiel jeder der WebRTC-Clients 32 und 34 mit seinem entsprechenden virtuellen WebRTC-Agenten 58 und 60, wie von den bidirektionalen Pfeilen 110 und 111 angegeben. Falls Schlüsselaushandlungen erfolgreich abgeschlossen werden, werden zwischen dem WebRTC-Client 32 und dem virtuellen WebRTC-Agenten 58 und zwischen dem WebRTC-Client 34 und dem virtuellen WebRTC-Agenten 60 Peerverbindungen hergestellt, wie von den bidirektionalen Pfeilen 112 und 113 angegeben.
-
Nach dem Herstellen von Peerverbindungen mit ihren entsprechenden virtuellen WebRTC-Agenten 58 und 60 beginnen der WebRTC-Client 32 und der WebRTC-Client 34, WebRTC-Medien- und/oder -Datenflüsse auszutauschen. Wie in 3 ersichtlich, laufen die WebRTC-Medien- und/oder -Datenflüsse von den WebRTC-Clients 32 und 34 zu ihren jeweiligen virtuellen WebRTC-Agenten 58 und 60, wie von den bidirektionalen Pfeilen 114 und 116 angegeben. Die virtuellen WebRTC-Agenten 58 und 60 senden dann den Inhalt der interaktiven WebRTC-Flüsse 18 und 22 durch den WebRTC-Server 12, wie von den bidirektionalen Pfeilen 118 und 120 gezeigt. Auf diese Weise kann der WebRTC-Server 12 einen Inhalt von interaktiven WebRTC-Flüssen 18 und 22 zwischen den WebRTC-Clients 32 und 34 selektiv steuern, überwachen und/oder modifizieren.
-
Wie oben hinsichtlich 1 angemerkt, kann der virtuelle WebRTC-Agent-Manager 16 eine interaktive WebRTC-Sitzung zwischen den WebRTC-Clients 32 und 34 unter Nutzung eines einzigen virtuellen WebRTC-Agenten bereitstellen, falls die WebRTC-Clients 32 und 34 bekanntermaßen kompatibel sind. Um diese Ausführungsform zu veranschaulichen, ist 4 bereitgestellt. In 4 ist das beispielhafte interaktive Kommunikationssystem 10 von 1 gezeigt. In diesem Beispiel wird jedoch angenommen, dass die WebRTC-Clients 32 und 34 bekanntermaßen kompatibel sind. Beispielsweise sind die WebRTC-Clients 32 und 34 möglicherweise WebRTC-fähige Webbrowser desselben Typs und derselben Version. Daher instanziiert der virtuelle WebRTC-Agent-Manager 16 in der Ausführungsform von 4 einen einzigen virtuellen WebRTC-Agenten 122, mit dem beide WebRTC-Clients 32 und 34 verbunden sein können. Der virtuelle WebRTC-Agent 122 lädt eine virtuelle WebRTC-Anwendung (nicht gezeigt) vom Anbieter virtueller WebRTC-Anwendungen, 62, herunter. Die virtuelle WebRTC-Anwendung kann Spezialbefehle enthalten, um zu ermöglichen, dass der virtuelle WebRTC-Agent 122 mit den WebRTC-Clients 32 und 34 und mit dem virtuellen WebRTC-Agent-Manager 16 kommuniziert. In einigen Ausführungsformen kann die virtuelle WebRTC-Anwendung ermöglichen, dass der virtuelle WebRTC-Agent-Manager 16 steuert, wie der virtuelle WebRTC-Agent 122 Audio- und/oder Videodaten an die WebRTC-Clients 32 und 34 leitet.
-
Im Beispiel von 4 veranlasst der virtuelle WebRTC-Agent-Manager 16, dass der virtuelle WebRTC-Agent 122 die interaktiven WebRTC-Flüsse 18 und 22 zu den WebRTC-Clients 32 und 34 herstellt. Der virtuelle WebRTC-Agent 122 kann dann seine integrierten WebRTC-APIs verwenden, um einen Inhalt des interaktiven WebRTC-Flusses 18 an den interaktiven WebRTC-Fluss 22 zu leiten, und umgekehrt. Der virtuelle WebRTC-Agent 122 kann auch einen Inhalt des interaktiven WebRTC-Flusses 18 und/oder des interaktiven WebRTC-Flusses 22 an den virtuellen WebRTC-Agent-Manager 16 leiten. Während der resultierenden interaktiven WebRTC-Sitzung kann der virtuelle WebRTC-Agent-Manager 16 Inhalt aus dem interaktiven WebRTC-Fluss 18 und/oder dem interaktiven WebRTC-Fluss 22 extrahieren, indem er auf vom virtuellen WebRTC-Agenten 122 gesendeten Inhalt zugreift. Zum Beispiel kann Inhalt aus dem interaktiven WebRTC-Fluss 18 und/oder dem interaktiven WebRTC-Fluss 22 vom virtuellen WebRTC-Agent-Manager 16 oder vom Funktionalitätsanbieter 80 aufgezeichnet oder umgewandelt werden. Der virtuelle WebRTC-Agent-Manager 16 kann den virtuellen WebRTC-Agenten 122 auch dazu anweisen, Inhalt in den interaktiven WebRTC-Fluss 18 und/oder den interaktiven WebRTC-Fluss 22 einzufügen.
-
Die 5A-5C sind bereitgestellt, um einen beispielhaften verallgemeinerten Prozess, bei dem der WebRTC-Anwendungsanbieter 52 und der virtuelle WebRTC-Agent-Manager 16 von 1 virtuelle Back-to-Back-WebRTC-Agenten bereitstellen, detaillierter zu veranschaulichen. Zu Veranschaulichungszwecken beziehen sich die 5A-5C auf Elemente des beispielhaften interaktiven Kommunikationssystems 10 der 1 und 4. 5A zeigt detailliert Abläufe zum Bestimmen der Kompatibilität der WebRTC-Clients 32, 34, die versuchen, eine interaktive WebRTC-Sitzung herzustellen, und zum Bereitstellen eines virtuellen WebRTC-Agenten 122, falls die WebRTC-Clients 32, 34 kompatibel sind. 5B zeigt Abläufe zum Bereitstellen mehrerer virtueller WebRTC-Agenten 58, 60 in einer Situation, in der die WebRTC-Clients 32, 34 nicht kompatibel sind, oder falls aus irgendeinem anderen Grund mehrere virtuelle Clients wünschenswert sind. 5C veranschaulicht Abläufe zum Bereitstellen von zusätzlicher Funktionalität, die Extrahieren von Inhalt aus, Einfügen von Inhalt in, Aufzeichnen und/oder Umwandeln des Inhalts der interaktiven WebRTC-Flüsse 18, 22 beinhalten.
-
In 5A beginnt die Verarbeitung damit, dass der WebRTC-Anwendungsanbieter 52 einen WebRTC-Angebot-Antwort-Austausch zwischen einem ersten WebRTC-Client 32 und einem zweiten WebRTC-Client 34 empfängt (Block 124). Der virtuelle WebRTC-Agent-Manager 16 bestimmt, ob der erste WebRTC-Client 32 und der zweite WebRTC-Client 34 bekanntermaßen kompatibel sind, basierend auf dem WebRTC-Angebot-Antwort-Austausch (Block 126). In einigen Ausführungsformen beinhaltet Bestimmen einer Kompatibilität des ersten WebRTC-Clients 32 und des zweiten WebRTC-Clients 34 möglicherweise Vergleichen eines Clienttyps und/oder einer Clientversion sowohl des ersten WebRTC-Clients 32 als auch des zweiten WebRTC-Clients 34.
-
Falls bestimmt wird, dass der erste WebRTC-Client 32 und der zweite WebRTC-Client 34 kompatibel sind, kann der virtuelle WebRTC-Agent-Manager 16 eine interaktive WebRTC-Sitzung zwischen dem ersten WebRTC-Client 32 und dem zweiten WebRTC-Client 34 unter Nutzung eines einzigen virtuellen WebRTC-Agenten 122 ermöglichen, wie oben hinsichtlich 4 erörtert. Demgemäß instanziiert der virtuelle WebRTC-Agent-Manager 16 einen virtuellen WebRTC-Agenten 122, der sowohl mit dem ersten WebRTC-Client 32 als auch mit dem zweiten WebRTC-Client 34 kompatibel ist (Block 128). Als nicht einschränkendes Beispiel kann der virtuelle WebRTC-Agent-Manager 16 einen WebRTC-Client desselben Clienttyps und/oder derselben Clientversion ausführen wie der erste WebRTC-Client 32 und/oder der zweite WebRTC-Client 34. Der virtuelle WebRTC-Agent-Manager 16 stellt dann einen ersten interaktiven WebRTC-Fluss 18 zwischen dem ersten WebRTC-Client 32 und dem virtuellen WebRTC-Agenten 122 her (Block 130). Der virtuelle WebRTC-Agent-Manager 16 stellt auch einen zweiten interaktiven WebRTC-Fluss 22 zwischen dem zweiten WebRTC-Client 34 und dem virtuellen WebRTC-Agenten 122 her (Block 132). Der virtuelle WebRTC-Agent-Manager 16 leitet über den virtuellen WebRTC-Agenten 122 einen Inhalt des ersten interaktiven WebRTC-Flusses 18 an den zweiten interaktiven WebRTC-Fluss 22 und einen Inhalt des zweiten interaktiven WebRTC-Flusses 22 an den ersten interaktiven WebRTC-Fluss 18 (Block 134). Auf diese Weise kann der virtuelle WebRTC-Agent 122 eine interaktive WebRTC-Sitzung zwischen den WebRTC-Clients 32 und 34 ermöglichen, während die Nutzung von Rechnerressourcen minimiert wird. Die Verarbeitung wird dann bei Block 136 von 5C wieder aufgenommen.
-
Falls der virtuelle WebRTC-Agent-Manager 16 unter erneuter Bezugnahme auf den Entscheidungsblock 126 von 5A bestimmt, dass der erste WebRTC-Client 32 und der zweite WebRTC-Client 34 nicht vollständig kompatibel sind, kann der virtuelle WebRTC-Agent-Manager 16 eine interaktive WebRTC-Sitzung zwischen dem ersten WebRTC-Client 32 und dem zweiten WebRTC-Client 34 unter Nutzung von zwei virtuellen WebRTC-Agenten 58 und 60 ermöglichen, wie oben hinsichtlich 1 erörtert. Demgemäß wird die Verarbeitung bei Block 138 von 5B wieder aufgenommen. Der virtuelle WebRTC-Agent-Manager 16 instanziiert den ersten virtuellen WebRTC-Agenten 58, der mit dem ersten WebRTC-Client 32 kompatibel ist (Block 138). Der virtuelle WebRTC-Agent-Manager 16 instanziiert auch den zweiten virtuellen WebRTC-Agenten 60, der mit dem zweiten WebRTC-Client 34 kompatibel ist (Block 140). In einigen Ausführungsformen weisen die virtuellen WebRTC-Agenten 58 und 60 denselben Clienttyp und/oder dieselbe Clientversion auf wie die WebRTC-Clients 32 bzw. 34.
-
Der virtuelle WebRTC-Agent-Manager 16 stellt dann einen ersten interaktiven WebRTC-Fluss 18 zwischen dem ersten WebRTC-Client 32 und dem ersten virtuellen WebRTC-Agenten 58 her (Block 142). Der virtuelle WebRTC-Agent-Manager 16 stellt auch einen zweiten interaktiven WebRTC-Fluss 22 zwischen dem zweiten WebRTC-Client 34 und dem zweiten virtuellen WebRTC-Agenten 60 her (Block 144). Da sowohl der erste WebRTC-Client 32 als auch der zweite WebRTC-Client 34 direkt mit ihren jeweiligen kompatiblen virtuellen WebRTC-Agenten 58 und 60 interagieren, sollten hinsichtlich der interaktiven WebRTC-Flüsse 18 und 22 keine Kompatibilitätsprobleme auftreten.
-
Der virtuelle WebRTC-Agent-Manager 16 leitet dann über den ersten virtuellen WebRTC-Agenten 58 und den zweiten virtuellen WebRTC-Agenten 60 einen Inhalt des ersten interaktiven WebRTC-Flusses 18 an den zweiten interaktiven WebRTC-Fluss 22 und einen Inhalt des zweiten interaktiven WebRTC-Flusses 22 an den ersten interaktiven WebRTC-Fluss 18 (Block 146). Auf diese Weise werden die virtuellen WebRTC-Agenten 58 und 60 aufeinanderfolgend („Back-to-Back“) verbunden, sodass die Audio-, Video- und/oder Datenausgaben des virtuellen WebRTC-Agenten 58 Eingaben in den virtuellen WebRTC-Agenten 60 werden und umgekehrt. Die Verarbeitung wird dann bei Block 136 von 5C wieder aufgenommen.
-
Unter jetziger Bezugnahme auf 5C kann der virtuelle WebRTC-Agent-Manager 16 an dieser Stelle auf die Inhalte des ersten interaktiven WebRTC-Flusses 18 und des zweiten interaktiven WebRTC-Flusses 22 zugreifen und kann zusätzliche Medienverarbeitungsfunktionalität bereitstellen. Zum Beispiel kann der virtuelle WebRTC-Agent-Manager 16 in einigen Ausführungsformen Inhalt aus dem ersten interaktiven WebRTC-Fluss 18, dem zweiten interaktiven WebRTC-Fluss 22 oder einer Kombination davon extrahieren (Block 136). Einige Ausführungsformen können vorsehen, dass der virtuelle WebRTC-Agent-Manager 16 Inhalt in den ersten interaktiven WebRTC-Fluss 18, den zweiten interaktiven WebRTC-Fluss 22 oder eine Kombination davon einfügen kann (Block 148). Zum Beispiel kann der virtuelle WebRTC-Agent-Manager 16 zusätzliches Audio, zusätzliches Video und/oder zusätzliche Daten in die interaktiven WebRTC-Flüsse 18 und/oder 22 einfügen. Gemäß einigen Ausführungsformen kann der virtuelle WebRTC-Agent-Manager 16 einen Inhalt des ersten interaktiven WebRTC-Flusses 18, einen Inhalt des zweiten interaktiven WebRTC-Flusses 22 oder eine Kombination davon aufzeichnen (Block 150). In einigen Ausführungsformen kann der virtuelle WebRTC-Agent-Manager 16 einen Inhalt des ersten interaktiven WebRTC-Flusses 18, einen Inhalt des zweiten interaktiven WebRTC-Flusses 22 oder eine Kombination davon umwandeln (Block 152).
-
Der virtuelle WebRTC-Agent-Manager 16 bestimmt dann, ob der erste interaktive WebRTC-Fluss 18 oder der zweite interaktive WebRTC-Fluss 22 beendet wurde (Block 154). Falls sowohl der erste interaktive WebRTC-Fluss 18 als auch der zweite interaktive WebRTC-Fluss 22 noch aktiv sind, wird bei der Verarbeitung zu Block 136 von 5C zurückgekehrt. Ansonsten beendet der virtuelle WebRTC-Agent-Manager 16 gegebenenfalls den verbleibenden aktiven interaktiven WebRTC-Fluss 18 oder 22 (Block 156).
-
6 stellt eine schematische Diagrammdarstellung eines Verarbeitungssystems 158 in der beispielhaften Form eines beispielhaften Computersystems 160 bereit, das angepasst ist, um Befehle zum Durchführen der hierin beschriebenen Funktionen auszuführen. In einigen Ausführungsformen kann das Verarbeitungssystem 158 Befehle zum Durchführen der Funktionen des WebRTC-Anwendungsanbieters 52 und des virtuellen WebRTC-Agent-Managers 16 von 1 ausführen. In diesem Zusammenhang kann das Verarbeitungssystem 158 das Computersystem 160 umfassen, innerhalb dessen ein Satz von Befehlen zum Veranlassen, dass das Verarbeitungssystem 158 eine beliebige oder beliebige mehrere der hierin erörterten Methodiken durchführt, ausgeführt werden kann. Das Verarbeitungssystem 158 ist möglicherweise mit anderen Maschinen in einem Local Area Network (LAN), einem Intranet, einem Extranet oder dem Internet verbunden (etwa vernetzt, wobei es sich um ein nicht einschränkendes Beispiel handelt). Das Verarbeitungssystem 158 wird möglicherweise in einer Client-Server-Netzumgebung oder als gleichrangige Maschine in der Umgebung eines Peer-to-Peer- (oder dezentralen) Netzes betrieben. Auch wenn nur ein einziges Verarbeitungssystem 158 veranschaulicht wird, können die Begriffe „Controller“ und „Server“ auch so aufgefasst werden, dass sie eine beliebige Gruppe von Maschinen beinhalten, die individuell oder gemeinsam einen Satz (oder mehrere Sätze) von Befehlen zum Durchführen einer beliebigen oder beliebiger mehrerer der hierin erörterten Methodiken ausführen. Das Verarbeitungssystem 158 ist möglicherweise ein Server, ein Personal Computer, ein Desktop-Computer, ein Laptop-Computer, ein Personal Digital Assistant (PDA), ein Computerpad, eine mobile Einrichtung oder eine beliebige andere Einrichtung und verkörpert möglicherweise, wobei es sich um nicht einschränkende Beispiele handelt, einen Server oder einen Computer eines Benutzers.
-
Das beispielhafte Computersystem 160 beinhaltet eine Verarbeitungseinrichtung oder einen Prozessor 162, einen Hauptspeicher 164 (ein Read Only Memory (ROM), einen Flashspeicher, einen dynamischen Schreib-Lese-Speicher (DRAM) wie ein synchrones DRAM (SDRAM) etc. als nicht einschränkende Beispiele) und einen statischen Speicher 166 (einen Flashspeicher, einen statischen Schreib-Lese-Speicher (SRAM) etc. als nicht einschränkende Beispiele), die möglicherweise über einen Bus 168 miteinander kommunizieren. Alternativ ist die Verarbeitungseinrichtung 162 möglicherweise direkt oder über irgendein anderes Konnektivitätsmittel mit dem Hauptspeicher 164 und/oder dem statischen Speicher 166 verbunden.
-
Die Verarbeitungseinrichtung 162 stellt eine oder mehrere Verarbeitungseinrichtungen wie einen Mikroprozessor, eine Zentralverarbeitungseinheit (CPU) oder dergleichen dar. Insbesondere ist die Verarbeitungseinrichtung 162 möglicherweise ein Mikroprozessor für Rechenvorgänge mit komplexem Befehlssatz (CISC), ein Mikroprozessor für Rechenvorgänge mit reduziertem Befehlssatz (RISC), ein Mikroprozessor für überlange Befehlswörter (VLIW), ein Prozessor, der andere Befehlssätze implementiert, oder ein Prozessor, der eine Kombination von Befehlssätzen implementiert. Die Verarbeitungseinrichtung 162 ist konfiguriert, um Verarbeitungslogik in Befehlen 170 und/oder gecachten Befehlen 172 zum Durchführen der hierin erörterten Abläufe und Schritte auszuführen.
-
Das Computersystem 160 beinhaltet weiter möglicherweise eine Kommunikationsschnittstelle in Form einer Netzschnittstelleneinrichtung 174. Es kann auch einen Eingang 176 zum Empfangen von Eingaben und Auswahloptionen, die bei der Ausführung der Befehle 170, 172 an das Computersystem 160 zu kommunizieren sind, beinhalten oder nicht. Es kann auch einen Ausgang 178, der unter anderem (eine) Anzeige(n) 180 beinhaltet, beinhalten oder nicht. Die Anzeige(n) 180 ist/sind möglicherweise eine Videoanzeigeeinheit (eine Flüssigkristallanzeige (LCD) oder eine Kathodenstrahlröhre (CRT) als nicht einschränkende Beispiele), eine Einrichtung für alphanumerische Eingaben (eine Tastatur als nicht einschränkendes Beispiel), eine Cursorsteuereinrichtung (eine Maus als nicht einschränkendes Beispiel) und/oder eine Touchscreen-Einrichtung (eine Tablet-Eingabeeinrichtung oder ein Bildschirm als nicht einschränkende Beispiele).
-
Das Computersystem 160 beinhaltet möglicherweise eine oder auch keine Datenablageeinrichtung 182, welche die Nutzung eines Laufwerks/von Laufwerken 184 beinhaltet, um die hierin beschriebenen Funktionen in einem computerlesbaren Medium 186 abzulegen, auf dem ein oder mehrere Sätze von Befehlen 188 (z. B. Software) abgelegt sind, die eine beliebige oder beliebige mehrere der hierin beschriebenen Methodiken oder Funktionen verkörpern. Die Funktionen können die Verfahren und/oder andere Funktionen des Verarbeitungssystems 158, eine Teilnehmerbenutzereinrichtung und/oder einen Lizenzierungsserver beinhalten, wobei es sich um nicht einschränkende Beispiele handelt. Der eine oder die mehreren Sätze von Befehlen 188 können während ihrer Ausführung durch das Computersystem 160 auch vollständig oder mindestens teilweise innerhalb des Hauptspeichers 164 und/oder innerhalb der Verarbeitungseinrichtung 162 liegen. Der Hauptspeicher 164 und die Verarbeitungseinrichtung 162 bilden ebenfalls für Maschinen zugängliche Ablagemedien. Die Befehle 170, 172 und/oder 188 können weiter über ein Netz 190 über die Netzschnittstelleneinrichtung 174 gesendet oder empfangen werden. Das Netz 190 kann ein Intra-Netz oder ein Inter-Netz sein.
-
Wenngleich das computerlesbare Medium 186 in einer beispielhaften Ausführungsform als einzelnes Medium gezeigt ist, ist der Begriff „für Maschinen zugängliches Ablagemedium“ so aufzufassen, dass er ein einzelnes Medium oder mehrere Medien beinhaltet (eine zentrale oder eine dezentrale Datenbank und/oder assoziierte Cache-Speicher und Server als nicht einschränkende Beispiele), die den einen oder die mehreren Sätze von Befehlen 188 ablegen. Der Begriff „für Maschinen zugängliches Ablagemedium“ ist auch so aufzufassen, dass er beliebige Medien beinhaltet, die fähig sind, einen Satz von Befehlen 170, 172 und/oder 188 zur Ausführung durch die Maschine abzulegen, zu codieren oder zu übermitteln, und die veranlassen, dass die Maschine eine beliebige oder beliebige mehrere der hierin offenbarten Methodiken durchführt. Der Begriff „für Maschinen zugängliches Ablagemedium“ ist demgemäß so aufzufassen, dass er Halbleiterspeicher, optische und magnetische Medien und Trägerwellensignale beinhaltet, jedoch nicht darauf beschränkt ist.
-
Die hierin offenbarten Ausführungsformen sind möglicherweise in Hardware und in Befehlen, die in Hardware abgelegt sind, ausgeführt und liegen möglicherweise, wobei es sich um nicht einschränkende Beispiele handelt, in einem Random Access Memory (RAM), einem Flashspeicher, einem Read Only Memory (ROM), einem Electrically Programmable ROM (EPROM), einem Electrically Erasable Programmable ROM (EEPROM), in Registern, auf einer Festplatte, einer Wechselfestplatte, einer CD-ROM oder einem computerlesbaren Medium in irgendeiner anderen aus dem Stand der Technik bekannten Form vor. Ein beispielhaftes Ablagemedium ist an den Prozessor gekoppelt, sodass der Prozessor Informationen auf dem Ablagemedium lesen und das Ablagemedium mit Informationen beschreiben kann. Alternativ kann das Ablagemedium fest in den Prozessor integriert sein. Der Prozessor und das Ablagemedium können sich in einer anwendungsspezifischen integrierten Schaltung (ASIC) befinden. Die ASIC kann sich in einem Remote-Endgerät befinden. Alternativ können sich der Prozessor und das Ablagemedium als separate Komponenten in einem Remote-Endgerät, in einer Basisstation oder auf einem Server befinden.
-
Es wird auch angemerkt, dass die in beliebigen der beispielhaften Ausführungsformen hierin beschriebenen Ablaufschritte beschrieben werden, um Beispiele bereitzustellen und eine Erörterung zu ermöglichen. Die beschriebenen Abläufe sind auch in zahlreichen anderen statt nur in den veranschaulichten Reihenfolgen durchführbar. Des Weiteren können Abläufe, die als einzelner Ablaufschritt beschrieben werden, in der Praxis auch in etlichen unterschiedlichen Schritten durchgeführt werden. Zusätzlich können ein oder mehrere in den beispielhaften Ausführungsformen erörterte Ablaufschritte kombiniert werden. Es versteht sich, dass die in den Flussdiagrammen veranschaulichten Ablaufschritte auf zahlreiche unterschiedliche Arten modifiziert werden können, die sich für den Fachmann ohne Weiteres ergeben. Es verstünde sich für den Fachmann auch, dass Informationen und Signale unter Nutzung beliebiger einer Vielzahl unterschiedlicher Technologien und Techniken dargestellt werden können. Daten, Befehle, Kommandos, Informationen, Signale, Bits, Symbole und Chips, auf die in der obigen Beschreibung gegebenenfalls Bezug genommen wird, können durch Spannungen, Ströme, elektromagnetische Wellen, Magnetfelder oder -partikel, optische Felder oder Partikel oder beliebige Kombinationen davon dargestellt sein, wobei es sich um nicht einschränkende Beispiele handelt.
-
Die vorangehende Beschreibung der Offenbarung wird bereitgestellt, um den Fachmann zu einer Anfertigung gemäß der Offenbarung oder zu ihrer Nutzung zu befähigen. Verschiedene Modifikationen der Offenbarung werden sich für den Fachmann ohne Weiteres ergeben, und die allgemeinen, hierin definierten Prinzipien können auf andere Variationen angewendet werden, ohne vom Gedanken oder vom Schutzbereich der Offenbarung abzuweichen. Daher soll die Offenbarung nicht auf die hierin beschriebenen Beispiele und Ausführungen eingeschränkt sein, sondern ihr soll der weitestmögliche Schutzbereich zukommen, der mit den Prinzipien und den Neuheitsmerkmalen, die hierin offenbart werden, vereinbar ist.