-
VERWANDTE ANMELDUNGSDATEN
-
Diese Anmeldung beansprucht Priorität gegenüber US-Patentanmeldung Nr. 13/399,377 mit dem Titel „SCALABLE WATERMARK INSERTION FOR FRAGMENTED MEDIA STREAM DELIVERY”, eingereicht am 17. Februar 2012 (Anwaltsaktenzeichen Nr. MOBIP089US), deren gesamte Offenbarung für sämtliche Zwecke durch Verweis hierin eingeschlossen ist.
-
TECHNISCHES GEBIET
-
Die vorliegende Offenbarung betrifft die skalierbare Wasserzeicheneinfügung für eine fragmentierte Medienstrom-Bereitstellung.
-
BESCHREIBUNG VERWANDTER TECHNIK
-
Medienströme beinhalten üblicherweise das Codieren oder erneute Codieren vor der Übertragung an Clients. In vielen Fällen werden Medienströme in ein Format, wie z. B. MPEG-4 Teil 10 oder MPEG-4 Teil 12, codiert. Die Codierungsserver können die Kapazität aufweisen, gleichzeitig Echtzeit-Live-Codierung an zahlreichen Medienströmen durchzuführen.
-
Digitale Wasserzeichen stellen einen Mechanismus zum Erkennen dessen zur Verfügung, dass ein Medienstrom aus einer bestimmten Quelle stammt. Digitale Wasserzeichen können gelegentlich auch verwendet werden, um einen bestimmten Inhaltskonsumenten zu identifizieren. Zum Identifizieren eines bestimmten Inhaltskonsumenten kann ein bestimmtes digitales Wasserzeichen, welches dem Inhaltskonsumenten entspricht, erzeugt und in einen Medienstrom eingebettet werden, der an einen Konsumenten bereitgestellt wird. Das Identifizieren des bestimmten Wasserzeichens gestattet die Identifizierung des bestimmten Konsumenten. Dies kann beim Identifizieren von Inhaltskonsumenten von Nutzen sein, welche den Medienstrom unbefugt verbreiten.
-
Jedoch sind die Mechanismen zum Erzeugen von Wasserzeichen für Medieninhalte begrenzt. Dementsprechend sehen die Techniken der vorliegenden Erfindung Mechanismen zur skalierbaren Wasserzeicheneinfügung für die fragmentierte Medienstrom-Bereitstellung vor.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die Offenbarung ist durch Verweis auf die folgende Beschreibung im Zusammenhang mit den beigefügten Zeichnungen, welche bestimmte Ausführungsformen veranschaulichen, am besten zu verstehen.
-
1 veranschaulicht ein Beispiel eines verteilten Codierungssystems.
-
2 veranschaulicht ein Beispiel eines Mechanismus zum Implementieren verteilter Codierungsredundanz mit Live-Stream-Variantenüberwachung.
-
3 veranschaulicht eine Technik zum Anfordern eines Medienstromes.
-
4 veranschaulicht eine Technik zur verbesserten Fragmentverarbeitung.
-
5 veranschaulicht ein Beispiel eines Systems.
-
BESCHREIBUNG VON BEISPIELAUSFÜHRUNGSFORMEN
-
Nun wird im Einzelnen Bezug auf einige spezifische Beispiele der Erfindung genommen, einschließlich der besten Modi, die durch die Erfinder zum Ausführen der Erfindung in Betracht gezogen werden. Beispiele dieser spezifischen Ausführungsformen sind in den beigefügten Zeichnungen veranschaulicht. Während die Erfindung im Zusammenhang mit diesen spezifischen Ausführungsformen beschrieben wird, wird verstanden werden, dass nicht beabsichtigt ist, die Erfindung auf die beschriebenen Ausführungsformen zu beschränken. Ganz im Gegenteil ist beabsichtigt, Alternativen, Modifikationen und Äquivalente mit abzudecken, wie sie im Geist und Umfang der Erfindung, wie durch die beigefügten Ansprüche definiert, enthalten sein können.
-
Zum Beispiel werden die Techniken der vorliegenden Erfindung im Kontext von Fragmentservern beschrieben. Jedoch sei darauf hingewiesen, dass die Techniken der vorliegenden Erfindung auch für Fragmentserver-Variationen und Medienstrom-Server gelten können. In der folgenden Beschreibung sind zahlreiche spezifische Einzelheiten dargelegt, um ein tiefgreifendes Verständnis der vorliegenden Erfindung bereitzustellen. Bestimmte Beispielausführungsformen der vorliegenden Erfindung können ohne einige oder alle dieser spezifischen Einzelheiten implementiert werden. In anderen Fällen wurden gut bekannte Prozessoperationen nicht im Einzelnen beschrieben, um die vorliegende Erfindung nicht unnötig unklar zu machen.
-
Verschiedene Techniken und Mechanismen der vorliegenden Erfindung werden gelegentlich der Klarheit halber in der Singularform beschrieben. Jedoch sei darauf hingewiesen, dass einige Ausführungsformen, soweit nicht anders angegeben, multiple Iterationen einer Technik oder multiple Instanziierungen eines Mechanismus enthalten. Zum Beispiel verwendet ein System einen Prozessor in einer Vielzahl von Kontexten. Jedoch wird verstanden werden, dass ein System, soweit nicht anders angegeben, multiple Prozessoren verwenden kann, während es innerhalb des Umfangs der vorliegenden Erfindung bleibt. Ferner beschreiben die Techniken und Mechanismen der vorliegenden Erfindung gelegentlich eine Verbindung zwischen zwei Einheiten. Es sei darauf hingewiesen, dass eine Verbindung zwischen zwei Einheiten nicht notwendigerweise eine direkte, ungehinderte Verbindung bedeutet, da sich eine Vielzahl anderer Einheiten zwischen den beiden Einheiten befinden kann. Zum Beispiel kann ein Prozessor mit einem Speicher verbunden sein; es wird jedoch verstanden werden, dass sich eine Vielzahl von Brücken und Controllern zwischen dem Prozessor und dem Speicher befinden kann. Demensprechend bedeutet eine Verbindung, soweit nicht anders angegeben, nicht notwendigerweise eine direkte, ungehinderte Verbindung.
-
Überblick
-
Ein Medienstrom wird in multiple Fragmente abgegrenzt. Es werden unterschiedliche Wasserzeichenvarianten einzelner Fragmente erzeugt. Bestimmte Sequenzen von Wasserzeichenvarianten werden für bestimmte Clients ausgewählt und in einer Benutzerzugriffsdatenbank gespeichert. Das Analysieren von Medienströmen gestattet eine Bestimmung der Sequenzen von Wasserzeichenvarianten und Identifikation bestimmter Clients, welche die Medienströme empfangen sollen. Fragmente können auch weiterhin effizient zwischengespeichert werden und es müssen nicht für jeden einzelnen Client einmalige Wasserzeichen erzeugt werden.
-
Beispielausführungsformen
-
Um eine effektive Bereitstellung von Medienströmen zu gestatten, werden Medienströme üblicherweise vor der Bereitstellung fragmentiert. Das Vorsehen von Wasserzeichen, die bestimmte Benutzer oder Inhaltskonsumenten in einer derartigen Architektur identifizieren können, ist in mehrerlei Hinsicht problematisch. Zum Beispiel müssen einmalige Wasserzeichen erzeugt und mit jedem unterschiedlichen Benutzer in einem System assoziiert und in zahlreiche Fragmente eingeschlossen werden. Dies kann zu einer potentiell beschwerlichen Erzeugung robuster Wasserzeichenfragmente führen. Ferner verhindert, da jedes Fragment einmalig wird, das Vorsehen einmaliger Wasserzeichen in jedem dieser Fragmente das Zwischenspeichern und führt zu einer ineffizienten Ausnutzung von Netzwerk- und Serverressourcen.
-
Dementsprechend wird in Betracht gezogen, dass nicht alle Fragmente eingebettete Wasserzeichen aufweisen müssen. Gemäß verschiedener Ausführungsformen können Wasserzeichen in nur jedes n-te Fragment eingeschlossen werden. Die meisten Fragmente können noch immer als zwischenspeicherbar markiert werden. Inhaltskonsumenten müssten nur einmal jedes n-te Fragment einen Inhaltsserver anpingen, oder wenn ein Fragment ansonsten nicht im Cache zur Verfügung steht. Dies kann Netzwerk- und Serverineffizienzen signifikant verringern. Jedoch macht das Vorsehen eines Wasserzeichens in nur jedem n-ten Fragment das Wasserzeichenmarkierungssystem weniger robust. Um das Wasserzeichenmarkierungssystem robuster zu machen, müsste der Wert von n verringert werden, sodass mehr Fragmente wasserzeichenmarkiert werden. Jedoch verringert dies die Effizienz des Systems. Alternativ dazu kann, wenn ein Inhaltsserver zusätzliche Last handhaben kann und die Netzwerkbedingungen dies zulassen, der Wert von n erhöht werden, sodass weniger Fragmente wasserzeichenmarkiert werden.
-
In bestimmten Ausführungsformen ist ein bestimmter Prozentsatz eines Medienstromes wasserzeichenmarkiert und ein bestimmter Prozentsatz der Inhaltskonsumenten erhält wasserzeichenmarkierte Varianten des Medienstromes. Gemäß verschiedener Ausführungsformen kann ein Medienstrom, der in einem zwischenspeicherbaren Format bereitgestellt wird, noch immer wasserzeichenmarkiert werden. Jedoch kann er keine verfolgbaren Informationen enthalten, die den Client, für den der Inhalt bereitgestellt wurde, identifizieren würden, aber er kann den Cache anzeigen, der die Daten empfangen hat. Dies kann hilfreich bei der Bestimmung dessen sein, dass ein Inhaltsbruch an einem bestimmten Ort stattgefunden hat. Zugriffsprotokolle können den Satz möglicher Brüche weiter auf einen bestimmten Satz von Benutzern eingrenzen.
-
In vielen Fällen muss noch eine signifikante Zahl von Anfragen an einen Inhaltsserver gestellt werden. Ferner müsste eine Benutzerzugriffsdatenbank noch immer eine Reihe unterschiedlicher einmaliger Wasserzeichen enthalten, die der Zahl unterschiedlicher einmaliger Benutzer entspricht. Dies kann ineffizient sein, wenn Wasserzeichen erheblichen Speicherplatz erfordern. Die Techniken der vorliegenden Erfindung ziehen ferner das Vorsehen von Wasserzeichenvarianten für verschiedene Fragmente in Betracht. Zum Beispiel würde ein erstes Fragment x unterschiedliche Wasserzeichenvarianten aufweisen, wie z. B. Wasserzeichenvariante 1 Fragment 1 (V1F1), Wasserzeichenvariante 2 Fragment 1 (V2F1), Wasserzeichenvariante 3 Fragment 1 (V3F1), Wasserzeichenvariante 4 Fragment 1 (V4F1), Wasserzeichenvariante 5 Fragment 1 (V5F1) usw. Ein zweites Fragment würde x unterschiedliche Wasserzeichenvarianten aufweisen, wie z. B. Wasserzeichenvariante 1 Fragment 2 (V1F2), Wasserzeichenvariante 2 Fragment 2 (V2F2), Wasserzeichenvariante 3 Fragment 2 (V3F2), Wasserzeichenvariante 4 Fragment 2 (V4F2), Wasserzeichenvariante 5 Fragment 2 (V5F2) usw. Fragment 3 und 4 weisen möglicherweise überhaupt keine Wasserzeichen auf.
-
In bestimmten Ausführungsformen kann jedes zweite Fragment Wasserzeichenvarianten aufweisen. Eine Benutzeranfrage für die Indexdatei oder ein Fortsetzungsbefehl werden umgeleitet, und diese Umleitung wird dann zufällig über die x Varianten verteilt. Die ausgewählten Varianten werden in einer Benutzerzugriffsdatenbank gespeichert, um Sequenzen von Varianten mit bestimmten Benutzern zu assoziieren. Zum Beispiel kann Benutzer A mit V1F1 und V3F2 versehen werden, Benutzer B kann mit V3F1 und V4F2 versehen werden, und Benutzer C kann mit V4F1 und V1F2 versehen werden. Wenn ein Medienstrom unbefugt verbreitet wird, würde das Extrahieren von Wasserzeichen des verbreiteten Medienstromes und das Bestimmen der Sequenz von Wasserzeichenvarianten es einem Systemadministrator gestatten, die Benutzerzugriffsdatenbank zu referenzieren und zu bestimmen, an wen der Medienstrom übertragen wurde. Zum Beispiel kann die Wasserzeichenvariantensequenz als V1F1 und V3F2 bestimmt werden, was Benutzer A entspricht.
-
Die Benutzerzugriffsdatenbank kann eine Benutzeridentifikationsdatenbank sein, die separat gespeichert wird, oder sie kann ein Benutzerzugriffsprotokoll sein, das verfolgt, welche Varianten an welche Benutzer verteilt wurden. Die Verwendung unterschiedlicher Sequenzen von Wasserzeichenvarianten gestattet Skalierbarkeit und Effizienz, da Fragmente zwischengespeichert werden können, da es eine begrenzte Zahl von Varianten gibt. Zum Beispiel könnten nur einige Varianten von einem Dutzend Fragmenten ausreichende einmalige Sequenzen zum Identifizieren von Millionen von Benutzern bereitstellen. Gemäß verschiedener Ausführungsformen wird die Zahl einmaliger Sequenzen durch Potenzierung der Zahl der Varianten mit der Zahl der Fragmente bestimmt. Zum Beispiel würden 4 Varianten von 12 Fragmenten 4 hoch 12 oder mehr als 16 Millionen einmalige Sequenzen ergeben.
-
Die Tatsache, dass es nur eine begrenzte Anzahl von Varianten einer begrenzten Anzahl von Fragmenten gibt, gestattet eine effiziente Zwischenspeicherung und einen geringen Aufwand. Gemäß verschiedener Ausführungsformen müssen Wasserzeichenvarianten-Sequenzen noch nicht einmal einmalig sein, damit sie von Nutzen sind, da sie beim Identifizieren einer verringerten Zahl von potentiellen unbefugten Inhaltsverbreitern helfen können.
-
Gemäß verschiedener Ausführungsformen können digitale Wasserzeichen in Fragmente, wie z. B. MPEG-4-Fragmente, eingebettet werden. MPEG-4 ist ein erweiterbares Containerformat, das keine feststehende Struktur zum Beschreiben von Medienarten aufweist. Stattdessen weist MPEG-4 eine Objekthierarchie auf, die das Definieren maßgeschneiderter Strukturen für jedes Format gestattet. Die Formatbeschreibung wird in dem Musterbeschreibungs-(,stsd')Kästchen für jeden Strom gespeichert. Das Musterbeschreibungskästchen kann Informationen enthalten, die möglicherweise nicht bekannt sind, bis alle Daten codiert wurden. Zum Beispiel kann das Musterbeschreibungskästchen eine durchschnittliche Bitrate enthalten, die vor dem Codieren nicht bekannt ist.
-
Gemäß verschiedener Ausführungsformen werden MPEG-4-Dateien fragmentiert, sodass ein Live-Stream in einer verteilten Architektur auf dynamisch skalierbarer Hardware intelligent codiert, aufgezeichnet und nahezu live wiedergegeben werden kann. MPEG-4-Dateien können erzeugt werden, ohne warten zu müssen, bis der gesamte Inhalt geschrieben wurde, um die Filmkopfzeilen vorzubereiten. Zur Gestattung der MPEG-4-Fragmentierung ohne bandexterne Signalgebung ist eine Kästchenstruktur vorgesehen, die Synchronisierungsinformationen, Dateiendinformationen und Kapitelinformationen enthält. Gemäß verschiedener Ausführungsformen werden Synchronisierungsinformationen verwendet, um Audio und Video zu synchronisieren, wenn die Wiedergabe ein Starten in der Mitte eines Stromes zur Folge hat. Dateiendinformationen signalisieren, wenn das/die aktuelle Programm oder Datei vorüber ist. Diese können Informationen zum Fortsetzen des Streamings des/der nächsten Programmes oder Datei enthalten. Kapitelinformationen können für Video-on-Demand-Inhalte verwendet werden, der in Kapitel unterteilt ist, möglicherweise getrennt durch Werbeblöcke.
-
1 veranschaulicht ein Beispiel eines Systems zur Wasserzeichenmarkierung. Gemäß verschiedener Ausführungsformen wird ein Medienstrom von einer Inhaltsanbieterquelle, wie z. B. ein Satellit, empfangen. In bestimmten Ausführungsformen wird der Medienstrom in einem MPEG-2-Format bereitgestellt. Der Medienstrom wird mit Hilfe eines GOP-Abgrenzers 101 in Bildgruppen (GOP – Groups of Pictures) abgegrenzt. Die GOP ist eine Bildgruppe in codierten Medien und beinhaltet üblicherweise Schlüssel- und Vorhersage-Frames. Ein Schlüssel-Frame kann ein I-Frame oder intra-codierter Frame sein, der ein feststehendes Bild darstellt, das unabhängig von anderen Bildern ist. Gemäß verschiedener Ausführungsformen beginnt jede GOP mit einem I-Frame. Vorhersage-Frames, wie z. B. P-Frames oder prädiktiv-codierte Frames und B-Frames oder bidirektional prädiktiv-codierte Frames enthalten unterschiedliche Informationen, die Unterscheidungen von einem Referenz-Frame, wie z. B. ein Schlüssel-Frame oder ein anderer Vorhersage-Frame, angeben.
-
Nachdem der Medienstrom in GOPs abgegrenzt wurde, wird ein Arbeitsdispatcher 103 benachrichtigt, dass eine GOP zur Verfügung steht. Gemäß verschiedener Ausführungsformen bestimmt der Arbeitsdispatcher 103, ob er derjenige ist, der zum Arbeiten daran zugeordnet wurde, sowie was mit der GOP geschehen soll. Gemäß verschiedener Ausführungsformen kann der Arbeitsdispatcher bestimmen, dass die GOP in 8 unterschiedliche Varianten codiert werden soll. Ferner können für jede der 8 unterschiedlichen Varianten 4 unterschiedliche Wasserzeichenvarianten erzeugt werden. In bestimmten Ausführungsformen erzeugt der Arbeitsdispatcher 103 eine Beschreibung dessen, was getan werden muss, weist dem Auftrag eine Gewichtung oder ein Prioritätslevel zu und sendet den Auftrag an Auftragswarteschlangen 105. Gemäß verschiedener Ausführungsformen sind Auftragswarteschlangen First-in-First-Out(FIFO)-Warteschlangen, welche die meiste Zeit leer sind. Codierer/Fragmentierer 107 fordern Aufträge an und erhalten sie aus den Auftragswarteschlangen 105. Gemäß verschiedener Ausführungsformen können Aufträge auf der Grundlage der Gewichtung in einer Auftragswarteschlange geordnet werden. In bestimmten Ausführungsformen können Codierer/Fragmentierer 107 Aufträge mit höherer Priorität als erstes aus den Auftragswarteschlangen wählen.
-
In bestimmten Ausführungsformen werden Aufträge mit unterschiedlicher Priorität in Auftragswarteschlangen mit unterschiedlicher Priorität platziert. Es können multiple Aufträge aus den Auftragswarteschlangen mit höherer Priorität entnommen werden, bevor ein einzelner Auftrag aus den Auftragswarteschlangen mit niedriger Priorität entnommen wird. Gemäß verschiedener Ausführungsformen werden Aufträge mit der höchsten Priorität vor Aufträgen mit niedrigerer Priorität verarbeitet. In bestimmten Ausführungsformen wird Warteschlangen ein Prozentsatz von Servicewerten zugewiesen. Eine Warteschlange mit hoher Priorität kann 40% der Zeit, eine Warteschlange mit mittlerer Priorität 30% der Zeit und die übrigen Warteschlangen 20% und 10% der Zeit durch Codierer/Fragmentierer bedient werden. Gemäß verschiedener Ausführungsformen können sich hunderte oder tausende Codierer/Fragmentierer in einem System befinden. In bestimmten Ausführungsformen führt das gleiche Gerät sowohl Codierung als auch Fragmentierung durch, es sei jedoch darauf hingewiesen, dass getrennte Geräte zum Durchführen dieser Operationen verwendet werden können. Gemäß verschiedener Ausführungsformen können zusätzliche Codierer/Fragmentierer dynamisch online geschaltet werden, wenn die Ressourcenausnutzung eine bestimmte Schwelle erreicht. Alternativ dazu können Codierer/Fragmentierer offline geschaltet werden, wenn die Ressourcenausnutzung unter ein bestimmtes Level fällt. Gemäß verschiedener Ausführungsformen ist der Codierer/Fragmentierer 107 eine virtuelle Maschine, die sich auf einem oder mehreren physischen Servern befinden kann, der/die spezialisierte Codierungshardware aufweisen kann/können oder nicht. In bestimmten Ausführungsformen bestimmt ein Cloud-Service, wie viele dieser virtuellen Maschinen auf der Grundlage etablierter Schwellen zu verwenden sind.
-
Gemäß verschiedener Ausführungsformen ist ein einmaliger Identifikator für jede GOP vorgesehen und es wird ein Protokoll von jedem Schritt gespeichert. Nachdem der Codierer/Fragmentierer 107 die Verarbeitung eines Auftrages abgeschlossen hat und ein codiertes Fragment ausgibt, wird das codierte Fragment im verteilten und redundanten Speicher 109 gespeichert. In einem Beispiel ist der verteilte und redundante Speicher 109 ein virtualisiertes Scale-Out-Netzwerk-Speichersystem. Der verteilte und redundante Speicher 109 gestattet es einem System, zahlreiche Fragmente auf jeder Zahl virtualisierter Speichergeräte zu speichern.
-
Gemäß verschiedener Ausführungsformen kann der Fragmentserver 111 auf Fragmente auf dem verteilten und redundanten Speicher 109 zugreifen. Gemäß verschiedener Ausführungsformen können Codierer/Fragmentierer zum Einbetten von Wasserzeichenvarianten in bestimmte Fragmente verwendet werden. In anderen Beispielen können andere Einheiten, wie z. B. der Fragmentserver, Wasserzeichenvarianten in bestimmte Fragmente einbetten. Der Fragmentserver 111 versieht die Zwischenspeicherschicht mit Fragmenten für Clients. Die Designphilosophie hinter der Client/Server-API minimiert zeitaufwändige Abfragen und verringert die Komplexität soweit wie möglich, wenn es um die Bereitstellung der Mediendaten an ein Clientgerät geht. Der Fragmentserver 111 stellt Live-Streams und/oder DVR-Konfigurationen bereit.
-
In bestimmten Ausführungsformen wird eine Benutzerzugriffsdatenbank 115 zum Speichern von Informationen darüber, welche Wasserzeichenvarianten an bestimmte Benutzer bereitgestellt wurden, verwendet. Gemäß verschiedener Ausführungsformen kann einem Benutzer Wasserzeichenversion 1 für ein erstes Fragment, Wasserzeichenversion 3 für ein drittes Fragment, Wasserzeichenversion 4 für ein fünftes Fragment, Wasserzeichenversion 3 für ein siebentes Fragment usw. bereitgestellt werden. Die Benutzerzugriffsdatenbank 115 kann die Sequenz 1, 3, 4, 3 speichern, welche dem bestimmten Benutzeridentifikator entspricht. Das Extrahieren von Wasserzeicheninformationen aus einem Stück Medieninhalt würde es einem Administrator gestatten, den beabsichtigten Empfänger zu identifizieren.
-
2 veranschaulicht ein Beispiel eines verteilten, skalierbaren Codierungssystems, das zum Bereitstellen unterschiedlicher Wasserzeichenvarianten verwendet werden kann. Gemäß verschiedener Ausführungsformen wird ein Medienstrom von einer Inhaltsanbieterquelle, wie z. B. ein Satellit, empfangen. In bestimmten Ausführungsformen wird der Medienstrom in einem MPEG-2-Format bereitgestellt. Der Medienstrom wird mit Hilfe eines GOP-Abgrenzers 201 in Bildgruppen (GOPs) abgegrenzt. Die GOP ist eine Gruppe von Bildern in codierten Medien und beinhaltet üblicherweise Schlüssel- und Vorhersage-Frames. Ein Schlüssel-Frame kann ein I-Frame oder intra-codierter Frame sein, der ein feststehendes Bild darstellt, das von anderen Bildern unabhängig ist. Gemäß verschiedener Ausführungsformen beginnt jede GOP mit einem I-Frame. Vorhersage-Frames, wie z. B. P-Frames oder prädiktiv-codierte Frames und B-Frames oder bidirektional prädiktiv-codierte Frames, enthalten unterschiedliche Informationen, welche Unterscheidungen von einem Referenz-Frame, wie z. B. ein Schlüssel-Frame oder ein anderer Vorhersage-Frame, angeben. Gemäß verschiedener Ausführungsformen sind gleichzeitig multiple GOP-Abgrenzer 201 aktiv. Wenn ein GOP-Abgrenzer ausfällt, stehen andere GOP-Abgrenzer zur Verfügung und alle GOP-Abgrenzer können Benachrichtigungen versenden.
-
Nachdem der Medienstrom in GOPs abgegrenzt wurde, wird ein elastischer Lastausgleicher 211 zum Verteilen der Arbeit auf die Arbeitsdispatcher 221 und 225 verwendet. Gemäß verschiedener Ausführungsformen überwacht ein Live-Stream-Variantencodierungsmanager 213 den Live-Stream-Variantenverbrauch. Wenn bestimmte Varianten nicht verbraucht werden, werden Aufträge zum Erzeugen dieser Varianten nicht mehr durchgeführt. Wenn bestimmte noch nicht verfügbare Varianten angefordert werden, können Aufträge zum Erstellen dieser Varianten durch den Arbeitsdispatcher 225 auf Anfrage des Live-Stream-Variantencodierungsmanagers 213 erzeugt werden. Wenn ein Arbeitsdispatcher genau dann ausfällt, wenn er eine Benachrichtigung erhält, erfolgt eine weitere Benachrichtigung an einen unterschiedlichen Arbeitsdispatcher. Zwei Benachrichtigungen für die gleiche GOP landen auf zwei unterschiedlichen Maschinen. Bei jedem Arbeitsdispatcher 221 und 225 kann es auch einen Proxy geben. Gemäß verschiedener Ausführungsformen befindet sich der GOP-Abgrenzer 201 auf einem unterschiedlichen Datenzentrum als die Arbeitsdispatcher 221 und 225. Die Verwendung von Proxys bei den Arbeitsdispatchern 221 und 225 gestattet einen Einzeltransfer einer Medienstrom-GOP zwischen Datenzentren.
-
Gemäß verschiedener Ausführungsformen bestimmen die Arbeitsdispatcher 221 und 225 Eigenschaften eines bestimmten Auftrages und was mit der GOP geschehen soll. Gemäß verschiedener Ausführungsformen können die Arbeitsdispatcher 221 und 225 bestimmen, dass die GOP in 8 unterschiedliche Varianten codiert werden soll. In bestimmten Ausführungsformen erstellen die Arbeitsdispatcher 221 und 225 Beschreibungen dessen, was getan werden muss, und senden Aufträge an die Auftragswarteschlangen 223. Gemäß verschiedener Ausführungsformen enthalten die Auftragswarteschlangen 223 eine aktive Auftragswarteschlange und eine Standby-Auftragswarteschlange. Gemäß verschiedener Ausführungsformen sind Auftragswarteschlangen First-in-First-out(FIFO)-Warteschlangen, welche die meiste Zeit leer sind. Jedem Auftrag in der Warteschlange kann eine Zeitüberschreitung zugewiesen werden. Die Codierer/Fragmentierer 231, 233 und 235 fordern Aufträge an und erhalten sie aus den Auftragswarteschlangen 223. In bestimmten Ausführungsformen sind die Codierer/Fragmentierer 231, 233 und 235 identisch und können dynamisch aktiviert oder deaktiviert werden. Gemäß verschiedener Ausführungsformen befinden sich hunderte oder tausende Codierer/Fragmentierer in einem System.
-
In bestimmten Ausführungsformen führt das gleiche Gerät sowohl Codierung als auch Fragmentierung durch, jedoch sei darauf hingewiesen, dass zum Durchführen dieser Operationen auch separate Geräte verwendet werden können. Gemäß verschiedener Ausführungsformen können zusätzliche Codierer/Fragmentierer dynamisch online geschaltet werden, wenn die Ressourcenausnutzung eine bestimmte Schwelle erreicht. Alternativ dazu können Codierer/Fragmentierer offline geschaltet werden, wenn die Ressourcenausnutzung unter ein bestimmtes Level fällt. Gemäß verschiedener Ausführungsformen ist der Codierer/Fragmentierer 231, 233 und 235 eine virtuelle Maschine, die sich auf einem oder mehreren physischen Servern befinden kann, welche/r möglicherweise spezialisierte Codierungshardware aufweist/aufweisen oder nicht. In bestimmten Ausführungsformen bestimmt ein Cloud-Dienst, wie viele dieser virtuellen Maschinen auf der Grundlage etablierter Schwellen zu verwenden sind.
-
Gemäß verschiedener Ausführungsformen sind die Codierer/Fragmentierer 231, 233 und 235 zustandslos. Gemäß verschiedener Ausführungsformen ist für jede GOP ein einmaliger Identifikator vorgesehen und es wird ein Protokoll von jedem Schritt gespeichert. Wenn ein bestimmter Codierer/Fragmentierer an irgendeiner Stelle im Prozess ausfällt, kann ein anderer Codierer/Fragmentierer die Codierungs- und Fragmentierungsoperationen durchführen. Nachdem die Codierer/Fragmentierer 231, 233 und 235 die Aufträge abgeschlossen und codierte Fragmente erzeugt haben, werden die codierten Fragmente in einem verteilten und redundanten Speicher 241 gespeichert. In einem Beispiel ist der verteilte und redundante Speicher 241 ein virtualisiertes Scale-Out-Netzwerk-Speichersystem. Der verteilte und redundante Speicher 241 beinhaltet die Knoten 243 und 245, welche es einem System gestatten, zahlreiche Fragmente auf jeder Zahl virtualisierter Speichergeräte zu speichern.
-
Gemäß verschiedener Ausführungsformen können die Fragmentserver 251, 253 und 255 auf Fragmente im verteilten und redundanten Speicher 241 zugreifen. Die Fragmentserver 251, 253 und 255 stellen eine Zwischenspeicherschicht mit Fragmenten für Clients bereit. Die Designphilosophie hinter der Client/Server-API minimiert zeitaufwändige Abfragen und verringert die Komplexität soweit wie möglich, wenn es um die Bereitstellung der Mediendaten an ein Clientgerät geht. Die Fragmentserver 251, 253 und 255 liefern Live-Streams und/oder DVR-Konfigurationen. Gemäß verschiedener Ausführungsformen arbeiten auch die Fragmentserver zustandslos. In bestimmten Ausführungsformen arbeiten die Fragmentserver unter Verwendung von HTTP-GET-Requests. Gemäß verschiedener Ausführungsformen gestattet jeder Prozess die Fortsetzung eines Stromes, ohne einen zentralen Steuerungspunkt aufzuweisen. Ein elastischer Lastausgleicher 261 verteilt die Fragmentanfragen aus einer Cloud-Front 271, die an die Geräte 281, 283 und 285 bereitgestellt werden. Gemäß verschiedener Ausführungsformen überwachen und analysieren die Geräte 281, 283 und 285 Medienströme, um zu bestimmen, welche Fragmente zwischengespeichert werden sollen. In einigen Beispielen führen die Geräte 281, 283 und 285 eine Zwischenspeicherung von jedem Fragment durch, für das bestimmt wurde, dass es zu einem zuvor angeforderten Fragment redundant ist. Fragmente können mit Hilfe von Identifikatoren, Signaturen usw. verglichen werden.
-
Gemäß verschiedener Ausführungsformen verwendet ein Clientgerät eine Medienkomponente, die fragmentierte MPEG-4-Dateien anfordert, Trickfunktionen gestattet und die Bandbreitenanpassung managt. In bestimmten Ausführungsformen sind Bandbreitenanpassungsinformationen, Wiedergabelisteninformationen und Mediendaten in einer Kästchenstruktur enthalten, die durch die Codierer/Fragmentierer 231, 233 und 235 erzeugt wird. In bestimmten Ausführungsformen führt ein/e Gerät/Anwendung 281, 283 und/oder 285 einen Transportsteuerungsprotokoll-3-Wege-Handshake mit den Fragmentservern 251, 253 und/oder 255 durch, um eine Verbindung zum Empfangen eines Medienstromes zu initiieren. Gemäß verschiedener Ausführungsformen können, anstatt dass das/die Gerät/Anwendung 281, 283 oder 285 die Bandbreitenanpassungsinformationen, Wiedergabelisteninformationen und Mediendaten in separaten Transaktionen von den Fragmentservern 251, 253 und/oder 255 anfordert, die Bandbreitenanpassungsinformationen, Wiedergabelisteninformationen und Mediendaten in eine Kästchenstruktur eingebettet sein, die mit den Medienstromfragmenten durch den Fragmentserver bereitgestellt wird. In einigen Beispielen kann die Kästchenstruktur mit dem ersten Fragment bereitgestellt werden.
-
In bestimmten Ausführungsformen wird eine Benutzerzugriffsdatenbank 295 verwendet, um Informationen darüber zu speichern, welche Wasserzeichenvarianten an bestimmte Benutzer bereitgestellt wurden. Gemäß verschiedener Ausführungsformen können einem Benutzer Wasserzeichenversion 1 für ein erstes Fragment, Wasserzeichenversion 3 für ein drittes Fragment, Wasserzeichenversion 4 für ein fünftes Fragment, Wasserzeichenversion 3 für ein siebentes Fragment usw. bereitgestellt werden. Die Benutzerzugriffsdatenbank 295 kann die Sequenz 1, 3, 4, 3 speichern, welche dem bestimmten Benutzeridentifikator entspricht. Das Extrahieren von Wasserzeicheninformationen aus einem Stück Medieninhalt würde einem Administrator das Identifizieren des beabsichtigten Empfängers gestatten.
-
3 veranschaulicht ein Beispiel einer Technik zum Erzeugen von Fragmenten mit unterschiedlichen Wasserzeichenvarianten. Bei 301 wird ein Live-Medienstrom empfangen. Gemäß verschiedener Ausführungsformen ist der Medienstrom ein Live-MPEG-2-Medienstrom empfangen von einem Satellitenempfänger. In bestimmten Ausführungsformen bezieht sich ein Live-Medienstrom auf ein Medienprogramm, das zu einer bestimmten Zeit empfangen wird und das für die Verbreitung zu dieser bestimmten Zeit designiert ist. Zum Beispiel kann ein Programm derart konfiguriert sein, dass es um 20:00 Uhr PST läuft, und der Live-Medienstrom wird am Satellitenempfänger um 20:00 Uhr PST empfangen. Bei 303 wird der Medienstrom in GOPs abgegrenzt. In bestimmten Ausführungsformen werden Schlüssel-Frames identifiziert und verwendet, um Bildgruppen zu beginnen. Die GOPs können an dieser Stelle wahlweise vor der Übertragung bei 305 verschlüsselt werden.
-
Gemäß verschiedener Ausführungsformen kann ein Arbeitsdispatcher verwendet werden, um zu bestimmen, dass eine GOP zur Verfügung steht. Gemäß verschiedener Ausführungsformen befinden sich ein GOP-Abgrenzer und der Arbeitsdispatcher in unterschiedlichen Datenzentren und ein einzelner GOP-Transfer anstelle redundanter GOP-Transfers ist wünschenswert. Bei 307 werden multiple Wasserzeichenvarianten für multiple Fragmente erzeugt. In bestimmten Ausführungsformen werden multiple Wasserzeichenvarianten für einen Untersatz der Frames in einem Medienstrom erzeugt. Zum Beispiel können für jedes ungerade nummerierte Fragment in einem Medienstrom fünf Wasserzeichenvarianten bereitgestellt werden. In einem weiteren Beispiel werden variierende Zahlen von Wasserzeichenvarianten für ausgewählte Fragmente bereitgestellt. Die Fragmente können in ein Format, wie z. B. H.264, codiert werden. Codierte Fragmente werden bei 309 im verteilten Speicher gespeichert. Ein Benutzer kann dann auf einem bestimmten Qualitätslevel durch einen Fragmentserver kontinuierlich auf die codierten Fragmente zugreifen, wobei der Fragmentserver die Internetprotokoll(IP)-Verteilung der Medienstromfragmente in Echtzeit oder nahezu Echtzeit gestattet. Gemäß verschiedener Ausführungsformen können auch Fragmente mit verschiedenen Wasserzeichenvarianten in Zwischenspeichersystemen gespeichert werden.
-
4 veranschaulicht ein Beispiel einer Technik zur Wasserzeichenvariantenübertragung. Gemäß verschiedener Ausführungsformen wird bei 401 eine Anfrage für ein Medienstromfragment empfangen. Gemäß verschiedener Ausführungsformen wird die Anfrage bei 403 zu einem ausgewählten Wasserzeichenvariantenfragment umgeleitet. In bestimmten Ausführungsformen kann das ausgewählte Wasserzeichenvariantenfragment zufällig bestimmt und/oder vorbestimmt werden. In einigen Beispielen wird eine Verteilungsfunktion verwendet, um die Zuordnung verschiedener Wasserzeichenvarianten derart auszugleichen, dass es wahrscheinlicher ist, dass einzelne Inhaltskonsumenten einmalige Sequenzen empfangen.
-
Gemäß verschiedener Ausführungsformen wird das Wasserzeichenvariantenfragment aus dem Cache, falls verfügbar, oder aus einem Fragmentserver 405 bereitgestellt. Der Benutzer und die Variantensequenz, die an den Benutzer gesendet wird, werden bei 407 verfolgt. Gemäß verschiedener Ausführungsformen wird die Variantensequenz bei 409 in einer Benutzerzugriffsdatenbank gespeichert. Der Benutzer wird bei 411 in einer Benutzerzugriffsdatenbank mit einer Variantensequenz in Zusammenhang gebracht. Gemäß verschiedener Ausführungsformen verwendet der Fragmentserver eine REST-API, die Cache-freundlich ist, sodass die meisten Anfragen, die an den Fragmentserver gestellt werden, zwischengespeichert werden können. Der Fragmentserver verwendet Cache-Steuerkopfzeilen und ETag-Kopfzeilen zum Bereitstellen der ordnungsgemäßen Hinweise auf Caches. Diese API stellt auch die Fähigkeit zur Verfügung, zu verstehen, wo ein bestimmter Benutzer die Wiedergabe gestoppt hat, und die Wiedergabe ab dieser Stelle zu starten (unter Bereitstellung der Fähigkeit zur Unterbrechung an einem Gerät und Fortsetzen an einem anderen).
-
Gemäß verschiedener Ausführungsformen enthält der Client eine Anwendungslogikkomponente und eine Medienwiedergabekomponente. Die Anwendungslogikkomponente stellt die Benutzerschnittstelle (UI – user interface) für den Benutzer dar und kommuniziert auch mit dem Frontend-Server, um für den Benutzer verfügbare Sendungen zu erhalten und zu authentifizieren. Als Teil dieses Prozesses sendet der Server URLs an Medienbestände zurück, die an die Medienwiedergabekomponente weitergegeben werden.
-
In bestimmten Ausführungsformen ist der Client auf die Tatsache angewiesen, dass jedes Fragment in einer fragmentierten MPEG-4-Datei eine Sequenznummer aufweist. Unter Verwendung dieses Wissens und einer gut definierten URL-Struktur zum Kommunizieren mit dem Server fordert der Client Fragmente einzeln an, als ob er separate Dateien von dem Server lesen würde, indem er einfach URLs für Dateien im Zusammenhang mit ansteigenden Sequenznummern anfordert. In einigen Ausführungsformen kann der Client Dateien anfordern, welche Strömen mit höherer oder niedriger Bitrate entsprechen, in Abhängigkeit vom Gerät und von den Netzwerkressourcen.
-
Da jedes Fragment die Informationen enthält, die benötigt werden, um die URL für die nächste Datei zu erstellen, werden keine speziellen Wiedergabelistendateien benötigt, und sämtliche Aktionen (Starten, Kanalwechsel, Suchen) können mit einer einzelnen HTTP-Anfrage durchgeführt werden. Nachdem jedes Fragment heruntergeladen wurde, bewertet der Client unter anderem die Größe des Fragmentes und die benötigte Zeit für dessen Download, um zu bestimmen, ob ein Herunterschalten notwendig ist oder ob genügend Bandbreite zur Verfügung steht, um eine höhere Bitrate anzufordern.
-
Weil jede Anfrage an den Server wie eine Anfrage an eine separate Datei aussieht, kann die Antwort auf Anfragen in jedem HTTP-Proxy zwischengespeichert oder über jeden HTTP-basierten CDN verbreitet werden.
-
5 veranschaulicht ein Beispiel eines Computersystems. Gemäß bestimmter Ausführungsformen beinhaltet ein System 500, das zum Implementieren bestimmter Ausführungsformen der vorliegenden Erfindung geeignet ist, einen Prozessor 501, einen Speicher 503, eine Schnittstelle 511 und einen Bus 515 (z. B. ein PCI-Bus oder eine andere Verbindungsstruktur), und es funktioniert als ein Streaming-Server. Wenn er von einer geeigneten Software oder Firmware gesteuert wird, ist der Prozessor 501 verantwortlich für das Modifizieren und Übertragen von Live-Mediendaten an einen Client. Verschiedene speziell konfigurierte Geräte können auch anstelle eines Prozessors 501 oder zusätzlich zum Prozessor 501 verwendet werden. Die Schnittstelle 511 ist üblicherweise zum Senden und Empfangen von Datenpaketen oder Datenfragmenten über ein Netzwerk konfiguriert.
-
Zu bestimmten Beispielen von unterstützen Schnittstellen zählen Ethernet-Schnittstellen, Frame-Relais-Schnittstellen, Kabelschnittstellen, DSL-Schnittstellen, Token-Ring-Schnittstellen und dergleichen. Außerdem können verschiedene Ultrahochgeschwindigkeitsschnittstellen bereitgestellt sein, wie z. B. Fast-Ethernet-Schnittstellen, Gigabit-Ethernet-Schnittstellen, ATM-Schnittstellen, HSSI-Schnittstellen, POS-Schnittstellen, FDDI-Schnittstellen und dergleichen. Im Allgemeinen können diese Schnittstellen Anschlüsse beinhalten, die für die Kommunikation mit den entsprechenden Medien geeignet sind. In einigen Fällen kann dazu auch ein unabhängiger Prozessor und in einigen Fällen auch flüchtiger RAM gehören. Die unabhängigen Prozessoren können derartige kommunikationsintensive Aufgaben als Paketvermittlung, Mediensteuerung und -management steuern.
-
Gemäß verschiedener Ausführungsformen ist das System 500 ein Fragmentserver, der auch einen Sendeempfänger, Streaming-Puffer und eine Programmführungsdatenbank beinhaltet. Der Fragmentserver kann auch mit Teilnehmermanagement-, Protokollierungs- und Berichterstellungs- und Überwachungsfähigkeiten im Zusammenhang stehen. In bestimmten Ausführungsformen beinhaltet der Fragmentserver Funktionalität, um den Betrieb mit mobilen Geräten zu gestatten, wie z. B. Mobiltelefone, die in einem bestimmten Mobilnetz funktionieren und Teilnehmermanagement bereitstellen. Gemäß verschiedener Ausführungsformen verifiziert ein Authentifizierungsmodul die Identität von Geräten, einschließlich mobiler Geräte. Ein Protokollierungs- und Berichterstellungsmodul verfolgt Anfragen mobiler Geräte und die entsprechenden Antworten. Ein Überwachungssystem gestattet einem Administrator die Ansicht von Nutzungsmustern und Systemverfügbarkeit. Gemäß verschiedener Ausführungsformen handhabt der Fragmentserver Anfragen und Antworten für Medieninhalt-bezogene Transaktionen, während ein separater Streaming-Server tatsächliche Medienströme bereitstellt.
-
Obwohl ein bestimmter Fragmentserver beschrieben ist, sollte erkannt werden, dass eine Vielzahl alternativer Konfigurationen möglich ist. Zum Beispiel werden möglicherweise einige Module, wie ein Bericht- und Protokollierungsmodul und eine Monitor, nicht auf jedem Server benötigt. Alternativ dazu können die Module auf einem anderen Gerät, das mit dem Server verbunden ist, implementiert sein. In einem weiteren Beispiel beinhaltet der Server möglicherweise keine Schnittstelle zu einer abstrakten Einkaufsmaschine und kann tatsächlich die abstrakte Einkaufsmaschine selbst beinhalten. Es ist eine Vielzahl von Konfigurationen möglich.
-
In der vorstehenden Spezifikation wurde die Erfindung unter Verweis auf spezifische Ausführungsformen beschrieben. Jedoch wird ein Durchschnittsfachmann auf dem Gebiet erkennen, dass verschiedene Modifikationen und Veränderungen vorgenommen werden können, ohne sich vom Umfang der Erfindung zu entfernen, wie in den Ansprüchen unten dargelegt. Dementsprechend sind die Spezifikation und die Figuren vielmehr in einem veranschaulichenden als in einem einschränkenden Sinn zu sehen, und sämtliche derartigen Modifikationen sollen im Umfang der Erfindung enthalten sein.