-
HINTERGRUND
-
Die vorliegende Offenbarung betrifft Medien-Rendering-Anwendungen für vernetzte Vorrichtungen und insbesondere für Techniken zum Synchronisieren des Medien-Rendering, um Sendebereitstellungsvorgänge nachzuahmen.
-
Aktuelle Kommunikationsnetzwerke unterstützen die Bereitstellung von vielen verschiedenen Typen von Daten, einschließlich Videodaten. Bei vielen Anwendungen, insbesondere wenn Videoinhalte von einem Publikum auf einer einzelnen Anzeigevorrichtung genutzt werden, beeinträchtigen Verzerrungen bei der Netzwerkbereitstellung und dem Rendern der Videoinhalte nicht das Anzeigeerlebnis. Als Beispiel kann von drei separaten Publikumsgruppen ausgegangen werden, die ein gemeinsames Medienelement an drei verschiedenen Orten überprüfen. Selbst wenn die Publikumsgruppen einen „Live“-Video-Feed anzeigen, sind die Anzeigeerlebnisse der Publikumsgruppen möglicherweise nicht beeinträchtigt, wenn das Rendern von Videoinhalten für Publikum 1 eine Sekunde vor dem Rendern derselben Videoinhalte für Publikum 2 und drei Sekunden vor dem Rendern der Videoinhalte für Publikum 3 erfolgt.
-
Wenn die drei Publikumsgruppen jedoch versuchen, die Videoinhalte gemeinsam miteinander zu überprüfen, und wenn sie miteinander in Kommunikation stehen (zum Beispiel mittels einer Audiokonferenz), können diese Verzerrungen das Anzeigeerlebnis beeinträchtigen. Ein Kommentar eines Publikumsmitglieds kann schwer zu verstehen sein, wenn der Kommentar zum Beispiel Videoinhalte betrifft, die anderen Publikumsmitgliedern an anderen Orten noch nicht gezeigt wurden, oder wenn der Kommentar Videoinhalte betrifft, die vor so langer Zeit gerendert wurden, dass Publikumsmitglieder an den anderen Orten Schwierigkeiten haben, sich an deren Inhalte zu erinnern.
-
Medienbereitstellungsprotokolle erfordern häufig, dass Rendering-Terminals wiederzugebende Medieninhalte von Medienservern anfordern. Ein einzelnes Medienelement kann in eine Vielzahl von Bereitstellungseinheiten („Segmente“) segmentiert werden, die zum Decodieren und Rendern einzeln von einem Terminal angefordert, heruntergeladen und gepuffert werden. Wenn zwei oder mehrere Terminals ein gemeinsames Medienelement rendern, fordert jedes Terminal Segmente von einem Medienserver unabhängig davon an, welche Anforderungen von anderen Terminals gesendet werden. Es gibt keine bekannte Technik zum geeigneten Synchronisieren von Medien-Rendering-Vorgängen in diesen Systemen.
-
Figurenliste
-
- 1 ist ein vereinfachtes Blockdiagramm eines Medienverteilungssystems, das für die Verwendung mit verschiedenen Ausführungsformen der vorliegenden Offenbarung geeignet ist.
- 2 veranschaulicht ein Verfahren zum Synchronisieren des Medien-Renderings zwischen Terminals nach einer Ausführungsform der vorliegenden Offenbarung.
- 3 ist ein Funktionsblockdiagramm eines Terminals 300 nach einer Ausführungsform der vorliegenden Offenbarung.
-
DETAILLIERTE BESCHREIBUNG
-
Ausführungsformen der vorliegenden Offenbarung stellen Techniken zum Synchronisieren des Medien-Renderings zwischen einer Vielzahl von vernetzten Terminals bereit. Ein erstes Terminal kann eine Kommunikation von einem anderen Terminal empfangen, das eine Netzwerkzeit mit einem ersten Abschnitt eines auf den Terminals wiederzugebenden Medienelements korreliert. Die Terminals können, aus der Korrelation von Netzwerkzeit mit dem ersten Abschnitt von Medien und von einer zwischen den Terminals ausgehandelten Wiedergaberate, andere Abschnitte des Medienelements, die zu anderen Netzwerkzeiten gerendert werden sollen, identifizieren. Die Terminals können jeweils geeignete Abschnitte des Medienelements rendern, während die Netzwerkzeit fortschreitet. Die Terminals können auch andere Daten austauschen, um Wiedergabemodi im Verlauf einer gemeinsamen Rendering-Sitzung zu ändern.
-
1 ist ein vereinfachtes Blockdiagramm eines Medienverteilungssystems 100, das für die Verwendung mit verschiedenen Ausführungsformen der vorliegenden Offenbarung geeignet ist. Das System 100 kann eine Medienquelle 110 und ein oder mehrere Client-Terminals 120.1-120.4 (zusammen als 120 bezeichnet), die in gegenseitiger Kommunikation durch ein Netzwerk 130 bereitgestellt werden, einschließen. Die Medienquelle 110 kann verschiedene Medienelemente 140 speichern, die von den Terminals 120 heruntergeladen und wiedergegeben werden können. Das Netzwerk 130 stellt eine Kommunikationsstruktur dar, über die die Medienelemente 140 von der Medienquelle 110 zu dem/den Terminal(s) 120 übermittelt werden.
-
1 veranschaulicht beispielhafte Komponenten eines Medienelements 140 nach einer Ausführungsform der vorliegenden Offenbarung. Das Medienelement 140 kann eine Verzeichnisdatei 142 einschließen, die Informationen enthält, die andere Komponenten 144-148 des Medienelements 140 beschreiben. Ein einzelnes Medienelement 140, das audiovisuelle Inhalte darstellt, schließt üblicherweise verschiedene Instanzen von codierten Videoinhalten ein, die alle die visuellen Inhalte des Medienelements darstellen, aber mit verschieden Datenraten codiert sind. Zum Beispiel kann ein einzelnes Medienelement 140 durch einen 5 MBit/s-Datenstrom 144, einen 2 MBit/s-Datenstrom 145 und einen 500 KBit/s-Datenstrom 146 dargestellt werden. Das Medienelement kann auch Datenströme 147-148 für verschiedene Audiospuren, zum Beispiel eine englische Spur 147, eine spanische Spur 148 und Spuren (nicht gezeigt) in anderen Sprachen (Hebräisch, Chinesisch usw.), einschließen. Es ist auch zulässig, Spuren für andere Zwecke, zum Beispiel für geschlossene Untertitel und dergleichen, einzuschließen. Diese Datenströme 144-148 sind üblicherweise in einzeln verpackte Einheiten (so genannte „Segmente“) zum Herunterladen organisiert. Die Verzeichnisdatei 142 kann Daten speichern, die die verschiedenen Datenströme und deren Eigenschaften identifizieren und die Netzwerkkennungen bereitstellen, wo die Segmente für jede Spur abgerufen werden können.
-
Während des Betriebs wird ein bestimmtes Terminal 120.1 wahrscheinlich nicht alle Datenströme 144-148 nutzen, die für ein Medienelement 140 verfügbar sind. Stattdessen wird das Terminal 120.1 wahrscheinlich die Audio- und Videodatenströme (zum Beispiel die Datenströme 145 und 147) identifizieren, die für die Rendering-Umgebung des Terminals geeignet sind. Ein anderes Terminal 120.2, das in einer anderen Umgebung betrieben wird, kann verschiedene Datenströme (zum Beispiel die Datenströme 144 und 148) zum Herunterladen und Anzeigen auswählen. Die verschiedenen Umgebungen können durch Ressourcenunterschiede zwischen den Vorrichtungen 120.1-120.4, zum Beispiel die Auflösungen von deren jeweiligen Anzeigen und Unterschiede zwischen Verarbeitungsressourcen, die für das Datenstromdecodieren verfügbar sind, beeinflusst sein, und sie können auch durch Unterschiede bei der Bandbreite, die von dem Netzwerk 130 für jedes Terminal 120.1, 120.2, 120.3 und 120.4 bereitgestellt werden kann, beeinflusst sein.
-
1 veranschaulicht eine vereinfachte Architektur eines Medienelements 140. In der Praxis kann eine Verzeichnisdatei 142 durch eine Reihe von Dateien dargestellt sein, die alle Informationen über jeweilige Abschnitte des Medienelements bereitstellen.
-
Wie in 1 dargestellt, sind die Terminals 120 als Smartphones 120.1, 120.2, Tablet-Computer 120.3 und Anzeigen 120.4 veranschaulicht, aber die Prinzipien der vorliegenden Offenbarung sind nicht hierauf beschränkt. Ausführungsformen der vorliegenden Offenbarung finden Anwendung bei Personal Computern (sowohl Desktop- als auch Laptop-Computern), Computer-Servern, Set-Top-Boxen, Medienwiedergabevorrichtungen und/oder Spielplattformen. Das Netzwerk 130 stellt eine beliebige Anzahl von Netzwerken dar, die codierte Videodaten zwischen der Medienquelle 110 und den Terminals 120 transportieren, einschließlich zum Beispiel Festnetze und/oder drahtlose Kommunikationsnetzwerke. Das Kommunikationsnetzwerk 130 kann Daten in leitungsvermittelten und/oder paketvermittelten Kanälen austauschen. Typische Netzwerke schließen Telekommunikationsnetzwerke, lokale Netzwerke, Weitverkehrsnetzwerke und/oder das Internet ein. Für die Zwecke der vorliegenden Erörterung ist die Architektur und Topologie des Netzwerks 130 für die Vorgänge der vorliegenden Offenbarung unwesentlich, sofern dies nicht weiter unten erklärt wird.
-
2 veranschaulicht ein Verfahren 200 zum Synchronisieren des Medien-Renderings zwischen Terminals nach einer Ausführungsform der vorliegenden Offenbarung. 2 veranschaulicht ein Paar Terminals 210, 220, eine Medienquelle 230 und eine Taktreferenz 240. Eine synchronisierte Rendering-Sitzung kann mit einer Initialisierungsphase 250 beginnen, die die Sitzung zwischen den Terminals 210, 220 herstellt. Die Initialisierungsphase 250 kann einen ersten Kommunikationsfluss 252 einschließen, der zwischen den Terminals 210, 220 ausgetauscht wird, bei dem die Terminals 210, 220 eine während der Sitzung zu verwendende Taktreferenz 240 bestimmen. Als Teil der Initialisierungsphase 250 kann eines der Terminals 210 (als ein „primäres“ Terminal bezeichnet) Nachrichten zu dem anderen Terminal 220 (dem „sekundären“ Terminal) übertragen, die ein zu renderndes Medienelement identifizieren (Nachricht 254), eine während der Sitzung zu verwendende Rendering-Rate identifizieren (Nachricht 256) und eine gemeinsame Netzwerkzeit, die einer Medienzeit entspricht, identifizieren (Nachricht 258). Das sekundäre Terminal 220 kann den Medienelementbezeichner 254 verwenden, um eine Netzwerkadresse der synchron zu rendernden Medienzeit zu identifizieren. Das sekundäre Terminal 220 kann das Medienelement von der Medienquelle 230 unabhängig von Anforderungen anfordern, die von dem primären Terminal 210 gesendet wurden. Das sekundäre Terminal 220 kann auch Datenströme von dem Medienelement auswählen, die für das sekundäre Terminal 220 geeignet sind, wobei die Auswahl des Terminals unabhängig von Auswahlen getroffen werden kann, die von dem primären Terminal 210 getroffen wurden.
-
Das sekundäre Terminal 220 kann die Bezeichner für Medienzeit und gemeinsame Zeit (Nachricht 258) verwenden, um einen Punkt in dem Medienelement mit einer Netzwerkzeit zu korrelieren. Diese Korrelation, die in Verbindung mit der Wiedergaberate verwendet wird, erlaubt es dem sekundären Terminal 220 zu identifizieren, welche Elemente des Medienelements in der Zukunft wiederzugeben sind.
-
Sobald die Initialisierungsphase 250 abgeschlossen ist, können die Terminals 210, 220 jeweilige Rendering-Phasen 260, 270 der Sitzung beginnen. Während der Rendering-Phasen 260, 270 können die Vorgänge jedes Terminals unabhängig von denen des anderen erfolgen, aber die Terminals 210, 220 geben dennoch die synchronisierten Videoinhalte wieder. Jedes Terminal 210, 220 kann ausgewählte Datenströme des Medienelements von der Medienquelle herunterladen (Nachrichtenströme 262, 272). Jedes Terminal 210, 220 kann seinen Rendering-Vorgang auf die Taktreferenz synchronisieren (Nachrichtenströme 264, 274). Jedes Terminal 210, 220 kann einen Abschnitt des Medienelements lokal rendern, indem es basierend auf der in der Initialisierungsphase 250 identifizierten Wiedergaberate und Korrelation bestimmt, welcher Abschnitt des Medienelements zu einer aktuellen „Zeit“ an jedem Terminal (Boxen 266, 276) gerendert werden soll. Diese Vorgänge können rekursiv während der gesamten Videositzung erfolgen, bis eine vorher festgelegte Stoppbedingung erreicht ist, zum Beispiel wenn die Rendering-Sitzung ein Ende des Medienelements erreicht, oder wenn ein Benutzervorgang bewirkt, dass die normale Wiedergabe unterbrochen wird.
-
Ausführungsformen der vorliegenden Offenbarung ziehen in Betracht, dass die Video-Rendering-Sitzung parallel zu anderen Interaktionen 280 zwischen den Terminals 210, 200 erfolgt. Zum Beispiel können die Terminals 210, 220 eine Audio- oder audiovisuelle Konferenz untereinander unterstützen, die es Zuschauern an beiden Terminals erlaubt, das gerenderte Medienelement zu kommentieren. Alternativ dazu können die Interaktionen 280 andere Formen annehmen, wie Instant Messaging-Sitzungen, Chat-Anwendungen, Twittern, Feeds in sozialen Netzwerken und dergleichen. Die Terminals 210, 220 können eine Anwendung zur gemeinsamen Dokumenterstellung unterstützen, die es Zuschauern an jedem Terminal erlaubt, Notizen oder Anmerkungen für das Medienelement zu entwickeln.
-
Wenngleich 2 eine Rendering-Sitzung zwischen nur zwei Terminals 210, 220 veranschaulicht, sind die Prinzipien der vorliegenden Offenbarung nicht hierauf beschränkt. In der Praxis kann eine Rendering-Sitzung eine beliebig ausgewählte Anzahl (N) von Terminals einschließen. In diesen Anwendungen können die Kommunikationsflüsse 252 zwischen den N Terminals geteilt werden. Das primäre Terminal 210 kann Nachrichten 254-258 zu den anderen sekundären Terminals N-1 senden, um die Initialisierungsphase abzuschließen. Danach können die Terminals ihre Rendering-Phasen 260, 270 parallel zueinander durchführen.
-
Die Taktreferenz 240 kann über eine Vielzahl von Techniken erhalten werden. Zum Beispiel bestimmen verschiedene Netzwerkprotokolle Taktreferenzen für Netzwerkelemente, einschließlich der Standards Network Time Protocol (NTP), IEEE 1588 und IEEE 802.1AS. Die Terminals 210, 220 können sich zur Verwendung während des Renderings auf Zeitgebungsreferenzen stützen, die von einem beliebigen dieser Protokolle bereitgestellt werden. Wenn Terminals Taktreferenzen (Nachricht 252) zur Verwendung in der Rendering-Sitzung bestimmen, können die Terminals 210, 220 ein geeignetes Netzwerkelement bestimmen, das diese Zeitgebungsreferenzen bereitstellt. Die Terminals 210, 220 können sich alle auf die Taktreferenz 240 beziehen, um eine Korrelation zwischen der lokalen Betriebszeit jedes Terminals, die von Terminal zu Terminal (z. B. in den Boxen 266, 276) variieren kann, und einer durch die verwendete Taktreferenz 240 bestimmten Netzwerkzeit, zu entwickeln.
-
In der Praxis können einzelne Terminals 210, 220 gemäß lokalen Takten betrieben werden, die in Bezug auf diese Taktquellen Abweichungen aufweisen. Zum Beispiel kann der Takt eines bestimmten Terminals bewirken, dass das Rendering mit einer Rate erfolgt, die 0,01 % schneller ist als das Rendering bei anderen Vorrichtungen. Ein Terminal kann seine Vorgänge regelmäßig auf die Taktreferenz 240 resynchronisieren, um seinen Betrieb anzupassen. Außerdem kann ein Terminal 220 Taktabweichungsfehler im Laufe einer Rendering-Sitzung nachverfolgen, und, wenn Fehler als wesentlich (z. B. über einem vorher festgelegten Schwellenwert) bestimmt werden, kann das Terminal 220 eine lokale Wiedergaberate berechnen, die diese Taktabweichung kompensiert (z. B. um den Fehler von 0,01 % in dem vorgenannten Beispiel zu beseitigen).
-
2 veranschaulicht einen Kommunikationsfluss und Vorgänge, die erfolgen können, wenn zwei Terminals Videoinhalte mit einer konstanten Wiedergaberate rendern. Ausführungsformen der vorliegenden Offenbarung stellen auch Kommunikationsflüsse bereit, um Rendering-Modi zu unterstützen, die sich von dem in 2 gezeigten Beispiel der konstanten Wiedergabe unterscheiden. Diese schließen Folgendes ein:
-
Wiedergabe anhalten: In diesem Modus können die Terminals 210, 220 jeweils das Rendering des Medienelements an einem vorher festgelegten Punkt auf der Rendering-Zeitleiste des Medienelements anhalten. Um diesen Modus zu unterstützen, kann ein Terminal (zum Beispiel Terminal 220), bei dem ein Anhaltebefehl eingegeben wurde, eine Nachricht zu dem/den anderen Terminal(s) 210 der Sitzung übertragen, die identifiziert, dass ein Anhaltebefehl eingegeben wurde, und die eine Medienzeit identifiziert, zu der der Anhaltevorgang wirksam wird. Jedes Terminal 210, 220 in der Sitzung kann das Rendering zu der in der Anhaltenachricht identifizierten Medienzeit anhalten.
-
Wiedergabe fortsetzen: Ein Terminal kann die normale Wiedergabe fortsetzen, indem es einen zuvor veranlassten Anhaltevorgang aufhebt. Um diesen Modus zu unterstützen, kann ein initiierendes Terminal 210 (das nicht dasselbe Terminal sein muss, das den Anhaltevorgang veranlasst hat) eine Nachricht übertragen, die identifiziert, dass das Anhalten aufgehoben wurde, und die eine Netzwerkzeitreferenz identifiziert, zu der die Aufhebung wirksam werden soll. Basierend auf dieser Nachricht kann jedes empfangende Terminal eine neue Korrelation zwischen seiner Netzwerkzeit und der Zeitleiste des Medienelements erzeugen und das Rendering unter Verwendung der neuen Korrelation fortsetzen.
-
Wiedergabe scannen: In diesem Modus sollten die Terminals 210, 220 jeweils eine Wiedergaberate von der in der Wiedergaberatenachricht 256 identifizierten Standardrate zu einer alternativen Rate ändern. Wiedergaberaten können ausgehend von normalen Rendering-Raten erhöht werden (z. B. das 2-, 4-, 8- oder 16-Fache einer Standardrate), oder sie können ausgehend von den normalen Raten (z. B. das ½- oder ¼-Fache einer Standardrate) verringert werden. Darüber hinaus können Wiedergaberaten negative Werte sein, um ein Scannen in eine ausgehend von der normalen Wiedergabe umgekehrte Richtung zu erlauben. Um diese Wiedergabemodi zu unterstützen, kann ein initiierendes Terminal eine Nachricht zu dem anderen Terminal 210 übertragen, die identifiziert, dass der Scan-Modus gestartet wird, die eine neue Wiedergaberate identifiziert und die eine Medienzeit identifiziert, zu der der Scan-Modus wirksam wird. Jedes Terminal 210, 220 kann eine neue Korrelation zwischen seiner eigenen aktuellen Zeit und der Zeitleiste des Medienelements bestimmen, indem es die in der neuen Nachricht bereitgestellten Informationen verwendet.
-
Wiedergabe suchen: In diesem Modus sollen die Terminals 210, 220 von einer ersten Position auf der Zeitleiste des Medienelements zu einer zweiten Position springen. Um einen Suchmodus zu unterstützen, kann ein initiierendes Terminal eine Nachricht zu dem anderen Terminal 210 übertragen, die identifiziert, dass der Suchmodus gestartet wurde, und die eine neue Position in dem Medienelement, zu der die Wiedergabe springen soll, und eine Netzwerkzeit, zu der das Rendering an der neuen Position beginnen soll, identifiziert. Jedes Terminal 210, 220 kann eine neue Korrelation zwischen seiner eigenen aktuellen Zeit und der Zeitleiste des Medienelements bestimmen, indem es die in der neuen Nachricht bereitgestellten Informationen verwendet.
-
Wiedergabe scrubben: In diesem Modus scrollt ein Benutzer an einem ersten Terminal 210 über eine Zeitleiste des Medienelements, indem er ein Steuerelement einer Benutzeroberfläche, wie einen Schieber, verwendet. An dem ersten Terminal durchläuft der Scroll-Vorgang die Zeitleiste mit einer vom Benutzer bestimmten Rate, die unregelmäßig sein kann. Das erste Terminal 210 kann Rahmen von der Zeitleiste mit einer periodischen Rate anzeigen, die basierend auf einer Position des Scroll-Vorgangs von dem Medienelement ausgewählt sein können, wenn die Anzeige eines neuen Rahmens erforderlich ist.
-
Während des Scrub-Vorgangs kann ein erstes Terminal 210 eine Nachricht zu (einem) anderen Terminal(s) 220 senden, die anzeigt, dass ein Scrubben initiiert wurde, und die eine Netzwerkzeit identifiziert, zu der der Scrub-Vorgang begann. Die anderen Terminals 220 können reagieren, als ob eine Anhaltenachricht empfangen wurde, indem sie die Wiedergabe bei einem Rahmen anhalten, der zu der angegebenen Netzwerkzeit zu rendern war.
-
Wenn der Scrub-Vorgang abgeschlossen ist, wird das Rendering an dem ersten Terminal 210 an einer Stelle innerhalb der Medienzeit fortgesetzt, die von dem Steuerelement der Benutzeroberfläche identifiziert wird. Das erste Terminal 210 kann eine andere Nachricht zu den anderen Terminals 220 senden, die einen Abschnitt des Medienelements identifiziert, bei dem das Rendering fortgesetzt werden soll, und die eine Netzwerkzeit identifiziert, zu der das Rendering beginnen soll. Die anderen Terminals 220 können reagieren, als ob eine Suchnachricht empfangen wurde, und sie können zu der identifizierten Stelle springen und das Rendering zu der identifizierten Netzwerkzeit beginnen.
-
Wahlweise kann, während der Scrub-Vorgang im Gange ist, das erste Terminal 210 zusätzliche Nachrichten zu den anderen Terminals 220 senden, die Rahmen von dem Medienelement identifizieren, die an dem ersten Terminal 210 während des Fortschreitens des Scrub-Vorgangs angezeigt wurden, und die Netzwerkzeiten identifizieren, zu denen diese identifizierten Rahmen angezeigt wurden. Als Reaktion können die anderen Terminals 220 die identifizierten Rahmen zu den Netzwerkzeiten anzeigen. Die Übertragung von diesen Nachrichten kann zum Laden an den Terminals 210 und 220 beitragen, und deshalb können diese Terminals diese zusätzlichen Nachrichten so gut wie möglich übertragen oder verarbeiten.
-
Ausführungsformen der vorliegenden Offenbarung ermöglichen auch, dass diese Nachrichten miteinander kaskadiert werden, um zusätzliche Funktionalität bereitzustellen. Zum Beispiel können die Terminals 210, 220 das Ändern von Kanälen von normalen Fernsehprogrammen nachahmen, indem sie eine Anhaltenachricht übertragen, die das Rendering eines ersten Medienelements auf den Terminals 210, 220 synchron beendet, und dann erneut eine Initialisierungsphase 250 veranlasst, um das Rendering eines neuen Medienelements auf den Terminals 210, 220 synchron zu beginnen.
-
Die Techniken für ein synchronisiertes Rendering der vorliegenden Offenbarung kommen in einer Vielzahl von Anwendungsfällen zum Einsatz. In einem weiter oben erörterten Beispiel können Mitglieder einer gemeinsamen sozialen Gruppe ein Medienelement anzeigen, während sie an einer zusätzlichen Konferenz zwischen den Terminals 210, 220 teilnehmen. Wenn Zuschauer das Medienelement kommentieren oder auf sonstige Weise darauf reagieren, ist deren Kommentar daher wahrscheinlich für die anderen Zuschauer bedeutsam, die denselben Abschnitt des Medienelements synchron betrachten.
-
In einem anderen Anwendungsfall können Zuschauer in einem gemeinsamen Anzeigebereich, wie vor einer gemeinsamen großen Anzeige, versammelt werden. Für einige Zuschauer ist es möglicherweise einfacher, das Medienelement unter Verwendung einer Sprache anzuschauen, die von der durch die gemeinsame Anzeige ausgegebenen Sprache verschieden ist. In diesem Szenario können ausgewählte Zuschauer eine ergänzende Vorrichtung (wie eine persönliche Medienwiedergabevorrichtung oder ein persönliches Smartphone) einsetzen, die mit der Hauptanzeige synchronisiert ist, aber Audioinhalte in einer alternativen Sprache über persönliche Kopfhörer ausgibt. Eine Auswahl von alternativen Audiospuren kann in anderen Anzeigeumgebungen, wie in dem vorstehend beschriebenen Anwendungsfall der sozialen Gruppe, ebenfalls unterstützt werden.
-
In ähnlicher Weise können Zuschauer in einer anderen Gemeinschaftsanzeigeumgebung ein Medienelement anschauen, das von einer Gemeinschaftsanzeigevorrichtung ausgegeben wird. Umgebungsanzeigebedingungen (z. B. Rauschen oder stummgeschaltete Anzeige) können verhindern, dass die Audioinhalte von bestimmten Zuhörern gehört werden. In diesem Szenario können ausgewählte Zuschauer eine ergänzende Vorrichtung einsetzen, die mit der Hauptanzeige synchronisiert ist, aber Audioinhalte über persönliche Kopfhörer ausgibt.
-
In einer weiteren Gemeinschaftsanzeigeumgebung kann ein gemeinsames Medienelement auf einer Vielzahl von Anzeigen gerendert werden, die sich in der Nähe voneinander befinden. In diesen Umgebungen kann ein nicht synchronisiertes Rendering für Zuschauer deutlich sichtbar sein, insbesondere wenn ein gemeinsamer Satz von Szenenwechseln zu verschiedenen Zeiten auf verschiedenen Anzeigen angezeigt wird. Unter Verwendung der Synchronisierungstechniken der vorliegenden Offenbarung können die Anzeigen in dem gemeinsamen Anzeigebereich das Rendering des Medienelements synchronisieren, wodurch eine Verzerrung zwischen dem Rendering von Medienelementen über die Anzeigen hinweg minimiert werden kann.
-
Die Synchronisierungstechniken können auch in Anwendungsfällen Anwendung finden, in denen Zuschauer verschiedene Videodatenströme zur Bereitstellung auf verschiedenen Anzeigen in einem gemeinsamen Anzeigebereich auswählen können. Zum Beispiel kann ein Medienelement, das Konzertaufnahmen darstellt, verschiedene Videodatenströme haben, die auf verschiedene Künstler bei dem Konzert gerichtet sind. Ein erster Videodatenstrom kann Videoinhalte eines Lead-Sängers einschließen, ein zweiter Videodatenstrom kann Videoinhalte eines Gitarristen einschließen, und ein dritter Videodatenstrom kann Videoinhalte eines Schlagzeugers einschließen. In einem anderen Beispiel einer Sportveranstaltung können sich verschiedene Videodatenströme auf verschiedene Beteiligte der Veranstaltung konzentrieren. Publikumsmitglieder können persönliche Medienwiedergabevorrichtungen mit der Hauptanzeige synchronisieren und einen dieser alternativen Videodatenströme zum Rendern auswählen. Auf diese Weise kann das Rendering des alternativen Videodatenstroms auf der persönlichen Medienvorrichtung mit dem Rendering der Hauptanzeige synchronisiert werden.
-
Die Synchronisierungstechniken können bei einer Videokonferenzanwendung Anwendung finden, bei der das Medienelement in live erzeugten Videoinhalten besteht. In einer solchen Ausführungsform kann ein entfernter Teilnehmer das Medienelement auf einer persönlichen Vorrichtung (z. B. einem Smartphone oder Tablet-Computer) anzeigen, während eine Hauptanzeige die Videodatei auf einer anderen Vorrichtung rendert. Bei einer Videokonferenz mit drei oder mehr Videoteilnehmern (die alle ihr eigenes Medienelement erzeugen) können Bediener die lokale Wiedergabe der Medienelemente auf eine Weise steuern, die sich von einem Standard-Rendering-Schema unterscheidet, das möglicherweise auf andere Terminals anwendbar ist. Zum Beispiel kann ein Bediener ein Rendering-Schema auswählen, bei dem alle Medienelemente in jeweiligen Fenstern auf dem Terminal angezeigt werden und Fenster von einer aktuell sprechenden Person in einer größeren Größe als der von nicht sprechenden Teilnehmern gerendert werden. Ein Standard-Rendering-Schema wendet solche Verbesserungen möglicherweise nicht an und gibt stattdessen möglicherweise alle Medienelemente unabhängig von Aktivität (z. B. Sprechen und Nichtsprechen), die in diesen Medienelementen erfolgt, in gleich dimensionierten Fenstern wieder.
-
Die vorstehende Erörterung hat eine Netzwerkumgebung dargestellt, in der jedes Terminal ein Medienelement von einer gemeinsamen Medienquelle 230 herunterlädt. Die Prinzipien der vorliegenden Offenbarung finden in Umgebungen Anwendung, in denen verschiedene Medienquellen (nicht gezeigt) in einem Netzwerk vorhanden sind, die redundante Kopien des Medienelements speichern. Somit kann ein erstes Terminal 210 das Medienelement von einer ersten Medienquelle 230 herunterladen und kann ein zweites Terminal 220 das Medienelement von einer anderen Medienquelle (nicht gezeigt) herunterladen.
-
Die Prinzipien der vorliegenden Offenbarung finden auch in Netzwerkumgebungen Anwendung, in denen ein Terminal 210 das Medienelement (oder Abschnitte davon) einem anderen Terminal 220 bereitstellt. In dieser Ausführungsform kann das erste Terminal 210 Abschnitte des Medienelements herunterladen und diese Abschnitte im lokalen Speicher speichern. Alternativ dazu kann das erste Terminal 210 das Medienelement zum Beispiel durch Erfassen von Videodaten durch ein lokales Bildgebungssystem erstellen. In jedem Fall kann das erste Terminal 210 auch mit dem zweiten Terminal 220 kommunizieren, um den/die von diesem gespeicherten Abschnitt(e) des Medienelements zu identifizieren. Unter diesem Umstand kann das Terminal 220 bestimmen, von welcher Einheit, entweder von dem Terminal 210 oder von der Medienquelle 230, es die Bereitstellung dieser Abschnitte des Medienelements anfordert. Das zweite Terminal 220 kann beim Auswählen der Einheit, an die es seine Anforderung von Medienelementen sendet, Netzwerklastbedingungen und andere Ressourcenbeschränkungen schätzen.
-
Wenngleich 2 veranschaulicht, dass jedes Terminal 210, 220 die Medienelemente erst nach Abschluss der Sitzungsinitialisierung herunterlädt, sind die Prinzipien der vorliegenden Offenbarung ferner nicht hierauf beschränkt. Ausführungsformen der vorliegenden Offenbarung ermöglichen es einem Terminal 210 (oder allen Terminals), ein Medienelement in seiner Gesamtheit herunterzuladen, bevor eine synchronisierte Rendering-Sitzung mit einem anderen Terminal 220 initiiert wird. In diesem Fall müssen das eine oder die mehreren Terminals 210, die das Medienelement vorspeichern, das Rendering nur wie weiter oben beschrieben synchronisieren.
-
Die vorstehende Erörterung hat eine Implementierung beschrieben, bei der ein erstes Terminal 210 als ein primäres Terminal bezeichnet wird und andere Terminals als sekundäre Terminals bezeichnet werden. In einer Ausführungsform können sich die Rollen dieser Terminals während einer gemeinsamen Sitzung ändern. Zum Beispiel kann ein erstes Terminal 210 eine Sitzung als ein primäres Terminal initiieren, wobei andere Terminals die Rolle von sekundären Terminals übernehmen. Wenn ein Benutzer an dem ersten Terminal 210 aus irgendeinem Grund die Sitzung verlässt, dann kann ein anderes Terminal (zum Beispiel Terminal 220) die Rolle eines primären Terminals für einen nachfolgenden Abschnitt der Sitzung übernehmen. Die Rolle des primären Terminals kann auch durch einen ausdrücklichen Benutzerbefehl geändert werden, der über ein die Sitzung unterstützendes Steuerelement einer Benutzeroberfläche eingegeben wird.
-
Wenngleich in 2 nicht veranschaulicht, können außerdem andere Terminals (nicht gezeigt) einer bereits aktiven Sitzung beitreten. Wenn ein neues Terminal einer Sitzung beitritt, kann ein Terminal, entweder ein primäres Terminal oder eines der sekundären Terminals, Nachrichten ähnlich den Nachrichten 252-258 zu dem neuen Terminal übertragen, die die Taktreferenz, das Medienelement, die Wiedergaberate und die Korrelation zwischen Medienzeit und Wiedergabezeit identifizieren. Danach kann sich das Terminal auf die Wiedergabe der anderen Terminals synchronisieren und das Rendering des Medienelements beginnen.
-
3 ist ein Funktionsblockdiagramm eines Terminals 300 nach einer Ausführungsform der vorliegenden Offenbarung. Das Terminal 300 kann ein Verarbeitungssystem 310, ein Speichersystem 320, eine Anzeige 330, einen Transceiver (TX/RX) 340 und Eingabe/Ausgabe-Einheiten (E/A-Einheiten) 350 einschließen.
-
Das Verarbeitungssystem 310 kann den Betrieb des Terminals 300 steuern, indem es bewirkt, dass das Terminal 300 mit anderen Einheiten wie den in 2 veranschaulichten interagiert, um das Rendering zu synchronisieren. Das Speichersystem 320 kann Anweisungen speichern, die das Verarbeitungssystem 310 ausführen kann, und es kann auch davon erzeugte Anwendungsdaten 320 speichern. Die Architektur des Verarbeitungssystems 310 kann von Terminal zu Terminal variieren. Üblicherweise schließt das Verarbeitungssystem 310 einen Zentralprozessor ein; es kann auch Grafikprozessoren, Digitalsignalprozessoren und anwendungsspezifische integrierte Schaltungen (nicht gezeigt) einschließen, wie es für die individuellen Anwendungsanforderungen geeignet ist. Die Architektur des Speichersystems 320 kann ebenfalls von Terminal zu Terminal variieren. Üblicherweise schließt das Speichersystem 320 eine oder mehrere elektrische, optische und/oder magnetische Speichervorrichtungen (ebenfalls nicht gezeigt) ein. Das Speichersystem 320 kann über das gesamte Verarbeitungssystem verteilt sein. Zum Beispiel kann das Speichersystem einen Cache-Speicher einschließen, der auf einer gemeinsamen integrierten Schaltung mit einem Hauptprozessor des Verarbeitungssystems 310 bereitgestellt wird. Das Speichersystem 320 kann auch einen Direktzugriffshauptspeicher einschließen, der über eine Speichersteuervorrichtung an das Verarbeitungssystem 310 gekoppelt ist, und es kann auch nicht-flüchtige Speichervorrichtungen zur langfristigen Speicherung einschließen.
-
Das Verarbeitungssystem 310 kann auch eine Vielzahl von Programmen während des Betriebs ausführen, einschließlich eines Betriebssystems 360 und eines oder mehrerer Anwendungsprogramme 370. Wie in 3 dargestellt, kann zum Beispiel das Terminal 300 eine Medien-Rendering-Anwendung 372 und eine Konferenzanwendung 374 zusammen mit möglicherweise anderen Anwendungen ausführen. Die Medien-Rendering-Anwendung 372 kann das Herunterladen, das Decodieren und die synchronisierte Anzeige von Medienelementen wie in der vorstehenden Erörterung beschrieben verwalten. Die Konferenzanwendung 374 kann wie erörtert den Konferenzaustausch zwischen dem Terminal 300 und einem anderen Terminal (nicht gezeigt) unterstützen.
-
Die Rendering-Anwendung 372 kann einen Satz von Steuerelementen einer Benutzeroberfläche 378 zur Verwaltung der Anwendung bestimmen. Somit können Steuerelemente einer Benutzeroberfläche gemäß dem Rendering-Anwendungsfall, für den das Terminal 300 angewendet wird, variieren. Zum Beispiel können es standardmäßige Steuerelemente einer Benutzeroberfläche 378 einem Bediener erlauben, die hierin vorstehend beschriebenen Anhalte-, Fortsetz-, Scan-, Such- und Scrub-Vorgänge durchzuführen. In einigen Anwendungen kann es jedoch vorteilhaft sein, Anwendungen zu diesen Steuerelementen zu verweigern. In einer Umgebung (zum Beispiel einem Restaurant oder Fitnessstudio), in der mehrere Anzeigen synchronisierte Inhalte zur Anzeige durch ein großes Publikum anzeigen, kann es zum Beispiel vorteilhaft sein, einzelnen Benutzern die Fähigkeit zu verweigern, das Medien-Rendering zum Beispiel durch Anhalten oder Überspringen von Inhalten zu steuern.
-
Die vorstehende Erörterung hat den Betrieb der Ausführungsformen der vorliegenden Erfindung im Kontext von Terminals beschrieben, die verschiedene Komponenten einschließen. Üblicherweise werden diese Komponenten als elektronische Vorrichtungen bereitgestellt. Sie können in integrierten Schaltungen wie anwendungsspezifischen integrierten Schaltungen, anwenderprogrammierbaren Gatteranordnungen und/oder Digitalsignalprozessoren ausgeführt sein. Alternativ dazu können sie in Computerprogrammen ausgeführt sein, die auf Personal Computern, Notebook-Computern, Tablet-Computern, Smartphones, Set-Top-Boxen, Spielplattformen, tragbaren Medienwiedergabevorrichtungen und/oder Computer-Servern ausgeführt werden. Diese Computerprogramme werden üblicherweise in physischen Speichermedien wie elektronisch, magnetisch und/oder optisch basierten Speichervorrichtungen gespeichert, wo sie auf einen unter der Kontrolle eines Betriebssystems stehenden Prozessor gelesen und ausgeführt werden. Und natürlich können diese Komponenten als Hybridsysteme bereitgestellt werden, die Funktionalität wie gewünscht über speziell dafür vorgesehene Hardwarekomponenten und programmierte Universalprozessoren verteilen.
-
Wenngleich die vorstehende Erörterung ein Medienelement 140 (1) im Kontext einer Verzeichnisdatei und verschiedener Datenströme beschrieben hat, gelten die Prinzipien der vorliegenden Offenbarung darüber hinaus für Medienelemente mit verschiedenen Architekturen. Zum Beispiel kann ein Medienelement eine Architektur einer flachen Datei (Flat File) haben, in der alle Medieninhalte und Metadatenbeschreibungen von Zeitleisten in einer einzelnen herunterladbaren Datei bereitgestellt werden. Ferner muss das Medienelement keine Videodatei per se sein; die Prinzipien der vorliegenden Offenbarung gelten für Medienelemente, die reine Audioinhalte, Spielinhalte und dergleichen darstellen. Somit würden die Medienelemente durch Mediensenkenvorrichtungen wie Anzeigen und/oder Lautsprecher gerendert, die für die Eigenschaft des Medienelements geeignet sind.
-
Verschiedene Ausführungsformen der Erfindung sind hierin spezifisch veranschaulicht und/oder beschrieben. Es versteht sich jedoch, dass Modifikationen und Variationen der Erfindung von den vorstehenden Lehren abgedeckt sind und innerhalb des Bereichs der beigefügten Ansprüche liegen, ohne vom Wesen und beabsichtigten Umfang der Erfindung abzuweichen.