Transport Stream analyiseren

Ich habe mal die (zugegeben etwas beschränkten) Möglichkeiten der aktuellen DVB.NET 3.9 SP1 genutzt, um in einem einfachen Beispiel zu demonstrieren, wie man sich einen Überblick über den Inhalt eines Transport Streams (eines ganzen Transponders) verschaffen kann. Das funktioniert allerdings nur mit BDA Treibern (also insbsondere nicht mit der Nexus / Premium Line).

Der DVB.NET TS Parser bietet im Moment leider nicht die Möglichkeit, dynamisch Teilströme an einen Client zu melden. Aber mit einem kleinen Trick geht es doch. Das Beispielprogramm aktiviert eine beliebige Quellgruppe (Transponder), die durch eine Quelle (Sender) als Repräsentant gekennzeichnet wird. Dann wird der Statistikmodus aktiviert, der dafür sorgt, dass für alle Datenströme Buch über die empfangenen Daten geführt wird. Wartet man nun etwas (so 30 Sekunden, damit auch TOT und TDT eingetroffen sind) und fragt diese Statistik dann ab, so erhält man im Allgemeinen alle Datenstromkennungen (PID) der Quellgruppe. Nun ist es ein Einfaches, Verbraucher an die einzelnen Ströme anzumelden und diese auszuwerten – das Beispiel ist allerdings extrem einfach gestrickt, reicht aber, um die meisten SI Tabellenströme von Nutzdaten zu trennen und bei PES Datenströmen die Breitstellung des PCR zu erkennen. Läßt man das Beispiel kurz laufen, kann man sich dann das Ergebnis der Analyse anschauen. Klar, dass da noch viel mehr drin wäre, aber das war hier erst einmal nicht das Thema.

Wie man am Beispiel sieht, bietet DVB.NET (aus gutem Grund) keinen direkten Zugriff auf die Interna des DVB Empfangs an. Mit ein bißchen .NET Reflection im Full Trust Modus ist das aber alles schnell gemacht. Mal schauen, ob zukünftige Versionen da einen einfacheren Zugang erlauben.

Auf diesem Wege auch einen guten Rutsch ins nächste Jahr

Jochen

Protokoll des Sendersuchlaufs

Obwohl ich das eigentlich vor hatte gibt es in DVB.NET nur wenige Stellen, an denen die Standardmechanismen von .NET zur Protokollierung verwendet werden. Eine dieser Stellen ist die Aktualisierung der Quellen (Sendersuchlauf), sofern sie von dem Administrations & Konfigurationswerkzeug angestossen wird. Hier setzt der Algorithmus auf .NET Tracer. Die Einrichtung erfolgt über die Datei DVBNETAdmin.exe.config in etwa wie folgt (ich denke, man sieht am existierenden Inhalt, worum es geht):

...
<system.diagnostics>
<switches>
<add name="ConsumerTrace" value="0"/>
<add name="TunerTrace" value="4"/>
<add name="StreamOptimizerTrace" value="0"/>
<add name="ScannerTrace" value="4"/>
</switches>
<trace useGlobalLock="false" autoflush="true" indentsize="0">
<listeners>
<add
name="adminListener"
type="System.Diagnostics.TextWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
initializeData="c:\temp\adminlog.txt" />
</listeners>
</trace>
</system.diagnostics>
...

Die erzeugt Ausgabedatei enthält unter anderem folgende Informationen:

  • Untersuchte Quellgruppe (Transponder) und deren Anwahl
  • Inhalt der Netzwerkinformationen
  • Liste der Quellen (Sender) auf jeder Quellgruppe

Wie in letzter Zeit gelernt können diese Informationen sehr nützlich bei der Suche nach Fehlern beim Sendersuchlauf sein – seien es tatsächliche Fehler in DVB.NET oder Fehlkonfigurationen vor Ort.

Viel Spaß

Jochen