-
Zugrunde liegende
Anmeldungen
-
Diese
Anmeldung beansprucht das Vorrecht der US Provisional Patent Application
mit dem Titel „Apparati
and Methods For Processing MPEG Streams" vom gleichen Erfinder, Seriennummer
60/232,893, eingereicht am 15. September 2000 und veröffentlicht
als US-A-2002/048450.
-
Die
vorliegende Erfindung liegt den gleichzeitig anhängigen US-Patentanmeldungen
zugrunde mit den Titeln: „System
and Method of Processing MPEG Streams For Timecode Packet Insertion" mit der Seriennummer
09/850,201, eingereicht am 7. Mai 2001 und veröffentlicht als US-A-2002/034255; „System
and Method of Timecode Repair and Synchronization in MPEG Streams", Seriennummer 09/850,253,
eingereicht am 7. Mai 2001 und veröffentlicht als US-A-2002/035732;
und „System
and Method of Processing MPEG Streams For Storyboard and Rights
Metadata Insertion",
Seriennummer 09/850,522, eingereicht am 7. Mai 2001 und veröffentlicht
als US-A-2002/033842, die alle auf den Anmelder der vorliegenden
Erfindung übertragen
sind.
-
HINTERGRUND DER ERFINDUNG
-
1. Gebiet der Erfindung
-
Die
vorliegende Erfindung betrifft im Allgemeinen die Komprimierung,
Katalogisierung und Wiedergabe von Videofilmen und, genauer gesagt,
die Verarbeitung von komprimierten Videodaten.
-
2. Beschreibung der zugrunde
liegenden Technik
-
Die
Infrastruktur und der Prozess, die benötigt werden, um ein Videoarchiv
im digitalen Bereich zu entwickeln und zu bedienen, sind in der
Broadcast-Videoindustrie gut bekannt. Der Archivierungsprozess beginnt üblicherweise
mit dem Digitalisieren und Komprimieren des analogen Videos mit
Hilfe von MPEG-1- oder MPEG-2-Komprimierung, anschließend wird
die komprimierte Videodatei in einen Langzeitspeicher versetzt. Um
die Wiedergabequalität
des Videos zu erhalten, wählen
die Broadcaster normalerweise eine hohe Komprimierungsbitrate (d.
h. 15–40
Mbps), die die Wiederherstellung des Originalvideos trotz des Verlusts
des MPEG-Komprimierungsschemas
mit einer relativ hohen Wiedergabetreue ermöglicht.
-
Muss
das Video für
die Betrachtung und die Nachbearbeitung verteilt werden, stellt
die hohe Bitrate des komprimierten Videos jedoch beachtliche Probleme
für die
lokalen Rechnernetze und die Infrastruktur der Rechnerdatenstationen
der Broadcaster dar. Die hohe Netzbandbreite und die Zeit, die benötigt wird,
um die Daten innerhalb des Unternehmens zu übermitteln, begrenzen die Anzahl
der gleichzeitig stattfindenden Übertragungen
und behindern die Produktivität
deutlich. Als Reaktion auf dieses Problem hinsichtlich der Bandbreite
erstellen die Broadcaster eine zusätzliche Kopie des Videos mit
einer viel geringeren Komprimierungsbitrate (d. h. 1,5–4 Mbps).
Diese Datei mit einer niedrigen Bitrate, die „Proxy"- oder „Browse"-Datei genannt wird, ermöglicht es
den Benutzern, ein Video schnell herunterzuladen oder es mit Hilfe
eines Streaming-Videoservers direkt auf dem Computerbildschirm anzuschauen.
Um das Anschauen von Videodaten auch außerhalb der lokalen Rechnernetze
zu erleichtern, wird oft eine zweite Proxy-Datei mit einer sehr
niedrigen Bitrate (56–1000 Kbps)
für das
Streamen über
Erdleitungen mit geringer Geschwindigkeit codiert.
-
Nach
der Aufnahme des Videos in das Archiv besteht der nächste Schritt
des Archivierungsprozesses in der Erstellung eines Eintrags für das Video
im Katalog der Videobibliothek. Dieser Eintrag enthält Metadaten, die
relevante Informationen zum Video enthalten. Inhalt und Format des
Videokatalogeintrags, die normalerweise bei jedem Broadcaster spezifisch
sind, erleichtern das Suchen und Wiederfinden von Videoclips innerhalb
der Videobibliothek des Broadcasters. Im Handel gibt es derzeit
Videokatalogisierungsanwendungen (Cataloger), die automatisch Metadaten
aus einer MPEG-1- oder MPEG-2-Videodatei extrahieren, wie beispielsweise
den Closed Caption-Text, und den Text des eigentlichen Audioprogramms,
der durch eine Technologie zur Spracherkennung ermittelt wird. Cataloger
extrahieren des Weiteren Metadaten aus dem Video, indem sie Szenenänderungen
analysieren und nach jedem Schnitt oder jedem größeren Szenenwechsel eine Bitmap des
ersten Frames erstellen. Diese individuell als „Thumbnails" oder zusammengefasst
als Storyboard bezeichneten Bitmaps werden als wichtige Metadaten
betrachtet, weil sie es dem Endbenutzer ermöglichen, sehr schnell den Inhalt
des Videos zu erkennen. Ohne Storyboard muss der Endbenutzer das
Video anschauen oder es sich zumindest im Schnellvorlauf ansehen,
um das gewünschte
Videosegment zu finden.
-
Ein
gemeinsames Merkmal von Videokatalogisierungsanwendungen besteht
für den
Endbenutzer in der Möglichkeit,
beim Betrachten der Katalogeinträge
und Metadaten die Proxy-Datei durch Doppelklicken auf einen beliebigen „Thumbnail" wiederzugeben. Der
MPEG-Player, der innerhalb des Anwendungsfensters untergebracht
ist, spielt das Video ab dem mit dem „Thumbnail" verbundenen Zeitcode. Der Player führt diese Funktion
aus, indem er dem Streaming-Videoserver eine Play-from-Offset-Anforderung
schickt. Eine Begrenzung der MPEG-Syntax erlaubt den willkürlichen
Zugriff auf das Video nur auf der Ebene der GOP-Header (Group of
Pictures, Bildsequenz). Noch genauer muss der Player für eine willkürliche Wiedergabe
innerhalb einer MPEG-Datei Folgendes decodieren: einen Pack-Header,
um die Systemtaktung zu erhalten, einen System-Header, um die Audio-
und Videoströme
zu identifizieren, einen Sequenz-Header, um das Videoformat syntaktisch
zu analysieren, eine Sequenzerweiterung für weitere Videoformat-Informationen
und einen GOP-Header, um an einem „I-Frame" (Intra-Frame) mit dem Decodieren zu
beginnen.
-
Im
Gegensatz zu anderen Block basierten Komprimierungsalgorithmen ist
die Framegröße in MPEG variabel,
deshalb muss zur Lokalisierung der Frames die Datei sequenziell
gelesen werden. Um die Play-from-Offset-Funktion zu implementieren,
müssen
MPEG-Player im Allgemeinen eine grobe, auf der Multiplex-Bitrate
basierende Berechnung durchführen.
Um beispielsweise in einem 8 Mbps-Video die Wiedergabe bei Offset
00:00:10:15 (10 Sekunden, 15 Frames) starten zu können, muss
der Player die folgende Formel anwenden:
-
-
Da
diese Formel nur einen Annäherungswert
darstellt und der Player keine Kenntnisse über die GOP-Grenzen besitzt,
wird der Player willkürlich
eine Anzahl an Bytes aus diesem Ergebnis abziehen, um sicherzustellen,
dass die Wiedergabe vor dem Ziel-Frame beginnt. Dieses grobe Verfahren
ist jedoch nicht zufrieden stellend, weil möglicherweise bis zu 15 Frames
eines fehlerhaften Videos angeschaut werden müssen, bevor es dem Codierer
gelingt, ein vollständiges,
fehlerfreies Videobild zu erzeugen. Zusätzlich geht diese Formel davon
aus, dass das Video mit einer konstanten Bitrate komprimiert wurde.
Wurde ein Komprimierungsschema mit variabler Bitrate verwendet,
besteht kein Zusammenhang zwischen Bitrate, Dateigröße und Videodauer.
-
Eine
weitere konventionelle Technik zur Implementierung der Play-from-Offset-Funktion
besteht darin, dass der Videoserver eine Indexdatei erstellt, die
den Offset jeder GOP im Video enthält. Der Player gibt einen Zeit-Offset
an den Streaming-Server
weiter, und der Server durchsucht zur Feststellung des Datei-Byte-Offsets eine
Tabelle. Der Nachteil dieses Verfahrens ist, dass der Server für jedes
Video eine zusätzliche
Datei anlegen und verwalten muss. Wenn die Video-MPEG-Datei in einen Nearline-Bandeinheitenspeicher übermittelt wird,
müssen
beide Dateien auf Band geschrieben und von dort wiederhergestellt
werden. Dies erschwert außerdem
die Übertragung
von Videos zwischen Servern, die normalerweise ausgeführt wird,
um einen Belastungsausgleich Aufrecht zu erhalten oder Videodateien
von anderen Content-Providern zu importieren.
-
Ein
weiteres Problem bei der Server basierten Implementierung der Play-from-Offset-Funktion
tritt deshalb auf, weil das vom Benutzer angeforderte Bild wahrscheinlich
nicht mit der GOP-Grenze übereinstimmen
wird. Der Player hat keine Kenntnisse über den Zeitcode des Start-Frames,
deshalb wird der Suchlauf beim ersten Bild der GOP gestartet, und
der Endbenutzer ist gezwungen, in einzelnen Schritten zum gewünschten
Bild zu gelangen. Dieses Vorgehen ist für die Broadcast-Videoindustrie
nicht annehmbar. Von nichtlinearen Videogeräten wird erwartet, dass der
Suchlauf mit minimaler Verspätung
beim Ziel-Frame ist.
-
Deshalb
gibt es einen Bedarf an einem System und Verfahren zur automatischen
Einfügung
von Dateiindexinformationen in eine vorhandene MPEG-Videodatei,
damit ein MPEG-Player für
die präzise
Ausführung
der Play-from-Offset-Funktion vorab die SMPTE-Zeitcodes und Dateioffsets
der Bildsequenzen (GOP) kennt. Dieses System und Verfahren sollte
in der Lage sein, ohne eine separate Indexdatei auf eine Weise zu arbeiten,
die sicherstellt, dass die MPEG-Videodatei weiterhin ohne Fehler
von jeder den technischen Anforderungen entsprechenden MPEG-Decoder-Engine decodierbar
ist.
-
ÜBERBLICK ÜBER DIE
ERFINDUNG
-
Der
dargestellte Sachverhalt sowie weitere Aufgaben, Merkmale und Vorteile
der vorliegenden Erfindung werden anhand der folgenden detaillierten
Beschreibung der bevorzugten Ausführungsarten deutlicher verständlich,
wobei auf mehrere Zeichnungen Bezug genommen wird.
-
Eine
bevorzugte Ausführungsart
der vorliegenden Erfindung ist ein Verfahren zur automatischen Einfügung einer
komprimierten GOP-Offset-Tabelle in eine zuvor codierte MPEG-Videodatei
für einen
bildgenauen willkürlichen
Zugriff auf jedes individuelle Videobild im Play-from-Offset-Modus.
Dieses Verfahren erzeugt eine komprimierte GOP-Offset-Tabelle mit
einem Eintrag für
jeden GOP-Header von jedem Videopaket der MPEG-Videodatei und verändert die
MPEG-Videodatei, indem es die komprimierte GOP-Tabelle am Anfang der MPEG-Videodatei
als mindestens ein Füllpaket
einfügt,
wobei die Erfüllung
der MPEG-Anforderungen und die komprimierten Audio-/Videodaten der
MPEG-Videodatei beibehalten werden. Dieses Verfahren verfügt außerdem über einen
Vorgang zur Schätzung
der Anzahl der Füllpakete,
die für
die GOP-Offset-Tabelle benötigt werden,
und begrenzt dadurch das Lesen der MPEG-Videodatei auf einen einzigen
Lesevorgang. Einigen komprimierten Füllpaketen mit der GOP-Offset-Tabelle
geht dabei ein Pack-Header mit einem Systemuhrbezug (System Clock
Reference, SCR) voraus. Das Füllpaket
beinhaltet daneben einen Standard-PES-Header, eine Offset-Tabellensignatur,
ein Feld für
den Start-Zeitcode und ein Feld für die GOP-Startadresse.
-
Jeder
Eintrag des GOP-Headers beinhaltet des Weiteren ein Feld für die Anzahl
der Frames innerhalb einer vorangegangenen GOP, und ein Feld für einen
GOP-Adressen-Offset mit einer Offset-Adresse des dem GOP-Header entsprechenden
Pack-Headers. Diese Felder werden vor der Decodierung der GOP-Offset-Tabelle
für die
Resynchronisierung eines MPEG-Decodertakts und für die Wiederherstellung des
Zeitcodes und des Adressen-Offsets von jedem GOP-Header während der
Dekomprimierung und Decodierung verwendet, indem die Anzahl der
Frames und der Adressen-Offset jedes GOP-Header-Eintrags jeweils
zum Zeitcode und zur GOP-Startadresse
hinzugefügt
werden, wodurch ein willkürlicher
Zugriff auf jedes individuelle Videobild im Play-from-Offset-Modus ermöglicht wird.
Das Verfahren verfügt
außerdem über einen
Schritt zur zeitlich rückwirkenden
SCR-Anpassung nach dem Einfügen
der GOP-Offset-Tabelle, um eine genaue Systemtaktung zu erhalten.
-
Eine
weitere bevorzugte Ausführungsart
der vorliegenden Erfindung ist eine Vorrichtung, die das oben genannte
Verfahren der Ausführungsart
der vorliegenden Erfindung implementiert.
-
Eine
weitere bevorzugte Ausführungsart
der vorliegenden Erfindung ist eine Vorrichtung zur Programmspeicherung,
die von einem Computer gelesen werden kann und ein Programm von
Anweisungen enthält,
die vom Computer ausgeführt
werden, um Vorgänge
des oben genannten Verfahrens der Ausführungsart der vorliegenden
Erfindung auszuführen.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
Im
Folgenden wird auf die Zeichnungen Bezug genommen, in denen gleiche
Referenznummern durchgängig
auf entsprechende Teile verweisen:
-
1 ist
eine Darstellung eines konventionellen Video-Aufnahme-/Katalogisierungssystems gemäß dem Stand
der Technik;
-
2 stellt
die Positionierung der Anwendung zur Einfügung einer GOP-Offset-Tabelle
innerhalb eines vorhandenen Videokatalogisierungssystems gemäß einer
bevorzugten Ausführungsart
der vorliegenden Erfindung dar;
-
3 zeigt
die Formatierung einer ursprünglich
codierten MPEG-Datei, in die eine GOP-Offset-Tabelle gemäß den bevorzugten
Ausführungsarten
der vorliegenden Erfindung eingefügt wurde;
-
4 zeigt
eine Datenstruktur eines Füllpakets
mit einer komprimierten GOP-Offset-Tabelle für die Codierung und Übermittlung
der GOP-Offset-Tabelleninformationen gemäß den bevorzugten Ausführungsarten
der vorliegenden Erfindung;
-
5 ist
ein logisches Flussdiagramm der wichtigsten Softwareroutine einer
Anwendung zur Einfügung
einer GOP-Offset-Tabelle gemäß den bevorzugten
Ausführungsarten
der vorliegenden Erfindung;
-
6 ist
ein logisches Flussdiagramm einer Softwareroutine zur Analyse einer
MPEG-Videodatei für die
Schätzung
der Frame- und GOP-Anzahl
gemäß den bevorzugten
Ausführungsarten
der vorliegenden Erfindung;
-
7A und 7B zeigen
ein logisches Flussdiagramm einer Softwareroutine für die Verarbeitung einer
MPEG-Datei, um den Adressen-Offset und die Größe jedes GOP zu extrahieren,
gemäß den bevorzugten
Ausführungsarten
der vorliegenden Erfindung;
-
8 ist
eine Darstellung der Datenstruktur einer GOP-Offset-Tabelle gemäß den bevorzugten Ausführungsarten
der vorliegenden Erfindung;
-
9A und 9B zeigen
den logischen Ablauf einer Softwareroutine für die Formatierung komprimierter
MPEG-Pakete, die
GOP-Offset-Tabelleninformationen enthalten, gemäß den bevorzugten Ausführungsarten
der vorliegenden Erfindung;
-
10 zeigt
den logischen Ablauf der Softwareroutine für das Einfügen von GOP-Offset-Paketen
in eine MPEG-Datei ohne Störung
der vorhandenen komprimierten MPEG-Daten gemäß den bevorzugten Ausführungsarten
der vorliegenden Erfindung;
-
11A und 11B zeigen
einen logischen Ablauf einer Softwareroutine, der von einem MPEG-Player
genutzt wird, um die GOP-Offset-Tabelle von einem eintreffenden
MPEG-Strom zu extrahieren, gemäß den bevorzugten
Ausführungsarten
der vorliegenden Erfindung; und
-
12 ist
eine Darstellung einer grafischen Benutzeroberfläche (Graphical User Interface,
GUI) eines MPEG-Players
und eines Catalogers, der für
die Katalogisierung von Videos verwendet wird, um Video- und Metadatenströme anzuzeigen,
gemäß den bevorzugten
Ausführungsarten
der vorliegenden Erfindung.
-
DETAILLIERTE
BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSARTEN
-
In
der folgenden Beschreibung der bevorzugten Ausführungsarten wird auf die beiliegenden
Zeichnungen Bezug genommen, die ein Bestandteil der vorliegenden
Erfindung sind, und in welchen durch die Art der Darstellung von
spezifischen Ausführungsarten
gezeigt wird, wie die Erfindung umgesetzt werden könnte. Es versteht
sich, dass andere Ausführungsarten
verwendet und strukturelle und funktionelle Änderungen durchgeführt werden
können,
ohne dass vom Geltungsbereich der vorliegenden Erfindung abgewichen
wird.
-
Die
vorliegende Erfindung befasst sich mit einem Verfahren, einer Vorrichtung
zur Programmspeicherung und einem System zur Verarbeitung von MPEG-1-
oder MPEG-2-Videodateien, um Dateiindexinformationen in Form einer
GOP-Offset-Tabelle mit GOP-SMPTE-Zeitcode und GOP-Byteoffset automatisch
in eine vorhandene MPEG-Datei einzufügen, um ohne Modifizierung
oder Veränderung
der ursprünglichen
komprimierten Video-/Audiodaten eine präzise Play-from-Offset-Leistungsfähigkeit
zu erreichen, während
die MPEG-Übereinstimmung
vollständig
erhalten bleibt, so dass die normalen Aufnahme- und Katalogprozeduren des
Broadcasters unverändert
bleiben. Die Erfindung ist in der Lage, die GOP-Offset-Tabelle in
jeden vorhandenen übereinstimmenden
MPEG-1-Systemstrom, MPEG-2-Programmstrom oder MPEG-2-Transportstrom einzufügen, unabhängig vom
Hersteller des MPEG-Codierers/Decoders.
-
Des
Weiteren sind die bevorzugten Ausführungsarten der vorliegenden
Erfindung in der Lage, die Existenz der GOP-Offset-Tabelle für MPEG-Decoder transparent
zu machen, die nicht in der Lage sind, diese zu extrahieren, und
die erhöhte
Länge sowie
die Wiedergabeverzögerung
der modifizierten MPEG-Datei
zu minimieren. Sie können
Bitfehler, die während
des Streamens eines MPEG-Videos über
ein Telekommunikationsnetzwerk entstanden sind, entdecken und beheben,
und können
die MPEG-Videodatei auf effiziente Art verarbeiten, da die Datei
nur ein einziges Mal gelesen werden muss. Des Weiteren arbeiten
sie ohne den Gebrauch einer separaten Indexdatei, auf eine Art,
die gewährleistet,
dass die MPEG-Videodatei weiterhin ohne Fehler von jeder übereinstimmenden
MPEG-Decoder-Engine decodierbar bleibt.
-
1 ist
eine Darstellung eines konventionellen Video-Aufnahme-/Katalogisierungssystems gemäß dem Stand
der Technik. In 1 stellt ein Videorecorder 100 das
Ausgangsvideo zur Codierung bereit. Eine Aufnahme-/Katalogisierungsanwendung 125 steuert
parallel drei MPEG-Codierer 105, 115, 120,
die eine hoch auflösende
Videodatei und zwei Proxies erzeugen. Der hoch auflösende MPEG-Codierer 105 wird
durch einen Broadcast-Video-Server 110 ergänzt. Erzeugt
die Aufnahme-/Katalogisierungsanwendung 125 MPEG-Dateien 128 und
damit verbundene Metadaten 135, werden die Katalogeinträge mit Hilfe
einer Videobibliotheksanwendung 140 im Videobibliothekskatalog 130 erzeugt
oder aktualisiert. Das Katalogisieren und Indexieren der Videodateien
ermöglicht
anschließend
das Suchen und Wiederfinden.
-
Nach
der Beendigung des Codierens werden die komprimierten Dateien auf
einen Streaming-Videoserver 145 übertragen, der Daten per FTP
oder Isochron-Streaming an den MPEG-Decoder/Player 160 übertragen
kann. Der gesamte Inhalt des Videos wird in ein Bandarchiv 150 zur
Langzeitspeicherung kopiert und bei Bedarf zurückgeholt. Der Endbenutzer findet
den Inhalt im Katalog der Videobibliothek 130 mittels einer Katalogsuchmaschine 155.
Die durch die Sucheingabe ermittelten Katalogeinträge werden
mit Hilfe eines Catalogers/Metadata-Viewers 165 individuell geprüft. Das
gesamte Video oder jeder beliebige Teil davon kann über den
MPEG-Player 160 angeschaut werden.
-
2 ist
eine Darstellung eines Video-Aufnahme-/Katalogisierungssystems gemäß der bevorzugten Ausführungen
der vorliegenden Erfindung. Das Verfahren und System der vorliegenden
Erfindung verarbeitet eine vorhandene MPEG-1- oder MPEG-2-Videodatei und fügt eine
GOP-Offset-Tabelle als Startpaket bzw. Startpakete des Stroms ein.
Die GOP-Offset-Tabelle
wird als MPEG-Füllpakete
eingefügt
(beispielsweise mit einem Startcode OxBE). Füllpakete werden normalerweise
von einem Codierer erzeugt, um den Strom mit externen Null-Daten
zu füllen,
um eine konstante Bitrate beizubehalten. Füllpakete werden normalerweise
vom MPEG-Decoder gelöscht.
Die vorliegende Erfindung markiert diese eingefügten Füllpakete mit der GOP-Offset-Tabelle
eindeutig mit einer Signatur, die von jedem MPEG-Decoder erkannt
wird, der in der Lage ist, die GOP-Offset-Tabelle zu extrahieren.
-
Die
Füllpakete
mit der GOP-Offset-Tabelle werden eingefügt, ohne den MPEG-Strom erneut
zu multiplexen und ohne Präsentations-Zeitstempel
(Presentation Timestamps, PTS), Decoder-Zeitstempel (Decoder Timestamps,
DTS), Systemuhrbezug (System Clock Reference, SCR) oder jede andere
MPEG-Datenstruktur der
ursprünglichen
Videodatei zu modifizieren. Die resultierende Videodatei erfüllt weiterhin
alle MPEG-Anforderungen,
und die eingefügte
GOP-Offset-Tabelle hat keine nachteilige Auswirkung auf den Betrieb
anderer MPEG-Hardware oder MPEG-Softwaredecoder. Die Technik der
Einfügung
von GOP-Offset-Tabellen
funktioniert auf jeder mit MPEG übereinstimmenden
Programmstrom- oder Tansportstromdatei, unabhängig vom Hersteller des Codierers.
-
Wenn
die Datei vom angeschlossenen MPEG-Player codiert wird, wird die
GOP-Offset-Tabelle extrahiert und für die Zeit im Speicher gespeichert,
in der die Datei das aktive Video bleibt.
-
Wenn
der Benutzer an beliebige Stellen im Video springt, lokalisiert
der Player den nächsten
vorangegangenen GOP-Header mit Hilfe einer effizienten binären Suche,
die auf den in der GOP-Offset-Tabelle gespeicherten Zeitcode Bezug
nimmt. wird das Video isochron von einem Videoserver gestreamt,
sendet der Player die Adresse des Ziel-GOP-Headers an den Server,
der dann den aktuellen Dateilesezeiger aktualisiert und den Videostrom
neu startet. Decodiert der Player eine lokal gespeicherte MPEG-Datei,
veranlasst der Player eine Eigenaktualisierung des entsprechenden
Dateilesezeigers.
-
Die
vorliegende Erfindung besitzt Vorteile gegenüber dem Stand der Technik,
da kein Bedarf an der Erzeugung und Verwaltung einer separaten Datei,
die Daten-zur GOP-Indexierung enthält, besteht. Die eingebettete
GOP-Offset-Tabelle wird zu einem festen Bestandteil der Proxy-Videodateien,
die sich im Videoarchiv befinden. Ein weiterer Vorteil besteht darin,
dass keine Modifikation der MPEG-Serversoftware erforderlich ist.
-
Wie
aus 2 ersichtlich, werden gemäß den bevorzugten Ausführungsarten
der vorliegenden Erfindung Proxy-Dateien, die von zwei Codierern 205, 210 mit
niedriger Auflösung
erzeugt wurden, auf einer Festplatte 260 eines separaten
Gerätes 265 gespeichert,
um von einer Anwendung zur Einfügung
von GOP-Offset-Tabellen
(GOP offset insertion application, GOTIA) 265 verarbeitet
zu werden. Der Aufruf der GOTIA 265 wird automatisch von
einem Workflow Manager 235 nach der Mitteilung einer Aufnahme-/Katalogisierungsanwendung 230,
dass die Ausführung
der Codierung abgeschlossen würde,
ausgelöst.
Wenn die Aufnahme-/Katalogisierungsanwendung 230 die Beendigung
des Jobs dem Workflow Manager 235 meldet, ruft der Workflow Manager
im Gegenzug die GOTIA 265 auf, die die GOP-Offset-Tabellen-Pakete in
die MPEG-Videodatei einfügt
und anschließend
die modifizierte MPEG-Datei 258 auf einen Streaming-Videoserver 250 kopiert.
-
2 zeigt
ebenfalls einen Videorecorder 200, der ein Ausgangsvideo
zur Codierung bereitstellt. Die Aufnahme-/Katalogisierungsanwendung 230 steuert
parallel drei MPEG-Codierer 205, 215, 210,
die eine hoch auflösende
Videodatei und zwei Proxies erzeugen. In den hoch auflösenden MPEG-Codierer 215 wurde
ein Broadcast-Video-Server 220 zum Senden integriert. Erzeugt
die Aufnahme-/Katalogisierungsanwendung 230 Metadatendateien 245,
werden in einem Videobibliothekskatalog 240 mit Hilfe einer
Anwendung für
Videobibliotheken 255 Katalogeinträge erzeugt oder aktualisiert.
Das Katalogisieren und Indexieren von Videodateien ermöglicht das
anschließende
Suchen und Wiederfinden.
-
Die
vollständige
Proxy-Videodatei des Codierers 205, oder jeder beliebige
Teil davon, sowie die in der Suchanfrage gefundenen Katalogeinträge und Metadaten
können über den
MPEG-Player und
Metadata-Viewer 275 angeschaut werden, der eine Play-at-Offset-Anforderung
an den Streaming-Videoserver 250 senden kann. Das System
aus 2 kann ebenfalls einen Webbrowser-MPEG-Player-Plugin 270 als
Bestandteil haben, der eine Play-at-Offset-Anforderung zum Streaming-Videoserver 250 senden
und von ihm ein Streaming-Video erhalten kann, das ursprünglich vom
Proxy-Codierer 210 codiert wurde.
-
3 veranschaulicht
die Formatierung einer MPEG-Datei 300 in der ursprünglichen
Codierung mit Audiopaketen 305, Videopaketen 310 und
Füllpaketen 315 sowie
eine MPEG-Videodatei 308,
die gemäß der vorliegenden
Erfindung neu formatiert und in die gemäß der bevorzugten Ausführungsart
der vorliegenden Erfindung eine GOP-Offset-Tabelle 340 eingefügt wurde.
Deshalb ist 3 eine nicht skalierte Darstellung
des MPEG-Dateiformats auf hohem Niveau, vor und nach Einfügung der
GOP-Offset-Tabelle 340. Die GOP-Offset-Tabelle 340 ist
als eine Reihe von Füllpaketen
mit der GOP-Offset-Tabelle 345, 350 am Anfang
der MPEG-Datei 308 eingefügt, damit der MPEG-Player die
gesamte GOP-Offset-Tabelle 340 in seinem Speicher (nicht
dargestellt) zusammensetzen kann, bevor die Videowiedergabe gestartet
wird. Die GOP-Offset-Tabelle 340 ist in die Füllpakete 345, 350 eingebettet,
die normalerweise von Decodern gelöscht würden. Die Füllpakete mit der GOP-Offset-Tabelle 345, 350 enthalten
jedoch eine identifizierende Offset-Tabellensignatur, um sie von
anderen Füllpaketen 365 zu
unterscheiden, und eine Füllpaket-Sequenznummer,
die zurückgesetzt wird,
um das letzte Füllpaket
mit der GOP-Offset-Tabelle 345, 350 zu
signalisieren, wenn eine ganze Sequenz von Füllpaketen mit der GOP-Offset-Tabelle 340 erzeugt
wird.
-
Die
Füllpakete 345, 350 enthalten
außerdem
eine 32-Bit-Kontrollsumme
zur Bitfehlererkennung. Wird ein Fehler entdeckt, hat der MPEG-Player
die Möglichkeit,
nochmals ein Playout vom Server anzufordern, damit die MPEG-Videodatei 308 mit
der GOP-Offset-Tabelle 340 mit möglichst wenig Verzögerung erneut übertragen
wird. Sobald die GOP-Offset-Tabelle einmal im Speicher des MPEG-Players
erstellt wurde, wird sie nicht mehr erneut im MPEG-Player zusammengesetzt,
selbst wenn das Video erneut von Beginn an gestartet wird. Nur das
Laden einer anderen MPEG-Videodatei wird ein Löschen und erneutes Erstellen
der GOP-Offset-Tabelle verursachen.
-
Wie
aus 3 ersichtlich, wird die GOP-Offset-Tabelle 340 als
eine Reihe von MPEG-Füllpaketen 345, 350 codiert,
die am Anfang der ursprünglichen
MPEG-Datei platziert sind. Um eine Erfüllung der MPEG-Anforderungen
zu gewährleisten
und ein genaues Decodieren zu erleichtern, beginnt die Datei 308 mit einem
Pack-Header 320 und einem System-Header 325. Ein
Füllpaket-Header 330, 348 wird
direkt vor einigen oder allen Füllpaketen
mit der GOP-Offset-Tabelle 345, 350 platziert.
Ein PES-Header (Packetised Elementary Stream, Gepackter Elementarstrom) 335, 349,
wird am Anfang jedes Füllpakets
mit der GOP-Offset-Tabelle 345, 350 platziert.
Ein in jedem neu erzeugten Datei-Pack-Header (320, 330, 348)
enthaltener Systemuhrbezug (SCR) wird zeitlich rückwirkend angepasst, um eine
genaue Systemtaktung zu erhalten. Der Rest der verarbeiteten MPEG-Videodatei 308 enthält die gleichen
Audiopakete 355 und Videopakete 360 wie die ursprüngliche
MPEG-Videodatei 300.
-
In
den bevorzugten Ausführungsarten
hat jedes Füllpaket
mit der GOP-Offset-Tabelle 345, 350 eine Größe von 2480
Bytes, um bis zu 800 3-Byte-Einträge der komprimierten Offset-Tabelle
zu puffern, trotz eines möglicherweise
abweichenden Werts. Das bedeutet bei einer GOP-Länge von 15 Bildern eine Videospieldauer von
6 Minuten und 40 Sekunden. Bei einer angenommenen Streaming-Bitrate
von 3 Mbps verlängert
ein einziges Füllpaket
mit der Offset-Tabelle 345, 350 die Downloadzeit
des Videos um 6,6 Millisekunden. Der Start eines 20-minütigen Videos
verzögert
sich somit um weniger als 20 Millisekunden.
-
4 veranschaulicht
eine Datenstruktur eines Füllpakets
mit einer komprimierten GOP-Offset-Tabelle 345, 350,
die gemäß den bevorzugten
Ausführungsarten
der vorliegenden Erfindung zum Kodieren und Übertragen der GOP-Offset-Tabelleninformationen
verwendet wird. Als erstes besitzt es einen konventionellen PES-Header 335, 349,
der aus einem Füllstartcode 400,
einer Paket-PES-Länge 405 und
einer End-of-Header-Markierung 410 besteht. Nach dem Standard-PES-Header
beinhaltet das Füllpaket
mit der komprimierten GOP-Offset-Tabelle von 4 der vorliegenden
Erfindung außerdem:
eine Füllpaketsequenznummer 415, eine
Offset-Tabellensignatur 420, ein Feld mit der Anzahl der
GOP-Offset-Tabelleneinträge
innerhalb dieses Füllpakets 425,
ein Markierungsfeld 430, ein Hochauflösungsdelta-Feld 435,
ein Feld für
den Start-Zeitcode 440 und ein Feld für die GOP-Startadresse 445.
Das Füllpaket
mit der komprimierten GOP-Offset-Tabelle
enthält
des Weiteren eine komprimierte GOP-Offset-Tabelle 450 und ein
Kontrollsummenfeld 455, wie aus 4 ersichtlich.
-
Die
Offset-Tabellensignatur 420 ist eine eindeutige 4-Byte-Signatur, die die
Füllpakete
mit der GOP-Offset-Tabelle 345, 350 von den normalen
Füllpaketen 365 unterscheidet,
die üblicherweise
vom Decoder gelöscht
werden. Die Sequenznummer 415 der Füllpakete ermöglicht dem
Decoder, fehlende Füllpakete mit
der GOP-Offset-Tabelle 345, 350 zu ermitteln und
das letzte Füllpaket
mit der GOP-Offset-Tabelle zu signalisieren, das die Sequenznummer
null aufweist. Auf die gleiche Weise ermöglicht das 32-Bit-Kontrollsummenfeld 455 dem
Decoder, Bitfehler der Füllpakete
zu ermitteln. Im Falle eines Fehlers sendet der Decoder in der vorliegenden
Erfindung eine neue Anforderung zum Lesen einer MPEG-Datei an den
Server, damit die fehlerhaften Füllpakete
mit der GOP-Offset-Tabelle mit minimaler Verzögerung erneut geschickt werden.
Die vorliegende Erfindung ermöglicht
es auch, die fehlerhaften Pakete zu löschen, ohne die verbleibenden
Teile der GOP-Offset-Tabelle 340 zu beeinträchtigen.
Gelöschte
Pakete erzeugen jedoch eine ,Lücke' in der GOP-Offset-Tabelle 340,
was zu einem falschen GOP-Offset führt, falls einer der fehlenden
Zeitcodes abgefragt werden sollte.
-
4 beinhaltet
ebenfalls die komprimierten Einträge der GOP-Offset-Tabelle 450,
die auf 3 Bytes komprimiert werden, um die Länge der Füllpakete mit der GOP-Offset-Tabelle 345, 350 zu
minimieren. Jeder dieser Einträge 450 stellt
einen GOP-Header
im Videopaket dar und hat zwei Felder, wie aus 4 ersichtlich wird:
ein Feld, das die Anzahl der Frames innerhalb einer vorangegangenen
GOP 460 anzeigt, und ein 20-Bit-Feld für den GOP-Adressen-Offset 465,
bei dem der Adressen-Offset berechnet wurde, indem von der letzten
Pack-Header-Adresse
die vorhergehende Pack-Header-Adresse, die im Tabelleneintrag 450 für die vorhergehende
GOP gefunden wurde, subtrahiert wurde. Da jedes Füllpaket
vom MPEG-Decoder dekomprimiert wird, ist der Decoder in der Lage,
den Zeitcode und den Adressen-Offset jeder GOP zu rekonstruieren, indem
er die Anzahl der Frames 460 und den Adressen-Offset 465 jedes
GOP-Eintrags jeweils zum Start-Zeitcode 440 und zur GOP-Startadresse 445 addiert.
Diese Summen von jedem GOP-Zeitcode und Adressen-Offset werden als
zeitliche variablen im Speicher gespeichert.
-
Analyse und
Verarbeitung von MPEG-Dateien
-
5 ist
ein logisches Flussdiagramm der wichtigsten Softwareroutine der
Anwendung zur Einfügung einer
GOP-Offset-Tabelle
gemäß den bevorzugten
Ausführungsarten
der vorliegenden Erfindung. Nach dem Öffnen einer MPEG-Videodatei
in Schritt 500 ruft die Anwendung in Schritt 505 die
Routine zur Analyse einer MPEG-Datei von 6 für die Analyse
der ersten 10 Sekunden der ursprünglichen
Videodatei auf, um die Anzahl der Frames und der GOP-Header zu schätzen und
eine Kopie des ersten Pack-Headers und System-Headers der ursprünglichen
MPEG-Videodatei zu speichern. In 6 wird der
zuerst gefundene Pack-Header in Schritt 600 decodiert,
und die Stream-Mulitplex-Bitrate wird in Schritt 605 extrahiert.
In Schritt 610 wird der Pack-Header und in Schritt 615 der
System-Header kopiert und für
einen späteren
Gebrauch gespeichert. Mit Hilfe der in Schritt 605 gewonnenen
Multiplex-Bitrate wird die Anzahl der Video-Frames in der Videodatei
(Frame-Anzahl) in Schritt 620 geschätzt, indem die Größe der Datei
durch die Bitrate geteilt wird. In Schritt 625 werden die
ersten 20 Sekunden des Videos analysiert, um die maximale GOP-Länge zu ermitteln
und um herauszufinden, ob die GOP-Länge variabel oder fest ist.
Wenn in Schritt 630 festgestellt wird, dass die GOP-Länge variabel
ist, wird die GOP-Länge
in Schritt 660 um 2 Frames verringert, bevor in Schritt 635 die GOP-Anzahl
in der Datei geschätzt
wird. Diese Zahl wird berechnet, indem die Anzahl der Video-Frames
(Frame-Anzahl) durch
die GOP-Länge
geteilt wird. Sobald die GOP-Anzahl
geschätzt
wurde, wird sie in Schritt 640 durch 800 geteilt, um die
Anzahl der Füllpakete
zur Pufferung der GOP-Offset-Tabelleneinträge zu berechnen. Beträgt der Rest 600 oder
mehr, wird die Zahl in Schritt 665 um 1 erhöht, um eine
Sicherheitstoleranz zu gewährleisten.
Die Routine endet mit der Berechnung der geschätzten Gesamtgröße der GOP-Offset-Tabelle in Schritt 650 und
mit der Rückkehr
zur Hauptroutine der Anwendung in Schritt 655. Die geschätzte Gesamtgröße der GOP-Offset-Tabelle
wird berechnet, indem jede Füllpaketgröße einer
GOP-Offset-Tabelle (2480) zu der Größe des Pack-Headers addiert,
diese Summe mit der Anzahl der Füllpakete
multipliziert und die Größe des Pack-Headers
sowie die Größe des System-Headers
dazu addiert wird. Der Pack-Header 320 und der System-Header 325 werden
am Anfang der MPEG-Datei eingefügt,
um dem MPEG-Decoder zu ermöglichen,
die Datei eindeutig als MPEG-Programmstrom zu identifizieren. Anschließend wird
der Pack-Header 330, 348 direkt am Anfang jedes
Füllpakets
mit der GOP-Offset-Tabelle 340, 350 eingefügt. Jeder
PES-Header 335, 349 wird als Teil seines jeweiligen
Füllpakets
angesehen.
-
Um
die Leistungsfähigkeit
der Anwendung zu maximieren, liest die vorliegende Erfindung die MPEG-Videodatei
nur ein Mal. Um das Lesen der Dateien auf einen einzigen Lesevorgang
zu begrenzen, muss die GOP-Anzahl geschätzt werden, damit den Füllpaketen
mit der GOP-Offset-Tabelle in der erneut verarbeiteten MPEG-Datei
ausreichend Speicherkapazität
zugewiesen werden kann. Die zwei Frames, die von der maximalen GOP-Länge abgezogen
werden, bevor diese in die Anzahl der Frames geteilt wird, stellen
einen empirisch hergeleiteten Wert dar, der für eine angebrachte Sicherheitstoleranz
gegen ein Übersteigen
der zugewiesenen Speicherkapazität
der GOP-Offset-Tabelle
sorgt. Übersteigt
die tatsächliche
GOP-Anzahl den geschätzten
Wert stark, bricht die GOTIA die laufende Verarbeitung der MPEG-Videodatei
ab und startet erneut mit einer größeren Schätzung der GOP-Anzahl.
-
Wie
in 5 ersichtlich, wird die Routine zur Verarbeitung
der MPEG-Datei der 7A und 7B in
Schritt 510 nach der Analyse der MPEG-Datei aufgefordert,
den Adressen-Offset und die Größe jeder
GOP zu extrahieren und ein Array der Einträge der GOP-Adressen-Offsets
zu kompilieren. 8 zeigt eine unkomprimierte
Version der GOP-Offset-Tabelle. Die GOTIA erstellt diese Tabelle
während
der Syntaxanalyse der MPEG- Datei
und speichert sie als eine temporäre Datenstruktur. Nachdem die
MPEG-Datei vollständig
syntaktisch analysiert wurde, wird diese Tabelle zur Erstellung
einer komprimierten GOP-Offset-Tabelle von 4 verwendet,
die in Füllpaketen
gespeichert wird. Extrahiert der MPEG-Decoder die Füllpakete
aus dem MPEG-Strom, wird die GOP-Offset-Tabelle dekomprimiert, womit
die ursprüngliche
Version der GOP-Offset-Tabelle wieder hergestellt wird, und anschließend gespeichert.
Die Struktur von 8 enthält einen Satz mit Markierungen 800,
die über
das Feld 430 der Füllpakete
mit der komprimierten GOP-Offset-Tabelle
von 4 zum MPEG-Player weitergeleitet werden, um die
GOP-Offset-Tabelle genau zu rekonstruieren.
-
Wie
in 7A und 7B ersichtlich,
beginnt die Routine in Schritt 700 durch das Erzeugen einer Datei
für die
Speicherung der verarbeiteten, modifizierten MPEG-Datei und durch
das Setzen des Schreibzeigers hinter den den Paketen der GOP-Offset-Tabelle zugewiesenen
Bereich. Der logische Ablauf fährt
dann in Schritt 702 mit einer Schleife fort, um jedes Paket
der MPEG-Datei zu verarbeiten. Zusätzlich zu den Audio- und Videopaketen
gibt es noch verschiedene System- und Füllpakete, die festgestellt
und ohne weitere Verarbeitung in Schritt 706 in die Datei
geschrieben werden. In Schritt 704 wird die Datei sequenziell
decodiert, um den Startcode eines jeden MPEG-Videopakets zu lokalisieren und zu verarbeiten.
Wird in Schritt 708 herausgefunden, dass der Startcode
ein Videosequenz-Header 370 ist, dann wird die Video-Frame-Rate
in Schritt 712 extrahiert und in Schritt 716 gespeichert,
womit entweder eine 30-Frames-pro-Sekunde-Markierung 825 oder
eine 25-Frames-pro-Sekunde-Markierung 835 in einer unkomprimierten
GOP-Offset-Tabelle von 8 gesetzt wird. Zusätzlich wird,
wenn das Videosequenz-Paket einen Drop-Frame-Zählmodus anzeigt, entsprechend
eine Drop-Frame-Markierung 820 gesetzt.
-
Nachdem
die Frame-Rate in Schritt 716 gespeichert wurde, werden
in Schritt 706 die Paketdaten in die verarbeitete MPEG- Datei geschrieben,
und die Schleife wird wiederholt. Wenn in Schritt 720 ein
Picture-Start-Header gefunden wird, erhöht sich in Schritt 724 die
Bildanzahl und in Schritt 728 die Frame-Anzahl des SMPTE-Zeitcodes.
Beide Werte werden als temporäre
Variablen gespeichert. Dann werden in Schritt 706 die MPEG-Paketdaten
in die verarbeitete MPEG-Datei geschrieben, und die Schleife wird
fortgesetzt. Wenn in Schritt 732 ein Pack-Header gefunden
wird, wird die geschätzte
Größe der Offset-Tabelle,
die in Schritt 650 in 6 erhalten
wurde, zu der Pack-Header-Adresse in Schritt 736 addiert,
und das Ergebnis wird in Schritt 740 als letzte Pack-Header-Adresse in
einer temporären
Variablen gespeichert. Wenn der nächste GOP-Header schließlich gefunden
wurde, wird die letzte Pack-Header-Adresse in Schritt 780 im
Feld für
den zugehörigen GOP-Adressen-Offset 865 der
temporären,
unkomprimierten GOP-Offset-Tabelle gespeichert. Der Grund für die Aufzeichnung
der letzten Pack-Header-Adresse anstelle der tatsächlichen
GOP-Header-Adresse ist, dem MPEG-Decoder zu ermöglichen, seinen Takt vor der
Decodierung der GOP-Offset-Tabelle
zu resynchronisieren. Als nächstes
werden in Schritt 706 die Paketdaten in die verarbeitete
MPEG-Datei geschrieben, und die Schleife wird fortgesetzt.
-
Ist
der aktuelle Startcode, der in Schritt 744 gefunden wurde,
kein GOP-Header, werden in Schritt 706 die Paketdaten in
die verarbeitete MPEG-Datei geschrieben, und die Schleife wird fortgesetzt.
Sonst werden mit dem Zeitcode, der im GOP-Header enthalten ist,
eine Reihe von Tests durchgeführt.
Wenn in Schritt 748 kein Zeitcode gefunden wird, wird in
Schritt 752 die Markierung 845 ,Kein ZC' von 8 gesetzt.
Ist ein Zeitcode vorhanden, wird er in Schritt 756 auf
Kontinuität
und in Schritt 764 auf Zunahme geprüft. Die Markierung 840 ,Unterbrochener
ZC' und/oder die
Markierung 850 ,Nicht zunehmender ZC' von 8 werden
in den Schritten 760 beziehungsweise 768 gesetzt,
wenn beide Tests negativ ausfallen. In allen Fällen fährt der logische Ablauf mit Schritt 772 fort,
wo der vom GOP-Header extrahierte Zeitcode in Feld 855 gespeichert
und in Schritt 776 die Anzahl der in der vorherigen GOP
enthaltenen Frames von der in Schritt 724 gespeicherten Variablen
in Feld 860 der temporären,
unkomprimierten GOP-Offset-Tabelle von 8 wiederhergestellt
wird. Die Feldeinträge
der GOP-Offset-Tabelle
werden in Schritt 780 vervollständigt, indem die letzte Pack-Header-Adresse,
die als eine temporäre
Variable beibehalten wird, im Feld 865 von 8 gespeichert
wird. Als nächstes
wird die Variable der Bildanzahl in Schritt 784 auf null
gesetzt, die Anzahl der GOP-Offset-Einträge 810 wird in Schritt 788 erhöht und die
Paketdaten werden in Schritt 706 in die verarbeitete MPEG-Datei
geschrieben. Die Schleife verarbeitet jedes Paket in der MPEG-Datei
und hört
auf, wenn in Schritt 702 das Ende der ursprünglichen
MPEG-Datei erreicht wurde, woraufhin die Unterroutine in Schritt 792 die
Kontrolle an die Hauptroutine der Anwendung von 5 übergibt.
-
Erzeugung
eines GOP-Offset-Tabellenpakets
-
Nachdem
die unkomprimierte GOP-Offset-Tabelle von 8 erstellt
wurde, ruft die Hauptroutine von 5 in Schritt 515 eine
Unterroutine von 9A und 9B auf,
um die Füllpakete
mit der komprimierten GOP-Offset-Tabelle zu formatieren. Wie in 9A und 9B gezeigt,
tritt die Unterroutine in Schritt 900 in eine Schleife
ein, um alle aufgezeichneten GOP-Offset-Tabelleneinträge von 8 zu
komprimieren und zu paketieren, gemäß dem in 4 dargestellten
komprimierten Paketformat der Offset-Tabelle. Wird in Schritt 904 herausgefunden,
dass die Anzahl der verbleibenden GOP-Offset-Tabelleneinträge größer als 800 ist,
wird die Anzahl der GOP-Offset-Tabelleneinträge 425 in Schritt 908 auf 800 gesetzt,
und die Anzahl der verbleibenden Einträge wird in Schritt 912 um 800 verringert.
Sonst wird in Schritt 916 die Anzahl der Einträge 425 auf die
Anzahl der verbleibenden GOP-Offset-Tabelleneinträge gesetzt
und die Anzahl der verbleibenden GOP-Einträge in Schritt 918 gelöscht. Der
logische Ablauf fährt
in Schritt 920 mit dem Erstellen der PES-Header 400, 405, 410 fort,
fügt in
Schritt 924 die Signatur 420 ein und erhöht die Sequenznummer
des Pakets 415 in Schritt 928. In Schritt 932 wird
eine Nebenschleife durchlaufen, um das Füllpaket mit komprimierten GOP-Offset-Einträgen aufzufüllen. Wenn
der erste Eintrag in Schritt 944 verarbeitet wird, wird
in Schritt 936 der GOP-Zeitcode 855 im Füllpaket
von 4 im Feld 440 als Start-Zeitcode gespeichert.
Die Zeitcodes aller GOP-Offset-Tabelleneinträge in diesem Füllpaket
werden in der Anzahl der Frames 460 als ein Offset vom Start-Zeitcode 440 codiert.
In Schritt 940 wird der erste GOP-Adressen-Offset 865 in
Feld 445 als Startadressen-Offset gespeichert. Für alle anderen
komprimierten Offset-Tabelleneinträge 450 in diesem Füllpaket
wird das GOP-Adressen-Offset 465 als Offset berechnet,
indem der vorherige GOP-Adressen-Offset 865, der im Tabelleneintrag 865 für die vorherige
GOP gefunden wird, von diesem GOP-Adressen-Offset 865 subtrahiert wird.
-
Jeder
GOP-Offset-Tabelleneintrag 450 wird durch eine in Schritt 948 ausgeführte Komprimierung
in einen 3-Byte-GOP-Offset-Tabelleneintrag
eingebaut. Wenn alle Einträge
verarbeitet wurden, endet die Schleife in Schritt 932 in
der Bedingung „Nein", und die Header-Markierungen 800,
die in der Routine zur Verarbeitung von MPEG-Dateien von 7A und 7B gesetzt
wurden, werden in Schritt 952 im Markierungsfeld 430 von 4 gespeichert.
wenn in Schritt 956 das letzte Paket formatiert wird, wird
die Sequenznummer des Füllpakets 415 in
Schritt 960 gelöscht.
Die Erstellung des Pakets wird durch Berechnung und Speicherung
der Paketkontrollsumme 455 in Schritt 964 und
durch Erhöhung
der Füllpaketanzahl,
die als temporäre
Variable gespeichert wird, in Schritt 968 vervollständigt.
-
Die
Hauptschleife beginnt bei 900 und endet mit der Bedingung „Nein", wenn alle GOP-Offset-Tabelleneinträge paketiert
wurden. Bevor die Füllpakete
in die verarbeitete MPEG-Datei geschrieben werden, wird in Schritt 972 geprüft, ob die
tatsächliche
Anzahl der Füllpakete
mit der GOP-Offset-Tabelle den dafür reservierten Speicherplatz übersteigt.
Ist dies der Fall, wird die GOTIA in Schritt 984 mit der
tatsächlichen
Anzahl der GOP-Header neu gestartet. Ist die Anzahl der GOP-Pakete geringer als
erwartet, fällt
der logische Ablauf in Schritt 976 in eine Schleife, die
in Schritt 980 Dummy-Füllpakete
hinzufügt,
um den für
die GOP-Offset-Tabelle reservierten Speicherplatz aufzufüllen. Ist
die Anzahl der Pakete gleich der geschätzten Anzahl, kehrt die Unterroutine
in Schritt 988 über
die Bedingung „Nein" aus Schritt 976 zurück zur Hauptroutine
von 5.
-
Einfügung einer
GOP-Offset-Tabelle
-
Wie
in 5 ersichtlich, wird in Schritt 520 die
Unterroutine zur Einfügung
der Füllpakete
mit der GOP-Offset-Tabelle von 10 aufgefordert,
die Füllpakete
mit der GOP-Offset-Tabelle
in die verarbeitete MPEG-Datei zu schreiben. Wie aus 10 ersichtlich,
wird der Schreibzeiger der verarbeiteten MPEG-Datei in Schritt 1000 auf
null zurückgesetzt,
und die Pack- und System-Header, die in den Schritten 610 und 615 von 6 gespeichert
wurden, werden in Schritt 1005 in die Datei geschrieben.
In Schritt 1010 wird die Verzögerung des Pack-Headers, des System-Headers
und der GOP-Offset-Tabelle berechnet, indem die Größe des Pack-
und des System-Headers und aller Füllpakete summiert und das Ergebnis
durch die Stream-Mulitplexrate geteilt wird. Dieses Ergebnis wird
in eine äquivalente
Anzahl von 90 kHz-Taktzyklen konvertiert und in Schritt 1015 vom
im Pack-Header enthaltenen SCR subtrahiert. Die Schleife durch alle
Füllpakete
beginnt in Schritt 1020. Die Verzögerung für die aktuellen und nachfolgenden
Füllpakete
wird in Schritt 1025 berechnet und vom SCR des vorangehenden
Pack-Headers in Schritt 1030 abgezogen. Die Größe des Füllpakets
in Schritt 1025 beinhaltet den PES-Header. Für MPEG-Ströme mit einem
geringen SCR-Startwert
führt die
Subtraktion zu einem Unterschreiten des 33-Bit-SCR-Registers und
benötigt
somit eine zusätzliche
Durchführung der
Modulo-Addition. Der Pack-Header und das Füllpaket werden anschließend in
Schritt 1035 in die Datei geschrieben, und die Paketanzahl
wird in Schritt 1040 verringert. Wenn keine Füllpakete übrig bleiben,
wird die Schleife in Schritt 1020 mit der Bedingung „Nein" beendet, die verarbeitete
MPEG-Datei wird in Schritt 1045 geschlossen und die Unterroutine
kehrt in Schritt 1050 zum aufrufenden Programm von 5 zurück. Die Hauptroutine
von 5 endet mit Schritt 525 und beendet die
Anwendung.
-
MPEG-Decoder/Player
-
11A und 11B zeigen
einen logischen Ablauf einer Softwareroutine, der von einem MPEG-Player
benutzt wird, um die GOP-Offset-Tabelle gemäß den bevorzugten Ausführungsarten
der vorliegenden Erfindung aus einem eintreffenden MPEG-Strom zu
extrahieren. Die GOP-Offset-Tabelle wird nach dem Empfang der Datei
vom MPEG-Decoder/Player extrahiert, anschließend dekomprimiert sowie in
einer globalen GOP-Offset-Tabelle gespeichert, auf die über einen
API-Aufruf von jeder Anwendung verwiesen werden kann. Beispielsweise
kann vom EDL-Erstellungsprogramm
und von den Cataloger-Anwendungen, die in den Videobibliotheksanwendungen
beinhaltet sind, darauf verwiesen werden. Die dekomprimierte Datenstruktur
der GOP-Offset-Tabelle
ist mit der in 8 dargestellten Tabelle identisch.
-
Gemäß 11A und 11B fällt die
Routine in Schritt 1100 sofort in eine Schleife, um jedes
Paket zu verarbeiten, sobald die Datei erhalten wurde. In Schritt 1105 wird
jeder Startcode decodiert, und in Schritt 1110 geprüft um zu
sehen, ob es sich bei dem Paket um ein Video- oder Audiopaket handelt.
Falls dies der Fall ist, kehrt die Unterroutine in Schritt 1190 zurück, weil
die Existenz eines Audio- oder Videopakets anzeigt, dass keine Füllpakete
mit der GOP-Offset-Tabellen mehr vorhanden sind. Wenn das Paket
gemäß Schritt 1115 kein
Füllpaket
ist, wird die Schleife ab Schritt 1100 über die Bedingung „Nein" wiederholt. Sonst
handelt es sich bei dem Paket um ein Füllpaket, und das Paket wird
in Schritt 1120 auf die Signatur und in Schritt 1125 auf
die korrekte Kontrollsumme geprüft.
Schlägt
einer der beiden Tests fehl, wird die Schleife ab Schritt 1100 wiederholt,
um das nächste
Paket zu verarbeiten. Erfüllt
das Füllpaket
beide Bedingungen, werden die Markierungen in Schritt 1130 extrahiert
und gespeichert, und der logische Ablauf geht in eine zweite Schleife,
die bei Schritt 1135 beginnt, um jeden Offset-Tabelleneintrag zu
verarbeiten. Bei der ersten Iteration in Schritt 1140 wird
der Start-Zeitcode in Schritt 1145 vom Füllpaket-Header
geladen, und der im aktuellen Füllpaket
codierte Startadressen-Offset für
alle GOP-Header wird in Schritt 1150 geladen. Beide werden
benötigt,
um den Zeitcode und die Adresse jedes komprimierten Tabelleneintrags
aufzulösen.
In den Schritten 1155 und 1160 wird das 20-Bit Adressen-Offset
vom Paket gelesen und zu der Startadresse addiert, um ein 64-Bit-GOP-Adressen-Offset
in der Tabelle zu erstellen. Der Zeitcode wird in den Schritten 1165 und 1170 auf
die gleiche Weise verarbeitet, indem die Anzahl der Frames zu dem
in Schritt 1145 geladenen Zeitcode addiert wird. Der Zeitcode
für jeden GOP-Header-Eintrag
wird im Füllpaket
akkumuliert. Wenn der letzte Eintrag dekomprimiert wurde, wird die
Sekundärschleife über die
Bedingung „Nein" in Schritt 1135 beendet,
und in Schritt 1180 wird geprüft, ob das Füllpaket
das letzte ist. Wenn dies der Fall ist, wird die Beendigungsmarkierung
in Schritt 1185 gesetzt, und die Routine kehrt in Schritt 1190 zurück. Sonst
wiederholt sich die Primärschleife
erneut ab Schritt 1100, um die verbliebenen Füllpakete
mit der Offset-Tabelle zu verarbeiten.
-
MPEG-Player/Metadata-Viewer
des Videoproduzenten
-
12 ist
eine Darstellung der grafischen Benutzeroberfläche (GUI) eines MPEG-Players
und Metadata-Viewers 1200, der von einem Spezialisten für Videoproduktion
zur Videokatalogisierung benutzt wurde, um Streaming-Videodaten
und Metadaten anzuzeigen, gemäß den bevorzugten
Ausführungsarten
der vorliegenden Erfindung. Im Layout des in 12 dargestellten
MPEG-Players und Metadata-Viewers des Videoproduzenten werden VCR-Steuerungen 1202 bereitgestellt,
und das Videodisplay 1210 zeigt ein angehaltenes Video
mit der aktuellen Position 00:02:26:07. Der untere Teil des Fensters
enthält
ein Anzeigefeld für
den Katalogeintrag 1250 für den von der Videobibliotheksanwendung
angeforderten Katalogeintrag.
-
Ein
relativer Zeitcode 1215, absoluter Zeitcode 1220 und
die Dauer 1225 des aktuellen Frames werden angezeigt. Die
Schaltfläche
Direktzugriff 1230 hat die Funktion, über eine Anzeige 1235 einen
Zeitcode auszusuchen, um direkt zu einem gewünschten Videoclip zu gelangen.
Das Fenster für
die Anzeige der Storyboard-Thumbnails 1240 enthält zwölf Thumbnails.
Der vierte Thumbnail in der dritten Reihe 1280, der durch Doppelklicken
hervorgehoben wird, befiehlt eine Wiedergabe ab dem relativen Zeitcode 1215 von
Offset 00:02:26:07 vom absoluten Zeitcode 1220 von 09:17:45:17.
-
Wenn
der Endbenutzer eine Anforderung zur Betrachtung einer MPEG-Datei
stellt, sendet der MPEG-Player eine Anforderung an den Videoserver,
die Datei zu öffnen
und mit dem Streaming ab Offset 0 zu beginnen. Dies führt dazu,
dass der Videoserver die Füllpakete
mit der GOP-Offset-Tabelle streamt und dem MPEG-Decoder ermöglicht,
die GOP-Offset-Tabelle zu erstellen. Sobald das letzte Füllpaket
mit der GOP-Offset-Tabelle erhalten wurde und die GOP-Offset-Tabelle,
wie in 8 definiert, komplett erstellt wurde, ist der
Player in der Lage, auf jedes beliebige Frame in der MPEG-Videodatei
zuzugreifen.
-
Wenn
der Endbenutzer über
die Schaltfläche
Direktzugriff 1230 eine Play-from-Offset-Anforderung stellt
und dabei den auf der Anzeige 1235 angezeigten Offset auswählt, sendet
der Player sofort eine Play-from-Offset-Anforderung an den Videoserver,
um das Streaming ab dem ersten GOP-Header vor dem vom Benutzer angeforderten
Zeitcode zu beginnen. Als erstes muss der Player den angeforderten
Zeitcode in eine GOP-Offset-Adresse konvertieren, indem er eine
Binärsuche
ausführt,
um den Bereich der Einträge
der GOP-Offset-Tabelle 815 zu durchsuchen. Der Eintrag
in der GOP-Offset-Tabelle, der dem angeforderten Zeitcode entspricht,
wird durch den Vergleich des angeforderten Zeitcodes mit jedem GOP-Zeitcode 855 aus
der Tabelle gefunden. Wenn der zugehörige Eintrag der GOP-Offset-Tabelle gefunden
wurde, wird das GOP-Adressen-Offset 865 gelesen und zum
Videoserver weitergeleitet. Ist der GOP-Zeitcode 855 nicht der angeforderte
Zeitcode, subtrahiert der Player den GOP-Zeitcode 855 vom angeforderten
Zeitcode, um die Anzahl der Video-Frames zu berechnen, die übersprungen
werden müssen,
um zu dem angeforderten Frame zu gelangen. Der Player unterdrückt eine
Anzeige des Videos während
des Überspringens,
bis das angeforderte Frame erreicht wurde. Decodiert der Player
eine lokal gespeicherte MPEG-Datei, lässt der Player den entsprechenden
Dateilesezeiger sich selbst aktualisieren.
-
Wenn
der Endbenutzer über
die Schaltfläche
Direktzugriff 1230 eine Play-from-Offset-Anforderung stellt,
bevor das Video mit dem Streaming begonnen hat, und dabei das auf
der Anzeige 1235 gezeigte Offset auswählt, gibt der Player zuerst
die Playfrom-Offset-0-Anforderung an den Videoserver. Daraus, ergibt
sich, dass der Videoserver die Füllpakete
streamt, die die GOP-Offset-Tabelle enthalten, und damit dem MPEG-Decoder
ermöglicht,
die GOP-Offset-Tabelle zu erstellen. Sobald die Tabelle erstellt
ist, gibt der Player den Play-from-Offset- Befehl sofort zurück an den Videoserver, um das
Streaming ab dem ersten GOP-Header vor dem angeforderten Zeitcode
zu beginnen.
-
Die
vorangegangene Beschreibung der bevorzugten Ausführungsarten der Erfindung dient
der Veranschaulichung und der Beschreibung. Es wird keine Vollständigkeit
oder Beschränkung
der Erfindung auf die präzise
beschriebene Form beabsichtigt. Angesichts der obigen Darstellung
sind viele Modifizierungen und Abwandlungen möglich. Es wird beabsichtigt,
dass der Geltungsbereich der Erfindung nicht durch diese detaillierte
Beschreibung beschränkt,
sondern durch die beiliegenden Ansprüche festgelegt wird.