Visionen vs. Realität, Teil II: Anstossen externer Programme

In VCR.NET 3.1 wird es die Möglichkeit geben, bei bestimmten Vorgängen zusätzlich externe Programme aufzurufen (Aufzeichnung beginnt / endet) oder Vorgänge ganz durch externe Programme zu ersetzen (Übergang in den Schlafzustand). Diese Erweiterung ist erst einmal experimentell. Eine richtige Lösung könnte noch weiter gehen, wie ich gleich an einem Beispiel erläutern möchte (im Forum gibt es dazu eine kurze Diskussion an Hand eines anderen Beispiels). Für 3.1 wird es bei dem einfachen Mechanismus bleiben, der auf der (Beta) Homepage vom VCR.NET Recording Service beschrieben ist. Ich plane allerdings, dass zumindest der Schlafzustand mit dem Ende der externen Programme synchronisiert wird – es wäre ja echt ärgerlich, wenn man gerade ein Demux angestossen hat und VCR.NET in den Schlafzustand übergeht: das kann nicht Sinn der Sache sein.

Ich hätte es am liebsten (das entspricht nicht ganz der Wahrheit, dazu gleich), wenn nach einer Aufzeichnung direkt ein Demux (ProjectX / PVAStrumento) losläuft, da ich alle Aufzeichnungen nachbearbeite. Die Nutzung der aktuellen 3.1 Beta Erweiterung hat einige gravierende Nachteile. Da ist zum einen die Synchronisation mit dem Schlafzustand, das hoffe ich noch in den Griff zu bekommen.

Dann wäre da noch die Möglichkeit, dass sofort eine weitere Aufzeichnung startet. Durch den gleichzeitig lesenden und schreibenen Zugriff auf die Festplatte könnte die Aufzeichnung durch den parallelen Demux Vorgang gestört werden. Eine mögliche Implmentierung in einer zukünftigen VCR.NET Version könnte etwa das externe Programm als eine Art Pseudo-Aufzeichnung einplanen, wobei die Länge empirisch ermittelt wird (ProjectX : xx Sekunden pro 1 GByte Aufzeichnung). VCR.NET könnte dann erkennen, dass eine folgende Aufzeichnung eventuell behindert wird und die Nachbearbeitung nach hinten schieben. Bei Sonderaufzeichnungen (Programmzeitschrift / Sendersuchlauf) wäre dann keine Nachbearbeitung notwendig.

Schön wäre auch zumindest eine Konfiguration pro Aufzeichnung, ob eine bestimmte Nachbearbeitung ausgeführt werden soll oder nicht. Vielleicht möchte ich bei einer 24 Stunden Aufzeichnung von 3SAT Konzerten die Nachbearbeitung doch lieber nach und nach durchführen. Oder ich weiß, dass das Demux bestimmter Sender wegen der hohen Bitrate oder der Vielzahl der Tonspuren besonders lange dauert und möchte die geschätzte Laufzeit überschreiben und und und.

Aber im Kern ist die Vision: pro Aufzeichnung können (wie auch immer VCR.NET bekannt gemachte, aber sicher durch den Anwender erweiterbare) Nachbearbeitungen definiert werden – für alle gibt es auch einen Default an/aus. Die Laufzeit wird dann abhängig von den Parametern (ausser Größe dürfte da nicht viel sein) der Aufzeichnung geschätzt und entsprechend sofort oder verzögert ausgeführt (Pech, wenn die Schätzung zu knapp gehalten ist, das muss natürlich geeignet gemeldet werden). Lustig werden dann Mehrkanalaufzeichnungen et al…

Ach ja, wie versprochen meine wirkliche Demux Vision, die aber für die 3.1 ziemlich sicher nix mehr wird: VCR.NET fungiert als FTP Server und beim Starten der Aufzeichung wird ProjectX parallel auf der Aufzeichnungsdatei gestartet. VCR.NET gauckelt dabei eine sehr große Datei vor, so dass ProjectX zumindest die TS Analyse und den Video Demux während der Aufzeichnung erledigt (die Systembelastung sollte minimal sein, ich habe hier normalerweise 300+ Frames pro Sekunde Demux, als mindestens einen Faktor 10 schnelleren Demux als Aufzeichnung). Ist die Demux Platte dann noch eine andere als die Aufzeichnungsplatte, sind alle folgenden Schritte (Ton, Videotext) in der Laufzeit eigentlich egal, da sie folgende Aufzeichnungen nicht mehr belasten können. Kurz nach dem Ende der Aufzeichnung steht dann alles zum Schneiden und Brennen bereit!

So long

Jochen

Visionen vs. Realität, Teil I: Der Sendersuchlauf

Für den Sendersuchlauf hatte ich mir einige Dinge zur Nachbearbeitung überlegt, die ich aber nur zum Teil bereits in DVB.NET / VCR.NET 3.1 realisieren werde – den Rest spare ich mir dann für die oder eine der nächsten Versionen auf, damit es bald mal wieder einen Release Stand gibt. Ich hoffe aber, dass die vorhandene Implementierung eine gute Basis darstellen und für die wichtigsten Probleme eine ausreichende Lösung bietet.

Die Grundidee war, dass nach einem Sendersuchlauf die neue Senderliste nicht nur einfach das Ergebnis des Suchlaufs ist, sondern eine bereits modifizierte Senderliste adaptieren kann. Bereits mit der aktuellen Version 3.0 gab es einen so genannten Aktualisierungsmodus, der aber nur dafür sorgte, dass Sender, die nur zeitweise empfangen wurden, nicht verloren gehen. So sendet etwa BBC THREE tagsüber nicht, die dann freien Datenströme (PID) für Bild und Ton werden vom Kinderkanal CBBC genutzt, der seinerseits nichts nachts sendet. Ein Suchlauf tagsüber und einer Nachts liefert (diesbezüglich) eine vollständige Senderliste.

Die Implementierung in den 3.1er Versionen wird diesen Mechanismus erweitern. Sie wird allerdings nicht die (bereits vorgesehene) Möglichkeit bieten, Sender aus dem Sendersuchlauf auszublenden, etwa alle verschlüsselten Sender. Damit könnte zum Beispiel die Senderliste (bei mir etwa 2 MB für Astra 1 und Astra 2) deutlich im Umfang reduziert werden. Im Zusammenspiel mit VCR.NET sind allerdings keine unmittelbaren Vorteile zu erwarten, da der Web Client ja bereits einige Filtermöglichkeiten bietet, mit denen die Senderliste zur Auswahl reduziert werden kann. Auch die Konfiguration der Nachbearbeitung (dazu werde ich hoffentlich in Kürze mit der Freigabe der nächsten Beta von DVB.NET 3.1 eine kurze Dokumentation auf der DVB.NET Homepage anbieten können) ist noch wesentlich rudimentärer, als ich es mir gewünscht habe.

Aber mal schauen, vielleicht reicht es für den täglichen Gebrauch ja – richtig lästig ist im Moment nur eine vollständige Aktualisierung der Senderliste, aber das soll hier nicht Thema sein. Vielmehr am Ende kurz einige Beispiele, von dem, was bei mir hier lokal schon möglich ist.

Die Konfiguration arbeitet immer auf einer vorhandenen Senderliste. Man kann für jeden Sender individuell einstellen, welche Detaildaten nach einem Sendersuchlauf erhalten bleiben sollen. Der gesamte Mechanismus greift grundsätzlich nur im erwähnten Aktualisierungsmodus. Wird der Sender gar nicht gefunden, bleibt alles wie gehabt. Wird er gefunden, so würde er in der Version 3.0 gänzlich durch die neu gefundenen Daten ersetzt. Mit dem neuen Mechanismus kann man nun:

  • etwa für KiKa den VideoText PID, der nur tagsüber verwendet wird, fixieren
  • etwa für KiKa den PID und die Sprache der Tonspur fixieren (die Sprache ist nachts undefiniert)
  • etwa für PREMIERE sicherstellen, dass immer beide Tonspuren vorhanden sind
  • die Sprache einer Tonspur festlegen, wenn diese in den SI Tabellen ‘falsch’ gemeldet wird
  • den Namen eines Sender ändern und fixieren

Naja, so viel mehr Detailinformationen zu einem Sender verwaltet DVB.NET (noch?) nicht. Zusätzlich wird es möglich sein, einen Sender als Regionalsender (konkret: mit variablen PIDs) zu kennzeichnen. Zumindet VCR.NET 3.1 soll die Fähigkeit erhalten, eine solche Veränderung zu erkennen und die Aufzeichnung entsprechend mit zu fahren. Mal schauen…

So, dass soll erst mal reichen

Jochen