--- title: TelnetHasciicam kind: wikiarchive ---

## Hasciicam via Telnet

Mit der Software Hasciicam lassen sich Videoaufnahmen in ASCII-Art (live) darstellen.

Hier ein kurzer Abriss, wie einfach man unter Linux mit wenigen Befehlen eine Live-Ascii-Cam für Telnet-Clients anbieten kann.

Benötigte Software:
Hasciicam, netcat

### 1. Schritt:

Hasciicam mit den richtigen Optionen starten.
> hasciicam -d /dev/video0 -i 1 -n pal -m text -s 79x24 -r 1

-d /dev/video0 # Das Video-Device angegeben

-i 1 # Der zu verwendente Input-Channel der Videokarte

-n pal # Die Videonorm (pal, ntsc, ...)

-m text # Den Textmode aktivieren (speichert ASCII-Art in Datei hasciicam.asc)

-s 79x24 # Die Ausgabegröße (Breite x Höhe) angeben. 79x24 ist geeignet für die Ausgabe auf Telnet-Clients.

-r 1 # Der Refresh-Intervall in Sekunden

(optional ausserdem: -f user@ftpserver.de:/directory Die ASCII-Ausgabedatei wird auf einen Ftp-Server hochgeschoben)

Anmerkung: Um hasciicam überhaupt erst mal zum laufen zu bringen, sollte man vorher das richtige Video Device und andere Optionen im "live"-Modus testen und die benötigten Optionen auf obiges Beispiel übertragen:
> hasciicam -d /dev/video0 -m live -i 1 -n pal

### 2. Schritt

Ein kleines Perl-Script (cam.pl) stellt einen ASCII-Feed für die Darstellung in Telnet Clients bereit. (Könnte man genauso gut als Shell-Script schreiben.)

Dieses Script als cam.pl speichern:

    #!/usr/bin/perl

    ### Einige Telnet vt100 Steuerkommandos definieren
    # "ESC [2J" ist vt100 Formfeed und löscht den Telnet-Bildschirm
    my $formfeed = chr(27)."[2J";
    # "ESC [H" bringt Cursor auf Position (1:1)
    my $cursor_pos = chr(27)."[H";
    # Hintergrund schwarz, Text grün
    my $colors = chr(27)."[40m".chr(27)."[32m";

    # Alles was wir auf STDOUT ausgeben, wird an den Telnet-Client geschickt werden...

    # Das Farbkommando schicken
    print "$colors";

    #Endlosschleife (Abbruch mit <CTRL>-c)
    while(1) {
            #Telnet-Bildschirm löschen und Cursor auf 1:1 repositionieren
            print "$formfeed$cursor_pos";

            #Die ASCII-Art ausgeben
            system("cat",  "hasciicam.asc");

            #Kurz warten
            sleep 1;
    }

    exit 1;

### 3. Schritt

Den mit cam.pl generierten ASCII-Feed als Livefeed für Telnet Clients anbieten. Dazu bieten wir mit dem Programm netcat die Ausgabe von cam.pl auf einem TCP-Socket an:

> nc -l -p 9999 -e cam.pl

-l # Sorgt dafür das netcat im Server-Modus auf eingehende Verbindungen "listened"

-p 9999 # Gibt den Port an, auf dem nach Verbindungsanfragen gelauscht wird. (beliebig aber > 1024)

-e cam.pl # Startet cam.pl und leitet dessen Ausgabe auf einen verbundenen Telnet-Client um.

### 4. Schritt

Zuerst den Telnet-Client mit der Umgebungsvariablen TERM in den vt100-Kompatibilitätsmodus schicken.

> TERM=vt100; export TERM

Und nun Telnet starten

> telnet 127.0.0.1 9999

127.0.0.1 # Die IP-Adresse des Cam-Servers.

9999 # Der Port des Cam-Servers

(Anmerkung: Das Fenster des Telnet-Clients sollte für eine korrekte Darstellung des Videofeeds auf eine Größe von 79x24 Zeichen gebracht werden.)

### 5. Schritt

Sich an der Spielerei erfreuen.

(Wenn man den Videofeed für Freunde bereitstellen will, muss gegebenenfalls natürlich die Firewall auf dem entsprechenden Port geöffnet werden.)

-- DanielWimpff - 27 Sep 2004