Archiv

Webdesign-Blog

17. Mai 2016

Nerd deluxe: Videotext von VHS auslesen – Teil 4

Im vierten und letzten Teil meiner Artikelserie „Videotext von VHS auslesen“ fahren wir endlich die Ernte für unsere Bemühungen ein: das VHS-Band wird digitalisiert und die gespeicherten Videotext-Daten programmtechnisch ausgelesen.

VHS-Kassette, Videotext auslesen

Wieder gehen wir schrittweise vor, jetzt sind es aber nur noch vier Schritte zum Ziel

Schritt 1: VHS digitalisieren

Aktivieren Sie erneut das Programm TVTime (ggf. Kanalsuche wiederholen) und stellen Sie sicher, dass die gewünschte Sendung läuft. Deaktivieren Sie auch ggf. wieder die Signalprüfung, diese schaltet sich gerne ungefragt ein. Anschließend starten wir den Digialisierungsvorgang („capture“) mit

$ cd ~/vhs-teletext
$ vbicat /dev/vbi0 > capture.vbi

Den Vorgang können Sie jederzeit mit Control+C abbrechen. Für den Anfang (oder um nur das Aufnahmedatum herauszufinden) reicht eine Minute Aufnahmedauer, später sollten Sie für gute Ergebnisse mindestens 15 Minuten aufzeichnen. Ab und zu kann es zu verlorenen Bildern („Frame-Drops“) kommen, dies ist normal.

Bei meinem Rechner erschien in seltenen Fällen eine unerwarteten Fehlermeldung, es konnte keine Aufzeichnung durchgeführt werden. Ein Neustart des Rechners erledigte dieses Problem, bei Linux kocht man halt auch nur mit Wasser.

 

Schritt 2: Umwandlung in T42

Das digitalisierte VHS-Material muss nun mit allen bereits beschriebenen Methoden ausgewertet werden. Wir starten den Vorgang mit

$ deconvolve capture.vbi > stream.t42

Es wird eine Datei stream.t42 erzeugt, die alle erkannten Videotext-Seiten enthält. Fragen Sie mich nicht, was T42 bedeutet, ich habe es nicht herausfinden können, der Autor schweigt diesbezüglich und Google gibt auch nichts passendes aus.

Funktioniert die CUDA-Unterstützung aus irgendwelchen Gründen nicht, gibt es eine entsprechende Meldung und der Hauptprozessor wird benutzt. Falls Sie aus Qualitätsgründen (siehe Teil 2) die CPU verwenden möchten, schreiben Sie

$ deconvolve capture.vbi --force-cpu > stream.t42

Während der Rechner arbeitet haben wir genug Zeit für einen Kaffee oder einen kleinen Imbiss.

Schritt 3: Seiten zusammenfassen

Im dritten Schritt fassen wir die vielen in stream.t42 vorhandenen Kopien der einzelnen Seiten zusammen, und zwar dergestalt, dass die richtigen Zeichen durch eine Wahrscheinlichkeitsbewertung (siehe Teil 1) ermittelt werden:

$ t42pipe stream.t42 -S > stream-verdichtet.t42

Sie werden sehen, die Datei „stream-verdichtet.t42″ ist deutlich kleiner als ihr Ursprung, die Erstellung geht auch relativ flott.

Schritt 4: HTML-Dateien erzeugen

Aus der für Menschen unlesbaren Datei „stream-verdichtet.t42″ machen wir im vierten Schritt anklickbare und im Browser sichtbare Dateien, um endlich auf den Videotext-Inhalt von VHS zugreifen zu können:

$ mkdir html
$ cp ~/vhs-teletext/misc/* ~/vhs-teletext/html/
$ t42html stream-verdichtet.t42 html

Damit haben wir nun die HTML-Dateien nebst den benötigten Schriftarten und einer CSS-Datei in einem kompakten Verzeichnis.

 
Videotext-Tafel aus 1988

Seiten ansehen

Es gibt drei Wege, sich das Ergebnis anzusehen: erstens können Sie einfach eine Datei im html-Verzeichnis doppelklicken und die Tafel im Browser betrachten. Wurden die Seitennummern richtig erkannt, kann man die anderen Tafeln über einen Klick auf die Seitennummern anwählen.

Dann gibt es einen interaktiven Betrachter, der sozusagen ein Videotext-Gerät simuliert. Dazu öffnen Sie ein spezielles Terminal, welches die Videotext-Schriftart verwendet und starten den Betrachter:

$ urxvt -fg white -bg black -fn teletext -geometry 41x25 +sb &
$ t42service stream-verdichtet.t42 | t42interactive

Die Seitennummern wählen Sie wie bei einer TV-Fernbedienung über den Nummernblock an. Nachteil: leider ist es mir bisher nicht gelungen, den Quellcode so zu ändern, dass unsere deutschen Umlaute korrekt angezeigt werden.

Die dritte Möglichkeit ist, eine spezielle Seite einzeln im Terminal anzuzeigen. Hier ein Beispiel für die Seite 100:

$ urxvt -fg white -bg black -fn teletext -geometry 41x25 +sb &
$ t42pipe stream-verdichtet.t42 -p 100

Dies eignet sich insbesondere, um schnell auf den Inhalt zugreifen zu können, da hierfür Schritt 4: HTML-Datei erzeugen nicht notwendig ist. Auch hier sind die Umlaute leider falsch.

Umrechnungsvorgang automatisieren

Um die Schritte 2 bis 4 nicht jedes mal von Hand durchführen zu müssen, bietet es sich an, diesen Vorgang zu automatisieren. Dazu legen Sie ein Shell-Skript in einem Editor an und machen dieses ausführbar.

Hier als Beispiel mein Skript „vhsdo“. Es wird mit einem Parameter („$1″) für den Namen eines Unterverzeichnisses aufgerufen, damit ich verschiedene Projekte auf der Festplatte verwalten kann:

if [ "$1" == "" ]
   then
      echo "Parameter fehlt"
   else
      echo "Order aufräumen"
      cd ~/vhs-teletext/$1
      rm -f stream.t42
      rm -f stream-verdichtet.t42
      rm -f -r html

      echo "Schritt 2: T42 auslesen"
      deconvolve capture.vbi --force-cpu > stream.t42

      echo "Schr itt 3: T42 verdichten"
      t42pipe stream.t42 -S > stream-verdichtet.t42

      echo "Schritt 4: HTML generieren"
      mkdir html
      cp ~/vhs-teletext/misc/* ~/vhs-teletext/$1/html/
      t42html stream-verdichtet.t42 html

      echo "Videotext ist fertig"
fi

Ein solches Skript kann einfach im Editor erstellt werden, mit dem Kommando

$ sudo chmod +x vhsdo

machen wir die Datei vhsdo ausführbar. Der Aufruf, damit alles in einem Unterverzeichnis namens „hexenschuss“ stattfindet, sieht so aus:

$ ./vhsdo hexenschuss

Natürlich muss sich die Aufnahmen capture.vbi aus Schritt 1 dann in diesem Verzeichnis befinden. Das Vorgehen ist gegenüber den Batch-Dateien von Windows etwas ungewohnt, aber es funktioniert gut.

 

Verschönerung

Mit der vom Autor erstellten CSS-Datei werden die Videotext-Tafeln einfach in die linke obere Ecke des Browserfensters geklatscht, auf großen Bildschirmen sieht das für meinen Geschmack nicht sonderlich gut aus.

Mit ein paar kleinen Modifikationen an der teletext.css lässt es sich aber erreichen, dass die Tafeln zentriert und optisch gefälliger dargestellt werden. Editieren Sie die Datei wiefolgt:

$ sudo nano ~/vhs-teletext/misc/teletext.css

Die erste Zeile wird wiefolgt geändert:

body { background:rgb(60,60,60); }

In der Eigenschaft der Klasse .subpage schreiben wir statt „border: solid black 10px;“ folgendes:

border-top: solid black 80px;
border-left: solid black 60px;
border-right: solid black 80px;

Den Code für die Zentrierung setzen wir ganz ans Ende der Datei:

pre { width:1060px; margin:auto; background-color:black; }
pre:after { content:'.'; clear:both; display:block; visibility:hidden; height:0px; }
html { height:100%; display:table; width:100%; }
body { display:table-cell; vertical-align:middle; }

 

Sendeschluss

Das war es fürs Erste, ich hoffe, Ihnen gelingt das Auslesen sogut wie mir. Falls ich neue Erkenntnisse gewinne, werde ich diese Artikelserie entsprechend aktualisieren.