Multimedia Streaming: kleine Schritte vs. die große Lösung

Praktisch mit der Einführung von Aufzeichnungen als Transport Stream Dateien hat DVB.NET und damit auch VCR.NET die Möglichkeit erhalten, die aufgezeichneten Daten so, wie sie auf Platte geschrieben werden, auch über Netzwerk zu versenden. Dabei wird der Versand einmalig aktiviert und der Datenstrom an einen TCP/IP UDP Endpunkt geleitet. Erst nur an einen Client (Unicast), später dann durch die Verwendung von Multicast auch gleichzeitig durch mehrere Clients zu empfangen.

Dieser Ansatz hat allerdings den Nachteil, dass immer nur die gerade laufende Aufzeichnung (so zu sagen das Ende der aktuellen Aufzeichnung) betrachtet werden kann. Und es müssen auch immer alle Clients genau das selbe ansschauen.

Bei VCR.NET 3.0 habe ich versucht, im Web Client durch Einsatz des VLC ActiveX Controls eine Möglichkeit zu schaffen, dass auch mehrere Clients individuell in eine Aufzeichnungen schauen können. Durch den Einsatz von HTTP als Basis ist es dabei auch nicht notwendig, besondere Maßnahmen bei der Konfiguration der Firewalls zwischen Server und Client vorzusehen. Allerdings hat auch dieser Ansatz eine Reihe von Nachteilen. Neben der Instabilität und Einschränkungen des Controls und Problemen bei der Bedienung des Timeshifts ist das TCP basierte HTTP Protokol ein wesentlicher Schwachpunkt.

Der realisierte Ansatz erfordert, anders als das UDP Streaming, eine bidirektionale Kommunikation zwischen Client und Server. Im Endeffekt werden in gewissen Abständen die Datenpakete des Servers (der Transport Stream) vom Client bestätigt. Dadurch kann gerade bei hochratigen Aufzeichnungen kein permanenter und gleichmäßiger Datenstrom garantiert werden und es kommt zu Rucklern.

Nun, das ist nichts Neues. Es gibt auf vernünftige, aber aufwändige Lösungen für dieses Problem (RTP, ASF, …). Eine Implentierung für VCR.NET 3.1 ist für mich allerdings zeitlich nicht zu machen (vermutlich nicht einmal die Evaluation) – für die 3.1er Generation stehen andere Punkte im Vordergrund. Darum wird es einen kleinen Schritt geben, der allerdings mit einem dedizierten Client (dem DVB.NET / VCR.NET Viewer) schon den gewünschten Effekt bringen kann.

Bei Live Betrachtungen (des Endes einer Aufzeichnung, i.e. das, was gerade zur Platte geschickt wird), wird das UDP Streaming die bevorzugte Methode sein. Eine Konfiguration der Firewall(s) sollte in diesem Rahmen machbar sein. Interessanter wird es beim Timeshift (und darüber hinaus, dazu gleich mehr). VCR.NET 3.1 wird voraussichtlich eine (SOAP) Methode haben, um aus einer Aufzeichnungsdatei ein beliebiges Stück (Offset / Länge – bis maximal 10 MByte) an eine beliebige UDP (Unicast oder Multicast) Adresse zu senden. Zusammen mit dem neuen BDAWindow Control in DVB.NET 3.1 wird dann nach Bedarf ein Stückchen Transport Stream angefordert. Dieser Bedarf wird durch die Überwachung der Zeitstempel im Direct Show Graphen ermittelt und hat sich schon beim Abspielen von Dateien bewährt. Der Graph wird dabei mit Vorlaufmaterial beschickt, bis dessen Zeitstempel mehr als eine Sekunde in der Zukunft liegt (bezogen auf das zuletzt dargestellte Bild oder Tonsignal). Durch diese Pufferung sollte eine nahtlose Darstellung möglich sein – wie gesagt, bei Dateien funktioniert es wie gehofft. Das Bewegen in der Aufzeichnungsdatei ist mit diesem Mechanismus ebenfalls kein Thema.

Die SOAP Schnittstelle ist darüber hinaus darauf vorbereitet, jede Aufzeichnungsdatei auf diesem Wege abrufen zu können. Eine Aufzeichnungsdatei ist dabei eine beliebige Datei mit der Endung .TS, die in einem der VCR.NET Aufzeichnungsverzeichnisse (oder darunter) zu finden ist. Vielleicht erlaubt es VCR.NET 3.2 dann auch, ältere Aufzeichnungen einfach abzuspielen.

Soweit für heute. Wenn das alles wie gewünscht klappt, werde ich mir danach anschauen, welche Art der Zusammenarbeit es zwischen dem DVB.NET / VCR.NET Viewer und FFDShow und DScaler geben kann.

Jochen

Speichere in deinen Favoriten diesen permalink.

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.