3.1 – und nu?

Wer das Forum von HighPaq verfolgt, hat sicher mitbekommen, dass die Version 3.1 endlich raus ist (DVB.NET inklusive Viewer, VCR.NET und Stand-Alone Überwachung sowie die letzte Version des Zapping Clients). Bevor ich mit den Untersuchungen für die nächste Version (3.2 wird es wohl) beginne, gibt es erst mal etwa 4 Wochen Pause bei diesen Produkten – nicht zuletzt, um zu sehen, ob es nicht doch noch Fehler gibt, die sofort durch Patches behoben werden müssen. Für die nächste Version wird der Viewer im Vordergrund stehen, ich gehe davon aus, dass sich im Bereich des VCR.NET Recording Service praktisch nichts tut – Kleinkram höchstens. Ich traue mich daher, mal so ganz locker eine Freigabe der 3.2 zwischen Weihnachten und Neujahr 2007 anzupeilen.

Schau’n mer mal

Jochen

Quelltexte von DVB.NET und Konsorten

Ich habe mich entschieden, alle die Quelltexte, die ich eh frei herausgebe, zum direkten Zugriff anzubieten. Das erspart jemanden, der nur mal eben schauen möchte, die lokale Installation – ich persönlich versuche immer, die Installation von Fremdprodukten zu vermeiden, wenn ich sie nicht wirklich brauche. Im Allgemeinen ist die Deinstallation meiner Tools zwar vollständig und ohne Rückstände, aber das kann ja jeder sagen – mir vor allem, nachdem ich vor einiger Zeit meinen Viren Scanner völlig neu einrichten musste, weil die Deinstallation einer Elecard Demoware meinte, eine Systemkomponente direkt mit entfernen zu müssen (ich denke, das haben die inzwischen im Griff).

Die Source sind so, wie sie auch sonst ausgeliefert würden, i.e. im Allgemeinen ohne die Setup Projekte. Im Moment sind nur die Quelltexte von DVB.NET 3.1 verfügbar, ich werde den Quelltextbereich aber in den nächsten Tagen weiter füllen, wenn die anderen 3.1 Versionen Final sind. Der Quelltextbereich wird immer nur die jeweils aktuellste, endgültige Version enthalten. Soll heissen: mit DVB.NET 3.2 wird der jetzige Inhalt des Verzeichnisses DVB.NET vollständig ersetzt.

Viel Spaß

Jochen

Die Grenzen meiner Nexus-S

Als ich meine Nexus-S (TechnoTrend Premium) DVB Karte Anfang 2003 bekommen habe, fand ich es erst mal ganz normal, dass man bei einer Aufzeichnung nur Bild und (eine) Ton(spur) erhält – dass die Aufzeichnungssoftware, die es damals gab, nicht meinen Anforderungen entsprach, weiß jeder, der sich in genau diesen Teil meines BLogs verirrt hat: nur darum gibt es DVB.NET und VCR.NET. Irgendwann wollte ich dann mal auf ARTE die zweite Tonspur mitaufzeichnen, da diese in diesem besonderen Fall den (englischen) Originalton enthielt. Das war der Zeitpunkt, an dem ich versucht habe, herauszubekommen, was die Nexus denn wirklich ‚draufhat.

Nach einer Einarbeitung in das Grundprinzip von digitalen Fernsehen und Radio war ich erst mal enttäuscht: von der Vielfalt der Datenströme in einem DVB Transport Stream kann die Nexus maximal 8 Datenströme Nutzdaten (Bild / Ton / Videotext) und maximal 16 Datenströme Kontrolldaten (SI Tabellen) empfangen – konkret: mehr geht mit dem TechnoTrend API / SDK unter Windows nicht, aber das ist irrelevant. Wenn alle 8 Datenströme Bildsignale empfangen, kommt es zu Störungen und Experimente zeigten, dass maximal 7 Bildsignale möglich sind. Aber auch das ist irrelevant, da Bild ohne Ton wenig Sinn macht und daher bleibt das Fazit: die Nexus-S kann maximal 4 Sender gleichzeitig aufzeichnen (klar: weniger, wenn auf einem Sender weitere Tonspuren et al aufgezeichnet werden sollen).

Tatsächlich habe ich bis heute nur dreimal 3 Sender gleichzeitig aufgezeichnet, niemals wirklich alle vier benötigt. Zwei parallele Sender sind aber schon fast Standard und kommen mindestens einmal die Woche vor. Ich wollte aber wissen, wo denn nun die Grenzen sind. Dazu habe ich damals einige Experimente gemacht und mache diese auch immer noch.

Irgendwann 2004 oder so konnte ich problemlos 4 Sender parallel aufzeichnen, egal von welchem Transponder. Selbst ZDF + 3SAT + KiKa + ZDFdoku waren möglich – damals die Sender, mit der höchsten Bitrate. Irgendwann in 2006 stellt ich fest, dass das nicht mehr geht. 4 Sender vom ZDF Transponder sind de facto nicht möglich, die Aufzeichnungen bestehen praktisch nur aus Fehlern. Bei 3 Sendern geht es manchmal, aber nicht immer. Zuerst hatte ich natürlich DVB.NET im Verdacht. Da nun alle Aufzeichnungen als Transport Stream (TS) Dateien erzeugt werden, ist ein gewisser Mehraufwand an Rechenzeit notwendig, um eine Aufzeichnung durchzuführen. Vielleicht puffert die Karte nicht ausreichend und in gewissen Situationen gehen Daten verloren. Obwohl die typische Prozessorlast bei deutlich unter 5% liegt (Pentium D mit 2 x 3GHz), wäre das eine Möglichkeit.

Ich denke, ein bißchen spielt das schon eine Rolle. Aber im DVB.NET Stream Manager gibt es eine Option, eine Mehrkanalaufzeichnung auf Basis der einzelnen Datenströme vorzunehmen und jeden PID der Aufzeichnung direkt von der TT API / SDK in eine Datei schreiben zu lassen. Völlig ohne Eingriff in die Übertragung durch DVB.NET, i.e. mehr an Performance geht nicht. Zuerst ging eine Testaufzeichnung und ich fing schon an, nach der Ursache in der TS Erzeugung zu suchen. Dann aber schlug auch ein solch elementarer Test fehl. Im Gegentest konnten 4 Sender des RTLWorld Transponders als TS Dateien fehlerfrei parallel aufgezeichnet werden.

Auch wenn ich die genauen Hintergründe nicht kenne, liegt das Geheimnis wohl in der Kombination von der gesamten Datenrate einer Mehrkanalaufzeichnung und der Datenrate der einzelnen Teilaufzeichnungen. Das RTLWorld Beispiel lag bei insgesamt knapp 14 MBit/s mit RTL selbst als Anführer bei 4,1 MBit/s (alles Mittelwerte aus ProjectX). Nimmt man nur ZDF bei 7+ MBit/s auf, scheint es keine Probleme zu geben, ebenso Eins Festival HD mit 12+ MBit/s. Selbst ZDF + 3SAT mit zusammen 12+ MBit/s laufen prima. Ich bin jetzt nicht so ganz sicher, da ich keine Möglichkeit habe, H.264 Aufzeichnungen auf interne Korrektheit zu prüfen. Aber rein optisch geht sogar noch BBC HD mit teilweise über 18 MBit/s sauber durch.

Im Moment ist mein Bauchgefühl, dass die Nexus bei einzelnen Aufzeichnungen ein einziges Bildsignal mindestens bis 14 MBit/s, eventuell sogar bis 18+ MBit/s gut verträgt (ich habe eine alte MIBII Aufzeichnung aus der MPEG-2 HDTV Testphase von Pro7 mit 18 MBit/s, die war damals völlig fehlerfrei). Zumindest bis 14 MBit/s scheint das auch für Mehrkanalaufzeichnungen zu stimmen, wenn nicht extreme Einzelraten existieren. Hat zumindest ein Bildsignal 6+ MBit/s so scheint es mit weiteren parallelen Aufzeichnungen sehr schnell eng zu werden, auch wenn die Gesamtrate unter 14 MBit/s liegt.

Die meisten Tests habe ich im TS Modus gemacht, da die Aufzeichnungen als PES einfach zu unhandlich sind. Ich gehe davon aus, dass da noch ein bißchen Spielraum drin ist, aber viel wird es nicht sein (mit einem modernen Prozessor). Ich denke auch nicht, dass DVB.NET / VCR.NET einen Rückschritt weg von der TS Aufzeichnung machen werden.

Dachte ich 2006 noch, die Nexus finge an zu spinnen, so glaube ich inzwischen, dass sie immer noch so ‚gut‘ (sehr relativ verglichen mit der TechnoTrend S2-3200, die auch 8 parallel Aufzeichnungen mit 24+ MBit/s schafft) ist wie am Anfang. Nur leider / glücklicherweise habe viele Sender inzwischen die Qualität ihrer Ausstrahlungen erhöht. Die obige Aufzeichnung von RTLWorld würde seit der Umstellung der Pro7 Gruppe auf dem neuen Transponder schon nicht mehr gehen, da die Einzelsender hier schon bei 5+ MBit/s liegen.

Zum Glück brauche ich selten mehr als zwei Sender parallel und da scheint die Nexus noch gut zu passen. Aber es empfiehlt sich, für das eigene System ab und an mal zu prüfen, wo die Grenzen denn aktuell liegen. Sonst ärgert man sich vielleicht, wenn man genau DIE Aufzeichnung schrottet, auf die man schon seit Jahren wartet.

Jochen

Über die automatische Aktualisierung der Senderdaten

Nun haben DVB.NET / VCR.NET ein Feature bekommen, das normale TV Anwendungen (für den digitalen Empfang) schon lange oder sogar schon immer haben: die automatische Aktualisierung der Daten eines Senders. Obwohl es hier um uralte Kamellen geht, scheint es mir doch wert zu sein, einige Worte über die konkrete Implementierung zu verlieren.

Die meisten Anwendungen (so auch DVB.NET / VCR.NET) arbeiten erst einmal mit einer Senderliste. Diese wird durch einen Sendersuchlauf bestimmt und enthält alle Daten zum Empfang und der Darstellungen eines Senders. Die Empfangsdaten umfassen im Wesentlichen (aber nicht nur) die Frequenz (korrekter: die Informationen zum Transponder), auf dem der Sender empfangen werden kann und die Dienstkennung. Die Darstellungsdaten enthalten dann unter anderem die Datenstromkennungen (PID) von Bild und Ton. Nun ist es so, dass sich diese Datenstromkennungen zeitlich ändern können. So gibt es Sender, die zeitweise Tonspuren hinzu- oder wegschalten, ab und zu keinen Videotext senden oder wie die Regionalsender des WDR zeitweise Bild und Ton von anderen Datenströmen beziehen.

Mit den statischen Daten aus dem Sendersuchlauf kommt es dann zu Anzeige(und Aufzeichnungs)problemen. Dies wird durch die automatische Aktualisierung der Senderdaten umgegangen. Technisch wird dabei praktisch ein ständiger Suchlauf aktiviert, der aber im Allgemeinen nur die Senderdaten des gerade angezeigten (aufgezeichneten) Senders berücksichtigt. Damit ein schneller Start oder ein schnelles Umschalten möglich ist, werden erst einmal die Daten der Senderliste verwendet – diese sollten daher die meistens verwendeten und reichhaltigsten (alle Tonspuren) Senderdaten enhalten. Wird im Betrieb eine Veränderung durch den dedizierten Suchlauf erkannt, so wird die Anzeige (Aufzeichnung) entsprechend angepasst. DVB.NET / VCR.NET reagiert dabei nur auf die Änderungen der Datenstromkennungen an sich, nicht aber zum Beispiel auf die Sprachzuordnung der Tonspuren.

Anders als andere Anwendung ist die automatisch Anpassung in DVB.NET / VCR.NET erst einmal grundsätzlich deaktiviert und muss gesondert pro betroffenem Sender aktivtiviert werden. Warum dieser Aufwand? Nun, DVB.NET / VCR.NET kümmern sich erst einmal ausschließlich um Aufzeichnungen von Sendern – lediglich der DVB.NET / VCR.NET Viewer kann zum Betrachten verwendet werden, das ist ein anderes Thema. Bei der Programmierung von Aufzeichnungen und der Planung der Ausführung spielt die Senderliste eine wesentliche Rolle. Bei DVB Hardware mit eingeschränktem Aufzeichnungspotential wie den TechnoTrend Premium Karten kann nur eine begrenzte Zahl von Datenströmen gleichzeitig aufgezeichnet werden – in diesem Falle 8, entsprechend maximal vier Sendern mit je einer Tonspur. Möchte man zusätzlich zur primären Tonspur weitere Datenströme aufzeichnen (alternative MP2 oder AC3 Tonspuren, Videotext), so muss dies bei einer Planung von Mehrkanalaufzeichnungen berücksichtigt werden. Die konkreten Senderdaten zu diesem zukünftigen Zeitpunkt können bei der Programmierung natürlich nicht vorausgesehen werden.

Darüber hinaus habe ich mich bei Aufzeichnungen entschieden, mit dem Wechsel der Senderdaten auch eine neue Aufzeichnungsdatei zu beginnen. Damit ist sichergestellt, dass die Änderungen mit den Anforderungen innerhalb der Transport Stream Aufzeichnungsdatei konform sind – etwa könnte sich die Zeitbasis bei der Umschaltung auf die WDR Lokalzeit ändern. Zudem kann es bei verspätet hinzukommenden Tonspuren Probleme bei der Nachbearbeitung geben. Diese Entscheidung bedeutet aber auch, dass in der Aufzeichnung durch die Unterbrechung eine kleine Lücke von einigen Sekunden entsteht. Zudem ist das Beenden und Neustarten einer Aufzeichnung insbesondere bei Mehrkanalaufzeichnungen nicht unkritisch, da parallele Aufzeichnungen in Mitleidenschaft gezogen werden könnten.

In DVB.NET / VCR.NET ist daher vorgesehen, die automatische Aktualisierung nur auf den Sendern einzuschalten, die diese auch benötigen. Zusätzlich sollten weiterhin alle Senderdaten immer die maximalen Informationen enthalten – egal ob mit oder ohne automatischen Aktualisierung. Insbesondere sollten die maximal verfügbaren Tonspuren aufgeführt sein. Die neue Nachbearbeitungsoptionen des Sendersuchlaufs unterstützen bei der Konfiguration der Senderliste.

Die volle Wahrheit ist allerdings, dass es doch eine Art von Sendern gibt, dür die eine automatische Aktualisierung der Senderdaten immer aktiv ist. Bei einigen PayTV Sendern gibt es die Möglichkeit, spezielle Dienstkanäle anzuschauen (Kinokanäle, Direktkanäle, Near-Video-On-Demand (NVOD), …). Diese sind in der Senderliste gesondert gekennzeichnet und werden dynamisch zugeordnet. Für diesen besonderen Fall machen die Senderdaten nur zu dem Zeitpunkt Sinn, an dem ein Dienstkanal betrachtet (aufgezeichnet) wird.

Man kann es als Faulheit betrachten, aber im Moment ist es einfach so: auch beim reinen Betrachten mit dem DVB.NET / VCR.NET Viewer wird die Konfiguration wie beschrieben verwendet – egal ob die Betrachtung mit einer lokalen DVB Hardware oder als VCR.NET Zapping Client erfolgt. Das heißt, die automatisch Aktualisierung ist bis auf die beschriebenen Ausnahmen erst einmal deaktiviert. Für das reine Betrachten ist es allerdings nie schädlich, die Anpassung ständig aktiv zu haben – maximal ruckelt es kurz in der Anzeige. Naja, es sei denn, der Sender spielt ein wenig mit den Senderdaten herum…

So weit erst einmal dazu

Jochen