-
QUERVERWEIS AUF VERWANDTE ANMELDUNG
-
Diese Offenbarung beansprucht Priorität der gleichzeitig anhängigen US-Patentanmeldung Nr. 13/227,364 des gleichen Inhabers (MOBIP060US), eingereicht am 7. September 2011, mit dem Titel ”ECHTZEIT-SCHLÜSSELFRAME-SYNCHRONISIERUNG”, und der gleichzeitig anhängigen vorläufigen US-Anmeldung Nr. 61/381,865 (MOBIP060P) mit dem Titel ”ECHTZEIT-SCHLÜSSELFRAME-SYNCHRONISIERUNG”, eingereicht am 10 September 2010, wobei die Offenbarungen der früheren Anmeldungen Teil und Gegenstand der vorliegenden Offenbarung sind.
-
BESCHREIBUNG DES EINSCHLÄGIGEN STANDS DER TECHNIK
-
Die vorliegende Offenbarung betrifft eine Echtzeitsynchronisierung von Schlüsselframes von mehreren Strömen.
-
Verschieden Vorrichtungen sind in der Lage, Medienströme abzuspielen, die von einem Streaming Server kommend empfangen werden. Ein Beispiel für einen Medienstrom ist ein Moving Picture Experts Group(MPEG-)Videostrom. Medienströme, wie z. B. MPEG-Videoströme, kodieren häufig Mediendaten als eine Sequenz von Frames und liefern die Sequenz von Frames zu einer Clientvorrichtung. Einige Frames sind Schlüsselframes, die im Wesentlichen sämtliche Daten liefern, die zum Darstellen eines Bilds erforderlich sind. Ein MPEG I-Frame ist ein Beispiel für ein Schlüsselframe. Andere Frames sind prädiktive Frames, die Informationen über Unterschiede zwischen dem prädiktiven Frame und einem Referenz-Schlüsselframe liefern.
-
Prädiktive Frames, wie z. B. MPEG B-Frames und MPEG P-Frames sind kleiner und bandbreiteneffizienter als Schlüsselframes. Prädiktive Frames stützen sich hinsichtlich Informationen jedoch nur auf Schlüsselframes und können ohne Informationen von Schlüsselframes nicht genau dargestellt werden. Ein Streaming Server weist häufig eine Anzahl von Medienströmen auf, die er empfängt und in seinen Puffern hält.
-
Bei einigen Beispielen empfängt ein Streaming Server und/oder ein Live-Encoder mehrere Ströme für den gleichen Inhalt. Die mehreren Ströme können unterschiedliche Bitraten, unterschiedliche Frameraten oder unterschiedliche Targetauflösungen aufweisen. Wenn sich eine Clientvorrichtung mit einem Streaming Server verbindet, liefert der Streaming Server einen ausgewählten Medienstrom zu der Clientvorrichtung. Die Clientvorrichtung kann dann den Medienstrom unter Verwendung eines Dekodiermechanismus abspielen.
-
Mechanismen zum effizienten Liefern von Medienströmen an Clientvorrichtungen unterliegen jedoch Einschränkungen. In vielen Fällen werden Medienströme derart geliefert, dass negative Effekte eingebracht werden. Folglich stellen die Techniken der vorliegenden Erfindung Mechanismen zum Verbessern der Fähigkeit eines Streaming Servers zum effizienten Liefern von Medienströmen zu Clientvorrichtungen bereit.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die Erfindung ist am besten mit Bezug auf die folgende Beschreibung in Zusammenhang mit den beiliegenden Zeichnungen verständlich, in denen bestimmte Ausführungsformen der vorliegenden Erfindung dargestellt sind.
-
1 zeigt eine Sequenz von Videostromframes.
-
2 zeigt eine weitere Sequenz von Videostromframes.
-
3 zeigt ein Beispiel für Schlüsselframes, die mehreren Strömen zugeordnet sind.
-
4 zeigt ein Beispiel für ein Netzwerk, das die Techniken der vorliegenden Erfindung nutzen kann.
-
5 zeigt ein Beispiel für einen Streaming Server.
-
6 zeigt eine Verarbeitung an einem Streaming Server.
-
7 zeigt eine Verarbeitung an einer Clientvorrichtung.
-
BESCHREIBUNG VON BESONDEREN AUSFÜHRUNGSFORMEN
-
Es wird nun genauer auf einige spezifische Beispiele der Erfindung Bezug genommen, einschließlich der besten Methoden, die die Erfinder zum Durchführen der Erfindung in Betracht ziehen. Beispiele für diese spezifischen Ausführungsformen sind in den beiliegenden Zeichnungen dargestellt. Obwohl die Erfindung in Zusammenhang mit diesen spezifischen Ausführungsformen beschrieben wird, sei darauf hingewiesen, dass die Erfindung nicht auf die beschriebenen Ausführungsformen beschränkt ist. Sie deckt im Gegenteil Alternativen, Modifikationen und Äquivalente ab, die in den Geist und den Umfang der Erfindung fallen, wie sie in den beiliegenden Patentansprüchen definiert ist.
-
Zum Beispiel werden die Techniken der vorliegenden Erfindung in Zusammenhang mit bestimmten Netzwerken und bestimmten Vorrichtungen beschrieben. Es sei jedoch darauf hingewiesen, dass die Techniken der vorliegenden Erfindung auf eine Vielzahl von Netzwerken und eine Vielzahl von unterschiedlichen Vorrichtungen angewendet werden können. In der folgenden Beschreibung sind zahlreiche spezifische Details dargelegt, um ein gründliches Verständnis der vorliegenden Erfindung zu ermöglichen. Die vorliegende Erfindung kann auch ohne einige oder sämtliche dieser spezifischen Details implementiert werden. In anderen Fällen sind bekannte Prozessabläufe nicht detailliert beschrieben, um die vorliegende Erfindung nicht unnötigerweise unklar zu machen.
-
Verschiedene Techniken und Mechanismen der vorliegenden Erfindung werden aus Gründen der Klarheit manchmal im Singular beschrieben. Es sei jedoch darauf hingewiesen, dass einige Ausführungsformen mehrere Wiederholungen einer Technik oder mehrere Instanziierungen eines Mechanismus umfassen, sofern nichts anderes angegeben ist. Zum Beispiel wird ein Prozessor in einer Vielzahl von Kontexten verwendet. Es sei jedoch darauf hingewiesen, dass auch mehrere Prozessoren verwendet werden können, wobei dies in den Umfang der vorliegenden Erfindung fällt, sofern nichts anderes angegeben ist. Ferner werden bei den Techniken und Mechanismen der vorliegenden Erfindung manchmal zwei Entitäten als miteinander verbunden beschrieben. Es sei darauf hingewiesen, dass eine Verbindung zwischen zwei Entitäten nicht notwendigerweise eine direkte ungehinderte Verbindung bedeutet, da eine Vielzahl von weiteren Entitäten zwischen den zwei Entitäten vorgesehen sein kann. Zum Beispiel kann ein Prozessor mit einem Speicher verbunden sein, es sei jedoch darauf hingewiesen, dass eine Vielzahl von Brücken und Steuereinrichtungen zwischen dem Prozessor und dem Speicher vorgesehen sein kann. Folglich bedeutet eine Verbindung nicht notwendigerweise eine direkte ungehinderte Verbindung, sofern nichts anderes angegeben ist.
-
Überblick
-
Es sind Mechanismen vorgesehen zum Durchführen einer Echtzeitsynchronisierung von Schlüsselframes über mehrere Ströme. Ein Streaming Server fragt Frames von verschiedenen Medienströmen mit unterschiedlichen Qualitätsniveaus zum Kodieren eines Stücks Medieninhalts ab. Der Streaming Server identifiziert Schlüsselframes in den Medienströmen und Zeitpunkte zum Abfragen nach Schüsselframes, die die Chancen erhöhen, Schlüsselframes aus der gleichen Gruppe von Bildern (GOPs = Group of Pictures) zu detektieren. Bei einigen Beispielen liegt der Abfragepunkt im Wesentlichen in der Mitte zwischen zwei GOPs. Wenn eine Verbindungsanforderung bezüglich eines alternativen Stroms von einer Clientvorrichtung kommend empfangen wird, wird eine gemessene Verzögerung zum Berechnen einer verbesserten Startzeit verwendet.
-
Besondere Ausführungsformen
-
Streaming Server empfangen Medienströme, wie z. B. Audio- und Videoströme von zugeordneten Kodierern und Inhaltsanbietern und senden die Medienströme an einzelne Vorrichtungen. Zum Schonen von Netzwerkressourcen werden Medienströme typischerweise kodiert, um eine effiziente Übertragung zu ermöglichen.
-
Ein Mechanismus zum Kodieren von Medienströmen, wie z. B. Videoströmen, umfasst die Verwendung von Schlüsselframes und prädiktiven Frames. Ein Schlüsselframe enthält im Wesentlichen sämtliche Daten, die zum Abspielen eines Videoframes benötigt werden. Ein prädiktives Frame enthält jedoch nur Änderungsinformationen oder Deltainformationen zwischen sich selbst und einem Referenz-Schlüsselframe. Folglich sind prädiktive Frames typischerweise viel kleiner als Schlüsselframes. Generell wird jedes Frame, das im Wesentlichen für sich allein dargestellt werden kann, hier als ein Schlüsselframe bezeichnet. Jedes Frame, das sich auf Informationen von einem Referenz-Schlüsselframe stützt, wird hier als ein prädiktives Frame bezeichnet. In vielen Fällen werden viele prädiktive Frames für jedes übertragene Schlüsselframe übertragen. Moving Picture Experts Group (MPEG) bietet einige Beispiele für Kodiersysteme, bei denen Schlüsselframes und prädiktive Frames verwendet werden. MPEG und seine verschiedenen Verkörperungen verwenden I-Frames als Schlüsselframes und B-Frames und P-Frames als prädiktive Frames.
-
Ein Streaming Server weist einen Puffer zum Halten von Medienströmen auf, die von vorgeschalteten Quellen kommend empfangen werden. Bei einigen Beispielen weist ein Streaming Server einen First-in-First-out-(FIFO-)Puffer pro Kanal für empfangenes Video auf. Wenn eine Clientvorrichtung einen bestimmten Medienstrom von dem Streaming Server anfordert, beginnt der Streaming Server mit dem Liefern des Medienstroms, typischerweise durch Liefern des ältesten Frames, das sich noch in dem Puffer befindet. Eine Clientvorrichtung kann einen Medienstrom anfordern, wenn ein Benutzer einen Kanal wechselt, eine Anwendung startet oder eine andere Aktion durchführt, die eine Anforderung bezüglich eines bestimmten Medienstroms oder Kanals initiiert. Aufgrund des relativ seltenen Auftretens von Schlüsselframes in einem Videostrom wird die Clientvorrichtung höchstwahrscheinlich damit beginnen, prädiktive Frames zu empfangen. Prädiktive Frames stützen sich beim Liefern eines klaren Bilds auf Informationen von einem Referenz-Schlüsselframe. Die Clientvorrichtung kann dann entweder damit beginnen, unter Verwendung von Informationen von prädiktiven Frames ein verzerrtes Bild darzustellen oder kann einfach die prädiktiven Frames fallen lassen. In beiden Fällen ist das Erlebnis für den Benutzer mangelhaft, da die Clientvorrichtung ein unverzerrtes Bild erst dann darstellen kann, wenn ein Schlüsselframe empfangen wird. Je nach Kodierschema kann eine beträchtliche Anzahl von prädiktiven Frames empfangen werden, bevor ein Schlüsselframe empfangen wird.
-
Um die große Vielzahl von mobilen Vorrichtungen zu unterstützen, kodieren Videosender typischerweise jede Live-Einspeisung in mehrere verschiedene Ströme mit unterschiedlichen Bitraten, Frameraten und Bildschirmauflösungen. Bei modernen Verteilungssystemen können Clientvorrichtungen einen Vorteil aus dem Zugriff auf mehrere Ströme ziehen und adaptiv Ströme umschalten, wenn dies zum Einstellen auf eine zur Verfügung stehende Bandbreite, Verarbeitungsleistung etc. erforderlich ist. Es wird jedoch erkannt, dass Schlüsselframes nicht über die mehreren verschiedenen Ströme synchronisiert sind. Ferner driftet die Positionierung von Schlüsselframes mit der Zeit ab. Folglich können Stromveränderungen häufig für einen Benutzer sehr störend sein, da es beträchtliche Zeitverschiebungen beim Übergang von einem Strom zu einem anderen Strom mit einer anderen Bitrate, Framerate etc. geben kann. Es ist wünschenswert, die Umschaltung für den Benutzer nahtlos durchzuführen, da es sehr störend ist, wenn es einen beträchtlichen Zeitsprung bei der Stromumschaltung gibt.
-
Folglich kann dann, wenn eine Vorrichtung anfangs eine Stromumschaltung anfordert, eine Anzahl von abträglichen Effekten auftreten. Ein Benutzer kann eine beträchtliche Verzögerung erleben, bevor der Benutzer ein genaues Bild sehen kann. Alternativ kann der Benutzer einen Zeitsprung wahrnehmen, wenn ein Live-Encoder versucht, das nächstliegende Schlüsselframe bei einer Stromumschaltung zu finden. Bei anderen Beispielen kann ein Benutzer sowohl eine Verzögerung beim Sehen eines genauen Bildes als auch einen Zeitsprung erleben. Bei den Techniken der vorliegenden Erfindung wird erkannt, dass die Übertragung von unausgerichteten Schlüsselframes und/oder unbrauchbaren prädiktiven Frames bei einer Verbindungsanforderung ein Faktor ist, der zu den abträglichen Effekten beiträgt.
-
Bei verschiedenen Ausführungsformen haben ein Live-Encoder und/oder ein Streaming Server die Aufgabe, den Ausgang über verschiedene Ströme auszurichten. Bei bestimmten Ausführungsformen werden Schlüsselframes für sämtliche verschiedenen Ströme zeitlich ausgerichtet. Bei verschiedenen Ausführungsformen besteht Bedarf an einer bestimmten Art von Verarbeitung, mit der die schlechte Ausrichtung kompensiert werden kann.
-
Aufgrund des Implementierens eines Algorithmus, der adaptiv Zeitversätze für Schlüsselframes über mehrere Varianten berechnet, brauchen die Eingangseinspeisungen nicht perfekt ausgerichtet zu sein. Solange der maximale Abstand zwischen zwei aufeinanderfolgenden Schlüsselframes kleiner ist als die Hälfte der GOP-Größe, kann der Algorithmus den korrekten Einstellwert finden. Durch Anwenden dieses Algorithmus auf den Ausgang von Live-Encodern können Stromumschaltungen für den Endbenutzer vollkommen nahtlos erfolgen. Dadurch wird das Benutzererlebnis verbessert und wird die Nutzung der zur Verfügung stehenden Bandbreite maximiert.
-
Bei vielen bekannten Implementierungen sind Streaming Server dazu vorgesehen, große Mengen von Daten von einer Vielzahl von Quellen auf so effiziente Weise wie möglich zu einer Vielzahl von Clientvorrichtungen zu liefern. Folglich führen Streaming Server häufig nur in geringem Maße ein Verarbeitung von Medienströmen durch, da eine Verarbeitung einen Ablauf signifikant verlangsamen kann. Bei den Techniken und Mechanismen wird jedoch erkannt, dass es vorteilhaft ist, durch Hinzufügen eines zusätzlichen Maßes an Verarbeitung mehr Intelligenz bei den Streaming Servern zu bewirken. Durch Verwenden eines intelligenten schlüsselframeempfindlichen Puffers in einem Streaming Server kann ein Anfangs-Schlüsselframe zu dem Benutzer geliefert werden, wenn eine Clientvorrichtung eine Verbindung anfordert. Die Bandbreite wird besser ausgenutzt, die Wartezeit wird verkürzt und das Benutzererlebnis wird verbessert.
-
Bei verschiedenen Ausführungsformen berechnet ein Streaming Server Zeitversätze für Schlüsselframes, identifiziert Schlüsselframes in Medienströmen, die in einem oder mehreren Puffern gehalten werden. Wenn eine Verbindungsanforderung von einer Clientvorrichtung kommend empfangen wird, wird ein Schlüsselframe selbst dann zu der Clientvorrichtung geliefert, wenn das Schlüsselframe nicht das erste zur Verfügung stehende Frame ist. Das heißt, dass ein Schlüsselframe selbst dann geliefert wird, wenn ein oder mehr prädiktive Frames vor dem Schlüsselframe zur Verfügung stehen. Dies ermöglicht es einer Clientvorrichtung, ein Frame zu empfangen, das sie ohne Verzerrung darstellen kann. Nachfolgende prädiktive Frames können dann das Schlüsselframe referenzieren. Verbindungsanforderungen, wie z. B. Kanalumschaltungen oder anfängliche Kanalanforderungen werden auf effiziente Weise verwaltet. Obwohl es immer noch eine Verzögerung bei der Übertragung und eine Verzögerung bei der Pufferung und Dekodierung an einer Clientvorrichtung geben kann, wird eine Verzögerung wegen des Empfangs eines unbrauchbaren prädiktiven Frames verringert, da ein Streaming Server anfangs ein brauchbares Schlüsselframe zu einer Clientvorrichtung liefert.
-
1 zeigt eine schematische Darstellung eines Beispiels für eine Sequenz von Frames. Bei verschiedenen Ausführungsformen wird eine Sequenz von Frames, wie z. B. eine Sequenz von Videoframes, an einem Streaming Server empfangen. Bei einigen Ausführungsformen ist die Sequenz von Videoframes einem bestimmten Kanal zugeordnet, und ein Puffer ist jedem Kanal zugewiesen. Andere Sequenzen von Videoframes können in anderen Puffern gehalten sein, die anderen Kanälen zugewiesen sind. Bei anderen Beispielen werden Puffer oder Teile von Puffern für separate Videoströme und separate Kanäle aufrechterhalten. Bei bestimmten Ausführungsformen wird ein Schlüsselframe 101 frühzeitig entlang einer Zeitachse 141 empfangen. Ein Beispiel für ein Schlüsselframe 101 ist ein I-Frame, das im Wesentlichen sämtliche Daten aufweist, die eine Clientvorrichtung benötigt, um ein Videoframe darzustellen. Dem Schlüsselframe 101 folgen prädiktive Frames 103, 105, 107, 109, 111, 113, 115 und 117.
-
Bei verschiedenen Ausführungsformen wird eine Sequenz von unterschiedlichen Frametypen, die mit einem Schlüsselframe beginnt und unmittelbar vor einem nachfolgenden Schlüsselframe endet, hier als eine Gruppe von Bildern (GOP) bezeichnet. Das Schlüsselframe 101 und die prädiktiven Frames 103, 105, 107, 109, 111, 113, 115 und 117 sind einer GOP 133 zugeordnet und werden in einem Puffer 131 oder einem Pufferteil 131 gehalten. Eine Kodieranwendung bestimmt typischerweise die Länge und die Frametypen, die in einer GOP enthalten sind. Bei verschiedenen Ausführungsformen liefert ein Kodierer die Sequenz von Frames zu dem Streaming Server. Bei einigen Beispielen ist eine GOP 15 Frames lang und weist ein Schlüsselframe, wie z. B. ein I-Frame, auf, dem prädiktive Frames, wie z. B. B- und P-Frames folgen. Eine GOP kann eine Vielzahl von Längen aufweisen. Eine effiziente Länge für eine GOP wird typischerweise auf der Basis von Charakteristiken des Videostroms und Bandbreiteneinschränkungen bestimmt. Zum Beispiel kann eine Low-Motion-Szene von einer längeren GOP mit mehr prädiktiven Frames profitieren. Low-Motion-Szenen benötigen nicht so viele Schlüsselframes. Eine High-Motion-Szene kann von einer kürzeren GOP profitieren, da mehr Schlüsselframes benötigt werden können, um ein gutes Benutzererlebnis zu bieten.
-
Bei verschiedenen Ausführungsformen folgt der GOP 133 eine GOP 137, die in einem Puffer 135 oder Pufferteil 135 gehalten wird. Die GOP 137 weist ein Schlüsselframe 119 auf, dem prädiktive Frames 121, 123, 125, 127, 129, 131, 133 und 135 folgen. Bei einigen Beispielen ist ein Puffer, der zum Halten der Sequenz von Frames verwendet wird, ein First-in-First-out-(FIFO-)Puffer. Wenn neue Frames empfangen werden, werden die ältesten Frames aus dem Puffer entfernt.
-
Wenn sich ein Client 151 verbindet, empfängt der Client anfangs das prädiktive Frame 105, dem die prädiktiven Frames 107, 109, 111, 113, 115 und 117 folgen. Der Client 151 empfängt insgesamt 7 prädiktive Frames, die nicht korrekt dekodiert werden können. In einigen Fällen werden die 7 prädiktiven Frames von einem Client einfach fallen gelassen. Erst wenn 7 prädiktive Frames empfangen worden sind, empfängt der Client 151 ein Schlüsselframe 119. Wenn sich ein Client 153 verbindet, empfängt der Client anfangs das prädiktive Frame 109, dem die prädiktiven Frames 111, 113, 115 und 117 folgen. Der Client 153 empfängt insgesamt 5 prädiktive Frames, die nicht korrekt dekodiert werden können. In einigen Fällen werden die 5 prädiktiven Frames von einem Client einfach fallen gelassen. Erst wenn 5 prädiktive Frames empfangen worden sind, empfängt der Client 153 ein Schlüsselframe 119. Wenn sich ein Client 155 verbindet, empfängt der Client anfangs das prädiktive Frame 121, dem prädiktive Frames 123, 125, 127, 129, 131, 133 und 135 folgen. Der Client 155 empfängt insgesamt 8 prädiktive Frames, die nicht korrekt dekodiert werden können. In einigen Fällen werden die 8 prädiktiven Frames von einem Client einfach fallen gelassen. Erst wenn 8 prädiktive Frames empfangen worden sind, empfängt der Client 155 ein Schlüsselframe.
-
Ein Übertragen von prädiktiven Frames dann, wenn ein Client eine Verbindung anfordert, ist ineffizient und trägt zu einem mangelhaften Benutzererlebnis bei. Folglich wird bei den Techniken nach der vorliegenden Erfindung in Betracht gezogen, anfangs ein synchronisiertes Schlüsselframe zu einem Client zu liefern, wenn ein Client einen neuen Strom anfordert.
-
2 zeigt eine schematische Darstellung eines weiteren Beispiels für eine Sequenz von Frames. Bei verschiedenen Ausführungsformen wird eine Sequenz von Frames, wie z. B. eine Sequenz von Videoframes, an einem Streaming Server empfangen. Bei einigen Ausführungsformen ist die Sequenz von Videoframes einem bestimmten Kanal zugeordnet, und ein Puffer ist jedem Kanal zugewiesen. Andere Sequenzen von Videoframes können in anderen Puffern gehalten sein, die anderen Kanälen zugewiesen sind. Bei anderen Beispielen werden Puffer oder Teile von Puffern für separate Videoströme und separate Kanäle aufrechterhalten. Bei bestimmten Ausführungsformen wird ein Schlüsselframe 201 frühzeitig entlang einer Zeitachse 241 empfangen. Ein Beispiel für ein Schlüsselframe 201 ist ein I-Frame, das im Wesentlichen sämtliche Daten aufweist, die eine Clientvorrichtung benötigt, um ein Videoframe darzustellen. Dem Schlüsselframe 201 folgen prädiktive Frames 203, 205, 207, 209, 211, 213, 215 und 217.
-
Bei verschiedenen Ausführungsformen wird eine Sequenz von unterschiedlichen Frametypen, die mit einem Schlüsselframe beginnt und unmittelbar vor einem nachfolgenden Schlüsselframe endet, hier als eine Gruppe von Bildern (GOP) bezeichnet. Das Schlüsselframe 201 und die prädiktiven Frames 203, 205, 207, 209, 211, 213, 215 und 217 sind einer GOP 233 zugeordnet und werden in einem Puffer 231 oder einem Pufferteil 231 gehalten. Eine Kodieranwendung bestimmt typischerweise die Länge und die Frametypen, die in einer GOP enthalten sind. Bei verschiedenen Ausführungsformen liefert ein Kodierer die Sequenz von Frames zu dem Streaming Server. Bei einigen Beispielen ist eine GOP 15 Frames lang und weist ein Schlüsselframe, wie z. B. ein I-Frame, auf, dem prädiktive Frames, wie z. B. B- und P-Frames folgen. Eine GOP kann eine Vielzahl von Längen aufweisen. Eine effiziente Länge für eine GOP wird typischerweise auf der Basis von Charakteristiken des Videostroms und Bandbreiteneinschränkungen bestimmt. Zum Beispiel kann eine Low-Motion-Szene von einer längeren GOP mit mehr prädiktiven Frames profitieren. Low-Motion-Szenen benötigen nicht so viele Schlüsselframes. Eine High-Motion-Szene kann von einer kürzeren GOP profitieren, da mehr Schlüsselframes benötigt werden können, um ein gutes Benutzererlebnis zu bieten.
-
Bei verschiedenen Ausführungsformen folgt der GOP 233 eine GOP 237, die in einem Puffer 235 oder Pufferteil 235 gehalten wird. Die GOP 237 weist ein Schlüsselframe 219 auf, dem prädiktive Frames 221, 223, 225, 227, 229, 231, 233 und 235 folgen. Bei einigen Beispielen ist ein Puffer, der zum Halten der Sequenz von Frames verwendet wird, ein First-in-First-out-(FIFO-)Puffer. Wenn neuere Frames empfangen werden, wird eine entsprechende Anzahl von älteren Frames aus dem Puffer entfernt.
-
Wenn sich ein Client 251 verbindet, empfängt der Client anfangs kein prädiktives Frame mehr. Bei verschiedenen Ausführungsformen empfängt der Client 251 das früheste zur Verfügung stehende Schlüsselframe. In einigen Fällen kann das früheste Schlüsselframe, das in dem Puffer noch zur Verfügung steht, das Schlüsselframe 201 sein. Der Client braucht keine Frames fallen zu lassen oder verzerrte Bilder darzustellen. Stattdessen empfängt der Client 251 unverzüglich ein Schlüsselframe, das im Wesentlichen sämtliche Informationen aufweist, die benötigt werden, um mit dem Abspielen des Stroms zu beginnen. Auf im Wesentlichen gleiche Weise empfängt dann, wenn ein Client 253 eine Verbindung anfordert, der Client anfangs das Schlüsselframe 201. Wenn das Schlüsselframe 201 nicht mehr in dem Puffer zur Verfügung steht, empfängt ein sich verbindender Client das Schlüsselframe 219, selbst wenn das bedeutet, dass die prädiktiven Frames 203, 205, 207, 209, 211, 213, 215 und 217 übersprungen werden. Zum Beispiel kann sich ein Client 255 zu einem Zeitpunkt verbinden, zu dem das prädiktive Frame 211 geliefert werden würde, der Streaming Server identifiziert jedoch auf intelligente Weise das nächste zur Verfügung stehende Schlüsselframe als das Schlüsselframe 219 und liefert dieses Schlüsselframe 219 zu dem Client 255. Es werden keine prädiktiven Frames zu Beginn einer Verbindungsanforderung auf ineffiziente Weise übertragen. Bei verschiedenen Ausführungsformen werden anfangs nur Schlüsselframes auf Verbindungsanforderungen hin geliefert.
-
Bei verschiedenen Ausführungsformen führt ein Streaming Server eine Verarbeitung an jedem empfangenen Frame durch, um festzustellen, welche Frames Schlüsselframes sind. Das Identifizieren von Schlüsselframes kann das Dekodieren oder teilweise Dekodieren eines Frames umfassen. Bei anderen Beispielen können Schlüsselframes auf der Basis der Größe des Frames identifiziert werden, da Schlüsselframes typischerweise viel größer sind als prädiktive Frames. Bei anderen Beispielen wird nur ein Teilsatz von Frames dekodiert oder teilweise dekodiert. Bei noch weiteren Beispielen bestimmt der Streaming Server dann, wenn ein Schlüsselframe bestimmt worden ist, die GOP-Größe N und identifiziert jedes Nte Frame, das einem Schlüsselframe als ein nachfolgende Schlüsselframe folgt. Eine Vielzahl von Vorgehensweisen kann angewendet werden, um Schlüsselframes und prädiktive Frames zu bestimmen. Obwohl bei den Techniken der vorliegenden Erfindung effiziente Mechanismen zum Identifizieren von Schlüsselframes in Betracht gezogen werden, führt der Streaming Server ein bestimmtes Maß an zusätzlicher Verarbeitung durch.
-
Ferner kann der Streaming Server ein prädiktives Frame, wie z. B. das prädiktive Frame 213, zu einem bereits verbundenen Client liefern, während er ein Schlüsselframe 219 zu einem neuen Client liefert, der eine Verbindungsanforderung stellt. Dies kann zu einer geringfügigen, aber typischerweise kaum wahrnehmbaren zeitlichen Abweichung in den Medien führen, die von unterschiedlichen Clients betrachtet werden. Das heißt, dass ein erster Client die prädiktiven Frames 213, 215 und 217 empfangen kann, während ein zweiter Client das Schlüsselframe 219 und die prädiktiven Frames 221 und 223 empfangen kann. Bei den Techniken der vorliegenden Erfindung wird erkannt, dass diese Zeitverschiebung bei einem typischen Benutzererlebnis nicht störend ist, und der Streaming Server ist typischerweise in der Lage, das Liefern von unterschiedlichen Frames von einem Strom zu unterschiedlichen Clientvorrichtungen zu verwalten.
-
3 zeigt ein Beispiel für ein Schlüsselframe, das mehreren Strömen zugeordnet ist. Drei Varianten eines Stroms, der Strömen r, b und g entspricht, sind vorgesehen. Die drei Varianten r, b und g entsprechen drei Einspeisungen mit unterschiedlichen Qualitäten (z. B. Bitraten). Die r-, b- und g-Marker sind Schlüsselframes auf einer Zeitachse. Bei bestimmten Ausführungsformen weist Variante r Schlüsselframe r1 301 auf, r2 311 und r3 321 auf. Variante b weist Schlüsselframe b1 303, b2 313 und b3 323 auf. Variante g weist Schlüsselframe g1 305, g2 315 und g3 325 auf. Bei verschiedenen Ausführungsformen sind die Schlüsselframes nicht perfekt synchronisiert, da sie nicht zeitlich ausgerichtet sind. Die Schlüsselframes können ferner abdriften, da das Kodieren für diese drei Ströme nicht perfekt synchronisiert ist.
-
Es sei darauf hingewiesen, dass eine Anzahl von anderen Frames zwischen Schlüsselframes vorhanden sein können. Aus Gründen der Klarheit sind jedoch nur Schlüsselframes gezeigt. Bei bestimmten Ausführungsformen es ist wünschenswert, Ströme durch Identifizieren von Schlüsselframes für jede Variante umzuschalten. Wenn das Abfragen bei T1 startet, sind die ersten detektierten Schlüsselframes r2 311, b2 313 und g2 315, die alle zu derselben GOP gehören. Wenn jedoch das Abfragen bei T2 startet, treten abträgliche Effekte beim Umschalten des Stroms auf, da die ersten detektierten Schlüsselframes r3 321, b2 313 und g2 315 sind. Das Schlüsselframe r2 311 fehlt, und die Schlüsselframes gehören zu unterschiedlichen GOPs.
-
Folglich wird bei den Techniken der vorliegenden Erfindung in Betracht gezogen, das Abfragen in der Mitte von zwei GOPs zu starten. Dadurch wird die Wahrscheinlichkeit erhöht, dass Schlüsselframes, die zu derselben GOP gehören, detektiert werden. Für jeden Startzeitpunkt Tx berechnet der Algorithmus einen Versatz d, der zu Tx addiert werden sollte, um eine geeignete Startposition für das Abfragen zu erhalten. In der Abbildung ist T2 + d = T3. Das heißt, dass dann, wenn wir T2 als Startzeitpunkt wählen, T2 mit d eingestellt wird, um T3 zwecks Erhalts eines verbesserten Startzeitpunkts zu erhalten.
-
Wenn die Schlüsselframes perfekt periodisch sind und einmal pro GOP-Intervall auftreten, wäre d für jeden Wert von T konstant. Dies ist häufig nicht der Fall, normalerweise erfolgt ein geringfügiges Abdriften (z. B. aufgrund von Runden etc. in dem Live-Encoder). Das heißt, dass d regelmäßig neu berechnet werden sollte, um das Abdriften in dem Live-Encoder zu justieren. Bei bestimmten Ausführungsformen wird d jede 3. Minute aktualisiert.
-
4 zeigt eine schematische Darstellung eines Beispiels für ein Netzwerk, bei dem die Techniken der vorliegenden Erfindung genutzt werden können. Obwohl ein bestimmtes Beispiel dargestellt ist, das bestimmte Vorrichtungen zeigt, sei darauf hingewiesen, dass die Techniken der vorliegenden Erfindung auf eine Vielzahl von Streaming Servern und Netzwerken angewendet werden können. Bei verschiedenen Ausführungsformen können die Techniken der vorliegenden Erfindung an jedem Streaming Server angewendet werden, der einen Prozessor, einen Speicher und die Fähigkeit aufweist, Charakteristiken von Frames, wie z. B. den Frametyp, in einem Medienstrom zu identifizieren. Bei verschiedenen Ausführungsformen werden Videoströme von einem zugeordneten Kodierer zu einem Streaming Server geliefert, und dieser verwaltet Verbindungsanforderungen von Clientvorrichtungen, wie z. B. Computersystemen, Mobiltelefonen, persönlichen digitalen Assistenten, Videoempfängern und jeder anderen Vorrichtung, die die Fähigkeit besitzt, einen Videostrom zu dekodieren.
-
Bei verschiedenen Ausführungsformen wird ein Medieninhalt von einer Anzahl von unterschiedlichen Quellen 485 geliefert. Der Medieninhalt kann von Filmarchiven, Kabelgesellschaften, Film- und Fernsehstudios, kommerziellen und geschäftlichen Benutzern etc. zur Verfügung gestellt werden und auf einem Medien-Aggregationsserver 461 gehalten werden. Mechanismen zum Erhalten von Medieninhalt von einer großen Anzahl von Quellen zwecks Lieferung des Medieninhalts an mobile Vorrichtungen in Liveübertragungs-Streams werden hier als ein Medieninhalt-Aggregationsserver bezeichnet. Der Medieninhalt-Aggregationsserver 461 kann aus Gruppen von Servern gebildet sein, die sich in unterschiedlichen Rechenzentren befinden. Bei verschiedenen Ausführungsformen wird Inhalt, der zu einem Medien-Aggregationsserver 461 geliefert wird, in einer Vielzahl von unterschiedlichen Kodierformaten mit zahlreichen Video- und Audio-Codecs bereitgestellt. Ein Medieninhalt kann ferner über Satelliteneinspeisung 457 geliefert werden.
-
Eine Encoder Farm 471 ist der Satelliteneinspeisung 487 zugeordnet und kann ferner dem Medien-Aggregationsserver 461 zugeordnet sein. Die Encoder Farm 471 kann zum Verarbeiten von Medieninhalt von der Satelliteneinspeisung 487 sowie möglicherweise von dem Medien-Aggregationsserver 461 in potentiell zahlreiche Kodierformate verwendet werden. Der Medieninhalt kann ferner derart kodiert sein, dass er eine Vielzahl von Datenraten unterstützt. Der Medieninhalt von dem Medien-Aggregationsserver 461 und der Encoder Farm 471 wird als Live-Medium zu einem Streaming Server 475 geliefert. Bei verschiedenen Ausführungsformen konvertiert die Encoder Farm 471 Videodaten in Videoströme, wie z. B. MPEG-Videoströme mit Schlüsselframes und prädiktiven Frames.
-
Mögliche Clientvorrichtungen 401 umfassen persönliche digitale Assistenten (PDAs), Mobiltelefone, PC-Vorrichtungen, Computersysteme, Fernsehempfänger etc. Bei bestimmten Ausführungsformen sind die Clientvorrichtungen mit einem Mobilfunknetz verbunden, das von einem Mobilfunk-Dienstleistungsanbieter betrieben wird. Mobilfunkmasten bieten typischerweise Dienstleistungen in verschiedenen Gebieten. Alternativ kann die Clientvorrichtung mit einem drahtlosen lokalen Netzwerk (WLAN) oder einem anderen drahtlosen Netzwerk verbunden sein. Live-Medienströme, die über RTSP geliefert werden, werden auf einem von einer Vielzahl von drahtlosen Netzwerken übertragen und/oder gekapselt.
-
Bei bestimmten Ausführungsformen sind einige Clientvorrichtungen ferner über ein drahtloses Netzwerk mit einem Medieninhalt-Lieferserver 431 verbunden. Der Medieninhalt-Lieferserver 431 ist dazu ausgebildet, es einer Clientvorrichtung 401 zu ermöglichen, Funktionen im Zusammenhang mit dem Zugreifen auf Live-Medienströme auszuführen. Zum Beispiel ermöglicht es der Medieninhalt-Lieferserver einem Benutzer, ein Konto einzurichten, eine Session Identifier-Zuweisung durchzuführen, verschiedene Kanäle zu abonnieren, sich einzuloggen, auf Programmführerinformationen zuzugreifen und Informationen über Medieninhalt zu erhalten etc. Bei verschiedenen Ausführungsformen liefert der Medieninhalt-Lieferserver nicht den eigentlichen Medienstrom, sondern stellt nur Mechanismen zum Durchführen von Operationen, die mit dem Zugreifen auf Medien in Zusammenhang stehen, zur Verfügung.
-
Bei weiteren Ausführungen ist es möglich, dass der Medieninhalt-Lieferserver ferner Medienclips, -dateien und -ströme zur Verfügung stellt. Der Medieninhalt-Lieferserver ist einem Führergenerator 451 zugeordnet. Der Führergenerator 451 erhält Informationen von verschiedenartigen Quellen, einschließlich Inhaltsanbietern 481 und Medieninformationsquellen 483. Der Führergenerator 451 liefert Programmführer zu einer Datenbank 455 sowie zu dem Medieninhalt-Lieferserver 431, um diese Mobilvorrichtungen 401 zur Verfügung zu stellen. Der Medieninhalt-Lieferserver 431 ist ferner einer abstrakten Kaufmaschine 441 zugeordnet. Die abstrakte Kaufmaschine 441 hält Abonnementinformationen, die verschiedenen Clientvorrichtungen 401 zugeordnet sind. Zum Beispiel verfolgt die abstrakte Kaufmaschine 441 Käufe von Premiumpaketen.
-
Obwohl die verschiedenen Vorrichtungen, wie z. B. der Führergenerator 451, die Datenbank 455, der Medien-Aggregationsserver 461 etc. als separate Entitäten gezeigt sind, sei darauf hingewiesen, dass verschiedene Vorrichtungen auf einem einzelnen Server zusammengeschlossen sein können. Alternativ kann jede Vorrichtung in mehreren Servern oder Gruppen von Servern enthalten sein. Bei verschiedenen Ausführungsformen sind der Führergenerator 451, die Datenbank 455, der Medien-Aggregationsserver 461, die Encoder Farm 471, der Medieninhalt-Lieferserver 431, die abstrakte Kaufmaschine 441 und der Streaming Server 475 in einer Entität enthalten, die hier als ein Medieninhalt-Liefersystem bezeichnet wird.
-
5 zeigt eine schematische Darstellung eines Beispiels für einen Streaming Server 521. Bei verschiedenen Ausführungsformen weist der Streaming Server 521 einen Prozessor 501, einen Speicher 503, Puffer 531, 533, 535 und 537 und eine Anzahl von Schnittstellen auf. Bei einigen Beispielen umfassen die Schnittstellen eine Kodierer-Schnittstelle 511, eine Medien-Aggregationsserver-Schnittstelle 513 und eine Clientvorrichtungs-Schnittstelle 541. Die Kodierer-Schnittstelle 511 und die Medien-Aggregationsserver-Schnittstelle 513 haben die Wirkung, Medienströme, wie z. B. Videoströme, zu empfangen. Bei einigen Beispielen werden Hunderte von Videoströmen, die Hunderten von Kanälen zugeordnet sind, kontinuierlich empfangen und in Puffern 531, 533, 535 und 537 gehalten, bevor sie über die Clientvorrichtungs-Schnittstelle 541 zu Clientvorrichtungen geliefert werden.
-
Bei verschiedenen Ausführungsformen verwaltet der Streaming Server 521 zahlreiche Verbindungsanforderungen von verschiedenen Clientvorrichtungen. Verbindungsanforderungen können aus einer Vielzahl von Benutzeraktionen resultieren, wie z. B. einer Kanalumschaltung, einem Anwendungsstart, einem Programmkauf etc. In einigen Fällen liefert ein Streaming Server 521 einfach das erste zur Verfügung stehende Frame, dem in Reaktion auf eine Verbindungsanforderung durch eine Clientvorrichtung nachfolgende Frames folgen. Bei den Techniken der vorliegenden Erfindung wird jedoch ein intelligenter Streaming Server, der Schlüsselframes in Videoströmen identifiziert und anfangs ein Schlüsselframe zu einer Clientvorrichtung liefert, in Betracht gezogen. Das Schlüsselframe weist im Wesentlichen sämtliche Informationen auf, die eine Clientvorrichtung benötigt, um mit dem Darstellen eines korrekten Videoframes zu beginnen.
-
Bei verschiedenen Ausführungsformen werden die Puffer 531, 533, 535 und 537 auf einer Pro-Kanal-Basis zur Verfügung gestellt. Bei anderen Beispielen werden Puffer auf einer Pro-GOP-Basis zur Verfügung gestellt. Obwohl die Puffer 531, 533, 535 und 537 als diskrete Entitäten dargestellt sind, sei darauf hingewiesen, dass die Puffer 531, 533, 535 und 537 einzelne physische Puffer, Teile von Puffern oder Kombinationen aus mehreren physischen Puffern sein können. Bei einigen Beispielen werden virtuelle Puffer verwendet, und Teile eines Speicherplatzes werden je nach Bedarf bestimmten Kanälen zugewiesen.
-
Obwohl ein bestimmter Streaming Server 521 beschrieben wird, sei darauf hingewiesen, dass eine Vielzahl von alternativen Ausgestaltungen möglich ist. Zum Beispiel sind einige Module, wie z. B. eine Medien-Aggregationsserver-Schnittstelle, möglicherweise nicht bei jedem Server erforderlich. Alternativ können die mehreren Clientvorrichtungs-Schnittstellen für unterschiedliche Typen von Clientvorrichtungen vorgesehen sein. Eine Vielzahl von Konfigurationen ist möglich.
-
6 zeigt ein Ablaufdiagramm mit Darstellung eines Beispiels für eine Verarbeitung an einem Streaming Server. Bei 601 werden Medienströme empfangen. Bei verschiedenen Ausführungsformen werden Medienströme kontinuierlich an einem Streaming Server empfangen. Bei 603 werden Medienströme in mehreren Puffern gehalten. Bei 605 werden Schlüsselframes in Medienströmen identifiziert. Bei einigen Beispielen kann das Identifizieren von Schlüsselframes das Bestimmen des Video-Codec, der GOP-Größe und/oder der Framegröße und das Durchführen eines Dekodierens oder teilweisen Dekodierens von Frames umfassen. Ein Streaming Server kann in der Lage sein, Schlüsselframes durch Identifizieren des Beginns einer GOP und der GOP-Größe und Markieren jedes Beginns einer GOP als ein Schlüsselframe zu bestimmen. Ein Streaming Server kann ferner größere Frames als Schlüsselframes identifizieren.
-
Eine teilweises Dekodieren oder vollständiges Dekodieren kann ebenfalls angewendet werden. Bei 607 wird eine Verbindungsanforderung von einer Clientvorrichtung kommend empfangen. Bei 609 wird ein Schlüsselframe, das anfangs zu der Clientvorrichtung geliefert wird, identifiziert. Bei einigen Beispielen ist das identifizierte Schlüsselframe das früheste Schlüsselframe für den angeforderten Kanal, das in einem Puffer für den Kanal zur Verfügung steht. Bei 611 werden das Schlüsselframe und nachfolgende prädiktive und Schlüsselframes zu der Clientvorrichtung 611 gesendet.
-
7 zeigt ein Ablaufdiagramm mit Darstellung eines Beispiels für eine Verarbeitung an einer Clientvorrichtung. Bei einigen Beispielen ist eine Clientvorrichtung eine Mobilvorrichtung. Es sei jedoch darauf hingewiesen, dass eine Clientvorrichtung jede Vorrichtung sein kann, die einem Dekodierer zugeordnet ist und die in der Lage ist, ein Videoframe darzustellen. Das heißt, dass eine Clientvorrichtung ein Computersystem, eine tragbare Computervorrichtung, eine Spielvorrichtung, ein Mobiltelefon, ein Empfangsgerät etc. sein kann. Bei 701 wird eine Anforderung bezüglich eines Medienstroms empfangen. Bei verschiedenen Ausführungsformen kann die Anforderung auf der Clientvorrichtung das Ergebnis einer Benutzeraktion sein. Bei 703 sendet die Clientvorrichtung eine Verbindungsanforderung an den Streaming Server. Bei verschiedenen Ausführungsformen identifiziert die Verbindungsanforderung ein bestimmtes Programm oder einen bestimmten Kanal. Bei 705 wird ein Schlüsselframe von dem Streaming Server kommend empfangen. Bei verschiedenen Ausführungsformen empfängt die Clientvorrichtung das Schlüsselframe vor jedem anderen Frame. Bei 707 werden nachfolgende prädiktive Frames und Schlüsselframes von dem Streaming Server kommend empfangen. Bei 709 spielt die Clientvorrichtung den Medienstrom unter Verwendung des empfangenen Anfangs-Schlüsselframes ab. Bei einigen Beispielen weist die Clientvorrichtung einen Dekodierer auf, der den von dem Streaming Server kommenden Videostrom verarbeitet. Bei anderen Beispielen kann eine Dekodiervorrichtung zwischen der Clientvorrichtung und dem Streaming Server vorgesehen sein, und die Clientvorrichtung spielt einfach nur Videodaten ab.
-
Obwohl die Erfindung insbesondere mit Bezug auf spezifische Ausführungsformen dargestellt und beschrieben worden ist, erkennen Fachleute, dass Änderungen an der Form und den Details der offenbarten Ausführungsformen durchgeführt werden können, ohne dass dadurch vom Geist oder Umfang der Erfindung abgewichen wird. Die Erfindung muss daher so ausgelegt werden, dass sie sämtliche Varianten und Äquivalente umfasst, die in den wahren Geist und Umfang der vorliegenden Erfindung fallen.