VCR.NET 4 – alles geht einmal zu Ende…

Ich weiß zwar nicht, ob es überhaupt noch Anwender vom VCR.NET Recording Service gibt, aber für alle Fälle hier ein kleiner Nachruf.

Geboren wurde VCR.NET als Version 1 vor ziemlich genau 21 Jahren – zum 10ten Geburtstag hatte ich noch einen kleinen Glückwunsch geschrieben. Zwischenzeitlich hatte ich VCR.NET 4 auf drei Rechnern hier im Hausnetz installiert und auch noch regelmäßig genutzt. Gerade eben habe ich die Installation vom letzten der drei Rechner entfernt.

Insbesondere kann ich daher VCR.NET 4 nun auch nicht mehr weiter pflegen – na gut, die letzte Korrektur ist nun auch schon über ein Jahr her. Also heißt das denn, VCR.NET ist eingestellt, weil ich es nicht mehr brauche? Weit gefehlt! Ich nutze VCR.NET weiterhin in der Version 5.

Also warum all das hier? Nun VCR.NET 5 ist nicht wirklich ein Nachfolger von VCR.NET 4 und insbesondere nicht mehr unter Windows lauffähig – was mir sogar zugute kommt, so komisch es auch klingen mag. Der Unterschiehabed liegt auch nicht wirklich im VCR.NET Recording Service, der sich immer noch genau so präsentiert wie bisher.

VCR.NET besteht zum einen aus der Planung und Ausführung von Aufzeichnungen – da hat sich nicht wirklich etwas getan, alles bis auf die umfangreiche Modernisierung der Code Basis von .NET 4 auf .NET Code 8 wie gehabt. Der andere Teil ist aber leider der Zugriff auf lokale DVB-Geräte über mein DVB.NET 4 Paket. Hier wird es keine Erneuerung mehr geben, im Gegenteil: DVB.NET 5 bietet nun keinen Zugriff auf die Windows spezifische BDA Schnittstelle zum Zugriff auf DVB-Geräte mehr.

Aber hallo: was soll denn ein Aufzeichnungssystem, dass gar nicht auf irgendwelche DVB Quellen zugreifen kann. Wird nun IPTV verwendet? Nein, dem ist nicht so.

Angefangen hat es eigentlich damit, dass ich unseren privaten Rechnerpark aus verschieden Gründen auf Barebones (Shuttle) umgestellt habe. Damit war der Einsatz von PCI basierten DVB-Karten beendet – adieu Nexus, Nova et al. In diesem Schritt habe ich auf USB Geräte umgestellt – aktuell habe ich 5 Technotrend S2-4600 und eine S2-3600. Und dann kam der Windows 10 Update GAU – ich meine es war der Update 1809 also Ende 2018: der Treiber der S2-4600 produzierte einen BSOD und ich meine sogar dass das Problem nie gelöst worden ist. Ich habe dann zwar eine Weile auf den Update verzichtet, mir war aber klar, dass das keine Lösung auf Dauer sein konnte.

Da ich zu diesem Zeitpunkt beruflich schon viel mit Linux zu tun hatte habe ich mir einen kleinen DVB Proxy für Linux geschrieben, der über TCP/IP gesteuert auf DVB Geräte unter Linux zugreift und das Ergebnis als DVB Transport Stream an einen Client senden kann. Dafür ist dann in DVB.NET 4 ein Gerätetreiber entstanden, so dass ich meine fünf S2-4600 an einen kleinen Barebone angeschlossen und in VCR.NET 4 konfiguriert habe.

Das funktionierte eigentlich über Jahre ganz gut aber ich habe mich nun entschlossen, den nächsten Schritt zu gehen und vor allem die Code Basis wie erwähnt zu modernisieren. DVB.NET 5 kann aktuell nur noch diesen Linux Zugriff auf DVB Geräte nutzen – der meiste Windows spezifische Code wurde entfernt, tatsächlich auch mit einem weinenden Auge, da eine Menge cooler Code zum Zugriff auf die COM Schnittstellen von BDA enthalten war. VCR.NET 5 kann daher auch genau nur das: über TCP/IP auf das proprietäre TCP/IP Protokoll zugreifen – gut, da wäre Luft nach oben, aber so ist es Stand heute. Aktuell gibt es noch stärkere Einschränkungen, die für mich aber irrelevant sind: es wird nur der Empfang über Satellit (DVB-S und DVB-S2) unterstützt und eine Entschlüsselung ist nicht möglich.

Eigentlich gibt es nun auch keinen Grund mehr, VCR.NET 5 auf einem Windows Rechner laufen zu lassen. Ich werde dazu je nach Zeit bei Gelegenheit mal mehr dazu schreiben, hier nur in Kürze: VCR.NET 5 wird nicht mehr als Installationsprogramm für Windows sondern als docker Image bereit gestellt. Die Installation erfordert etwas Vorbereitung, da werde ich für (vermutlich äußerst wenige) Interessierte noch eine Beschreibung zur Verfügung stellen. Bei mir läuft VCR.NET 5 aber nun seit einigen Tage produktiv auf meinem DVB Barebone – Performance scheint kein großes Problem zu sein, auch wenn alle 5 Karten gleichzeitig im Betrieb sind.

Es gibt nun keine lokale Windows Installation mehr – kein VCR.NET Kontrollzentrum, kein Aufwecken für die Programmzeitschrift, … Der Zugriff erfolgt einfach über einen Web Browser, die Dateien werden über ein SMB Share für Windows bereit gestellt. Ein Demux mit ProjectX kann nach etwas Vorbereitung direkt aus der Browser Anwendung gestartet werden. Da nun alles über den Browser geht ist auch die Nutzung von Smartphone, Tablet oder SmartTV möglich – letzteres scheiterte bisher auf die notwendige Windows NTLM Autorisierung, auf die ich bei VCR.NET 5 erst einmal verzichtet habe.

Fazit: VCR.NET (4) ist tot, es lebe VCR.NET (5).

Sorry, falls es doch noch VCR.NET Windows Fans da draußen gibt, aber das Leben geht halt weiter. Aktuell gehe ich davon aus, dass mich VCR.NET 5ff noch eine Weile privat begleiten wird, aber wer weiß was die Zeit bringt!

Have Fun

Jochen

Nützlich lernen…

Ausgehen von einem echten Bedarf habe ich mal wieder ein kleines Lernprojekt gestartet.

Gebraucht wurde ein kleines Werkzeug (eigentlich nur unter Windows), das in einem Dateibaum identisches Dateien (konkret Bilder) erkennt und bei der Bereinigung von Duplikaten unterstützt (auch einen eventuell unerfahrenen Anwender).

In verschiedenen Varianten (oft kostenpflichtig, zumeist als umfangreiches All-In-One Tool) gibt es so etwas schon, daher um kein zu schlechtes Gewissen zu bekommen habe ich daraus dann direkt ein Lernprojekt gemacht. Zum Beispiel:

  • das soll unter Windows und Linux laufen, daher habe ich mir electron als Entwicklungsplattform ausgesucht.
  • electron mit WebPack, CSS Modulen u.a. hatte ich noch nie probiert.
  • Ein Deployment mit dem electron Builder ist auch ganz spannend.
  • uns sonstiger Kleinkram…

Herausgekommen ist dann das hier: https://github.com/JMS-1/file-organizer – befindet sich noch in der Testphase und könnte sicher auch etwas optische Aufbereitung (e.g. via semantic-ui) brauchen, aber das ist nicht das Ziel gewesen.

Viel Spaß

Jochen

Quo Vadis Window 10 – oder R.I.P. S2-4600

Wie ja bekannt ist eines meiner Hobbyprojekte der VCR.NET Recording Service unter Windows. Die Tatsache der intensiven Eigennutzung führt nun dazu, dass ich immer noch auf Windows 10 1803 bin. Warum das? Nun ich habe hier mehrere DVB-S2 Geräte (Technotrend S2-4600) via USB im Einsatz und alle Windows Versionen ab 1809 führen zu einem BSOD, wenn dieses Gerät im Einsatz ist. Leider bin ich da wohl nicht der Einzige und bis heute gibt es dafür keine akzeptable Lösung.

Neue USB Karten kommen erst mal nicht in Frage – wer weiß, welche überhaupt noch gehen und wann es diese auch trifft. Da ich schon seit längerem auf Ubuntu (Linux) als primäre Entwicklungsumgebung umgeschwenkt bin habe ich mir mal angeschaut, wie es da aussieht. Tatsächlich läuft die Karte dort unter gleichen Bedingungen, ich würde sogar sagen etwas besser als unter Windows.

Nun kam mir die Idee, eine an ein Ubuntu angeschlossene Karte in VCR.NET zu nutzen. Es gäbe hier viel zu erzählen ich fasse mich aber mal so kurz wie möglich und erläutere nur den aktuellen Stand.

Die erste Idee war die Anbindung war die Ansteuerung über SAT/IP – etwas was in VCR.NET / DVB.NET schon lange aussteht. Allerdings wäre die Implementierung in DVB.NET doch etwas aufwändiger und der Ubuntu Proxy den ich mir angeschaut habe (tvheadend) hat mich nicht gerade begeistert – der könnte lokale DVB Karten via SAT/IP im Netz anbieten. Ich habe mich daher für eine Minimallösung mit Lerneffekt entschieden – sprich proprietär aber mit etwas API Spielereien.

Für Ubuntu gibt es dazu ein kleines Tool (GIT) auf Basis der DVBv3 API – die alte Version der Linux DVB API passt sehr schön zu meinem DVB Einstiegsprojekt vor vielen Jahren: der TechnoTrend API für die Premium Line (Hauppauge Nexus). Das Tool stellt einen TCP Kanal zur Verfügung, über den man Remote eine Karte reservieren und steuern kann. Die angeforderten Nutzdaten (Streams) werden dann über diesen Kanal an den Aufrufer ermittelt. Zurzeit weil es einfacher war über ein proprietäres Protokoll, was ich aber aufgrund von potentiellen Datenübertragungsfehlern auf TS umstellen sollte – im Moment tut es als PoC aber erst mal.

Auf der anderen (DVB.NET / Windows) Seite gibt es dann einen neuen Provider, der bis auf die Art der Kommunikation quasi dem der Nexus entspricht – und der ist nicht einmal besonders umfangreich (GIT).

Ich gehe mit der Version jetzt erst mal in den privaten Test. Tatsächlich gibt es durchaus noch diverse Probleme esp. mit der Stabilität nach Sendersuchlauf und Programmzeitschrift, aber dazu ist ja so eine Testphase da. Immerhin funktionierte ein sauberes Aufzeichnen aller (12 glaube ich) Sender eines Transponders (VOX) parallel – etwa 32 MBit/s im Netzwerk, was aber bei 1 GBit/s Problem ist. Die CPU Last auf Ubuntu war mit unter 5% überschaubar – allerdings auf meinem kräftigeren Entwicklungssystem mit einem i7-8700, i.e. ca. 60% eines Kerns ausgelastet. Wenn das alles klappt sollen alle aktuellen Karten im Haus (5 an 4 Windows Rechnern – nur einer ist der meine) an einen einzigen Linux Rechner angeschlossen werden.

Immerhin: mal wieder C/C++ unter Linux gemacht (wirklich hässlich, ist ja auch schon weit über 20 Jahre her gewesen) und noch mal C# aufgefrischt (ja, da muss ich mich wirklich wieder einarbeiten) und dabei auch richtig über die Performance Visual Studio Pro geärgert – VSCode ist schon cool…

Soweit dazu, schauen wir mal

Jochen