Nachdem ich nun meinen ersten PC auf Windows 10 aktualisiert habe musste ich feststellen, dass die mit Windows 7 noch verfügbaren Microsoft Video Codecs für MPEG-2 und H.264 nicht mehr zur Verfügung stehen – genau genommen ist das schon seit Windows 8 so, aber diese Version habe ich stillschweigend übersprungen. Das ist für mich etwas schade, da der DVB.NET / VCR.NET Viewer sehr pingelig bezüglich der verwendeten Codecs ist und mit den Microsoft Codecs ausgesprochen gut zurecht kam.
Ich habe daher die LAV Codecs installiert und grundsätzlich funktionieren die auch, nur leider ist der Ton deutlich sichtbar versetzt. Ich habe hier zwar etwas drehen können, aber mein mangelndes Wissen im Bereich BDA und DirectShow macht sich mal wieder sehr schmerzlich bemerkbar. Da ich nicht die Absicht habe, dieses Wissen zukünftig zu vertiefen, kann es sein, dass mit Windows 10 das endgültige Ende des Viewers gekommen ist. Ein kleiner Tweak hilft aber zumindest mir ein bisschen, so dass ich demnächst ein Update für den Viewer bereit stellen werden – eine wirkliche Weiterentwicklung der Version 4.3 wird es wie angekündigt nicht geben.
Doch nun zu einigen Details. Im Kern setzt DVB.NET zur Anzeige von Bild und Ton zwar auf BDA und DirectShow, verwendet allerdings keine der angebotenen Splitter. Vielmehr wird im Eingang ein TS (Transport Stream) selbst analysiert, was Teile des Codes nicht nur flexibler macht (es ist egal, ob der Strom von einer TV Karte, einer Datei oder über das Netzwerk ankommt) sondern tatsächlich auch den Code vereinheitlicht und vereinfacht.
Der Preis ist allerdings, dass Bild und Ton manuell in den BDA Graphen injiziert werden müssen. Aus nicht mehr ganz nachvollziehbaren Gründen (ja, das ist teilweise schon sehr lange her – sorry) versetzt DVB.NET die so genannte Stream Time der Tonspur um eine halbe Sekunde nach hinten. Die Idee war damals bei langsameren Rechnern wohl, dass der Video-Codec Zeit erhalten sollte, das Bild vorzubereiten, bevor dies synchron mit dem Ton angezeigt wird. Irgendwie kommt LAV aber mit dieser Manipulation wohl nicht klar.
Da dieser Parameter (AVDelay im Code) sowieso schon konfigurierbar war, hat der Viewer nun die Möglichkeit erhalten, diese Einstellung in einem gewissen Rahmen (+/- 2 Sekunden) vorzugeben. Mit einem Wert von 0 scheint es im Moment einigermaßen ordentlich zu funktionieren – perfekt ist es aber nicht! Ich werde das weiter beobachten, eventuell wird dieser Work-Around aber als Patch veröffentlicht – schauen wir einmal.
Bis bald
Jochen
P.S.: Ein Wert von 100 hat sich zumindest bei mir hier ganz gut bewährt und ich habe die Version Online gestellt.