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