TCPServer / TCPSource

TCPServer (clip, int "port")
TCPSource (string hostname, int "port", string "compression")

Dieser Filter ermöglicht es, Clips über das Netzwerk senden. Du kannst mehrere Clients mit dem gleichen Rechner verbinden.

Syntax

Server:

TCPServer (clip, int "port")

Dies wird einen Server-Thread auf dem aktuellen Rechner einrichten, der auf dem angegebenen Port läuft. Standard Port ist 22050.
Du bekommst die Ausgabe in der Anwendung, mit der du das Skript öffnest, aber der Server wird nur so lange ausgeführt, wie diese Anwendung (zum Beispiel Virtualdub) offen ist.

Beispiel:

Colorbars(512, 256)
TCPServer()

startet einen TCP Server.

Client:

TCPSource (string hostname, int "port", string "compression")

Dies wird dich mit einer Maschine mit der angegebenen Adresse (IP-Nummer zum Beispiel) verbinden zu einem Server, der auf dem angegebenen Port läuft. Standard Port ist auch hier 22050.

Mit compression kannst du die Komprimierung für das Video wählen:

Compression Typ Beschreibung
None Keine Kompression. Schnellste Option - das Video wird nicht komprimiert, bevor es übers Netz gesendet wird.
LZO Berwendet LZO Wörterbuchkompression. Ziemlich schnell, aber komprimiert nur auf künstlichen Quellen gut, wie Zeichentrick, Anime mit sehr gleichmäßigen Flächen.
Huffman Verwendet eine eher langsame Huffman Routine von Marcus Geelnard. Komprimiert natürlcihes Video besser als LZO.
GZip Vermendet eine Gzip Huffman Kompression. Arbeitet so ähnlich wie die Huffman Einstellung, aber wirkt schneller.

Wenn keine Kompression angegeb wird, wird derzeit GZip standardmäßig verwendet. Interlaced Material komprimiert schlechter als non-interlaced wegen Abwärtsdeltaencoding. Wenn die Netzwerk-Geschwindigkeit ein Problem darstellt, solltest du vielleicht  SeparateFields verwenden.

Beispiel:

TCPSource("127.0.0.1")
Info()

Dies verbindet sich zu einer lokale Maschine, falls ein Server läuft.

Beispiele

Hiermit kannst du jeden oder einige Filter auf einem anderen PC laufen lassen. Zum Beispiel:

# Clustermember 1:
AVISource
Deinterlacer
TCPServer

# Clustermember 2:
TCPSource
Sharpener
TCPServer

# Clustermember 3:
TCPSource
# client app -> video codec -> final file

Hinweise für die Handhabung

Sobald du einen TCPServer hinzugefügt hast, kannst du keine weiteren Filter der Kette hinzufügen, oder die Ausgabe aus dem Filter weiterverwenden. Der Server läuft in einem separaten Thread, aber da AviSynth nicht vollständig Thread-sicher ist, kannst du nicht zuverlässig mehrere Serverlaufen lassen. Dies sollte nicht verwendet werden:

AviSource("avi.avi")
TCPServer(1001)
TCPServer(1002) # Das ist KEINE gute Idee

Daher ist die Grundregel: nie mehr als ein TCPServer pro Script.

Es wäre auch eine schlechte Idee, nach dem TCPServer noch Anweisungen zu setzen:

AviSource("avi.avi")
TCPServer(1001)
AviSource("avi2.avi") # Tu das nicht. Das würde den Server abschalten.

Wenn AviSynth entdeckt, dass die Ausgabe des TCPServer nicht verwendet wird, killt es den Server Filter. TCPServer muss immer der letzte Filter sein.

Changelog

v2.55 Initial Release

$Date: 2006/01/02 14:51:17 $