## TCPServer / TCPSource

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

Фильтр позволяет передавать видео по сети. Можно подключать несколько клиентских приложений к одному серверу.

### Синтаксис

#### Сервер:

`TCPServer` (clip, int "port")
Запускает сервер на заданном порту (по умолчанию порт 22050).
Сервер остаётся запущен до тех пор, пока открыто приложение, открывшее этот скрипт (например, VirtualDub).
Пример:

    Colorbars(512, 256)
    TCPServer()

запускает сервер.

#### Клиент:

`TCPSource` (string hostname, int "port", string "compression")
Подключается к компьютеру с указанным адресов (например, IP-адресом) по указанному порту (по умолчанию 22050).

Compression позволяет задать алгоритм сжатия для передачи данных:

Вид сжатия | Описание
None | Без сжатия
LZO | Использует алгоритм LZO словарного сжатия. Достаточно быстр, но хорошо работает только на видео типа мультфильмов с большими однородными областями.
Huffman | Использует достаточно медленную реализацию алгоритма Хаффмана от Marcus Geelnard. Сжимает естественные изображения лучше LZO.
GZip | Использует алгоритм Gzip. Работает аналогично установке Huffman, но быстрее.

В нынешней версии по умолчанию используется алгоритм GZip. Чересстрочное видео сжимается хуже. Если скорость сети критична, можно использовать SeparateFields на серверной стороне.

Пример:

    TCPSource("127.0.0.1")
    Info()

Подключается к локальному компьютеру, если на нём запущен сервер.

### Примеры

Можно использовать для разделения цепочки фильтров по разным компьютерам:

    # Компьютер 1:
    AVISource
    Deinterlacer
    TCPServer

    # Компьютер 2:
    TCPSource
    Sharpener
    TCPServer

    # Компьютер 3:
    TCPSource
    # приложение-клиент -> видео кодек -> окончательный файл

### Замечания по применению

Если Вы добавили TCPServer, то Вы не можете больше добавлять фильтры в цепочку, или использовать выход от фильтра. Сервер выполняется в отдельной нити, но так как AviSynth не полностью безопасен по нитям (thread-safe), Вы не можете надежно выполнять несколько серверов. Следующее не должно быть использовано:

    AviSource("avi.avi")
    TCPServer(1001)
    TCPServer(1002) # Это НЕ хорошая идея

Так что основное правило - никогда больше одного TCPServer на скрипт.

Использование команд после TCPServer также является плохой идеей:

    AviSource("avi.avi")
    TCPServer(1001)
    AviSource("avi2.avi") # НЕ делайте так, это будет отменять сервер.

AviSynth детектирует, что выход TCPServer не используется, и убъет фильтр-Server. TCPServer должен всегда быть последним фильтром.

### Изменения

появился в v2.55

`$English Date: 2006/01/02 14:51:17 $
Русский перевод 18.05.2005 Eugene Vasiliev (eugvas@mccme.ru)
Обновление 13.01.2006 Fizick`