CFA LogoCFA Logo Computer
Новости Статьи Магазин Драйвера Контакты
Новости
RSS канал новостей
В конце марта компания ASRock анонсировала фирменную линейку графических ускорителей Phantom Gaming. ...
Компания Huawei продолжает заниматься расширением фирменной линейки смартфонов Y Series. Очередное ...
Компания Antec в своем очередном пресс-релизе анонсировала поставки фирменной серии блоков питания ...
Компания Thermalright отчиталась о готовности нового высокопроизводительного процессорного кулера ...
Компания Biostar сообщает в официальном пресс-релизе о готовности флагманской материнской платы ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2003 ГОД

Сетевое визионерство

Сергей А.ЯРЕМЧУК

Представьте себе ситуацию: вам надо показать какой-нибудь видеоматериал большой группе людей, например сотрудникам по предприятию. Решений здесь несколько. Проще всего, наверное, открыть видеофайл на всеобщее обозрение, а на остальных компьютерах просматривать его через видеопроигрыватель. У такого способа есть ряд достоинств: во-первых, не надо никакого специального ПО, во-вторых, можно не заботиться о совместимости с ОС клиентов, в-третьих, файл можно просмотреть в любое время. Однако при большом количестве подключений сервер или канал могут попросту загнуться. Трансляция видеопотоков позволяет избежать этой неприятной ситуации.

В Интернете хватает ПО для трансляции видео. В данной статье речь пойдет о программе VideoLAN (http://www.videolan.org), позволяющей транслировать мультимедиа-потоки из видеофайлов в формате MPEG-1, MPEG-2, MPEG-4 и DivX, цифровых видео и DVD-дисков, цифровых спутниковых и телевизионных каналов, а также «живых» видеотрансляций, полученных от web-камер с высокой пропускной способностью, — для отдельного компьютера, небольшой сети и Интернета с поддержкой протоколов IPv4 и IPv6. Для трансляции MPEG-4 потока сеть должна обеспечивать от 0.5 до 4 Мбит/с, для цифрового потока, идущего со спутникового или телевизионного канала, — от 3 до 4 Мбит/с, для MPEG-2 потока DVD — от 6 до 9 Мбит/с. VideoLAN может работать на компьютерах под управлением различных версий — GNU/Linux, BSD-систем, Windows всех версий, MacOS X, BeOS, Solaris, QNX. Программа распространяется по лицензии GPL, т.е. совершенно бесплатно, вместе с исходными текстами. Проект начинался французскими студентами, а теперь поддерживается разработчиками из 20 стран.

В состав VideoLAN входит два приложения:

VLS — сервер, транслирующий потоки из файлов;

VLC — клиент, транслирующий потоки и способный получать их и декодировать. Также является универсальным видеопроигрывателем локальных файлов, поддерживающим большинство форматов.

Схема

Возможно добавление информационной службы канала для VLS-сервера (VLC анонсирует себя сам), основанной на стандарте SAP/SDP. Небольшой сервер SAP объявляет анонсы относительно транслируемых по сети программ, а VLC получают эти сообщения и автоматически добавляют объявленные программы в свой плейлист. Для работы предлагается сервер SAP под Linux и MacOS X. C VLS можно работать только с командной строкой и telnet (при удаленном доступе). VLC же имеет понятный графический интерфейс (точнее, интерфейсы — организованные так, чтобы быть в ладах со «своей» ОС), позволяющий настроить большинство параметров — но не забыта и командная строка, позволяющая произвести настройку максимально тонко. Модульная структура обеспечивает поддержку новых форматов и функций без необходимости серьезно перекраивать программу. Для организации одного потока достаточно компьютера класса Pentium 100 с 32 Mб ОЗУ и жесткого диска сколько не жалко.

Установка

Более подробно будем рассматривать установку/запуск сервера и клиента на Linux, как несколько более сложную, а также программы, идущие в комплекте с VLC. Под Windows установка происходит так же, как и для большинства программ написанных под эту ОС, конфигурация практически аналогична Linux'овской, а установка и настройка VLC и VLS очень похожи (об отличиях серверов VLS и VLC можно прочитать на страницах Videolan-faq и http://www.videolan.org/streaming/features.html). Хоть впрочем, проблем как с серверной, так и с клиентской стороны у меня было чуть больше с Windows-вариантом программы.

Если используется rpm-based дистрибутив, скачиваем пакеты (для RedHat практически все библиотеки имеются на дисках с дистрибутивом, и наверняка они у вас уже установлены), ссылки на которые можно найти на странице http://www.videolan.org/vlc/download-redhat.html. Далее помещаем все в одну папку, заходим в нее и вводим что-то наподобие:

Смотрим, на отсутствие каких пакетов ругается программа, доустанавливаем и повторяем попытку.

В моем случае после запуска в дистрибутиве Vector-Linux программа ругалась на несоответствие версии библиотеки glibc (ftp://ftp.gnu.org/gnu/glibc) — у меня стояла более ранняя версия 2.2.5, а требовалась версия старше 2.3. В таком случае можно собрать все самому из исходников, этот же вариант подходит и для других систем, для которых нет прекомпилированных пакетов (для *BSD, например); в откомпилированных же пакетах может отсутствовать поддержка необходимого модуля или, наоборот, мешать что-нибудь лишнее. Для установки могут понадобиться еще несколько дополнительных библиотек; если же, например, не нужна поддержка DVD, ее можно отключить, введя на стадии конфигурирования VLC опцию –disable-dvd. Так же можно поступить и с остальными ненужными опциями.

Итак, нам понадобятся (ссылки можно найти на http://www.videolan.org/vlc/download-sources.html):

libdvdcss — если понадобится читать зашифрованные DVD-диски (кстати, модуль не обращает внимание на зоны);

libdvdplay — если нужно меню навигации DVD-дисков;

libdvbpsi — чтобы читать TS/DVB-потоки видео со спутников или цифрового телевидения;

a52dec — при необходимости декодировать звук в формате AC3 (A52), принятом в DVD;

ffmpeg, libmad и faad2 — для чтения файлов MPEG 4/DivX;

libogg и libvorbis — для поддержки звукового формата Ogg Vorbis;

lirc — если хочется управлять всем этим с пульта ДУ (пример конфигурационного файла можно найти в doc/lirc/example.lircrc);

Каждую библиотеку распаковываем:

Заходим внутрь образовавшегося каталога и конфигурируем (в общем случае без дополнительных опций):

И наконец, стандартные make и make install.

С VLC ситуация аналогична. Скачиваем с http://www.videolan.org/vlc/download-sources.html, распаковываем и для ознакомления с опциями конфигурирования вводим ./configure –help, особое внимание обращаем на те, напротив которых стоит default disabled. По сравнению с версией 5, количество опций значительно увеличилось. Определяем ненужные, конфигурируем. Например, так (естественно, должны быть установлены и соответствующие библиотеки с файлами заголовков):

Т.е. программа устанавливается в каталог /usr/local. Принудительно включаем поддержку Gnome и KDE, устройств Video4Linux (TV-тюнеры, видеозахват, web-камеры), звукового сервера KDE —Arts, звуковых драйверов ALSA (Advanced Linux Sound Architecture), библиотек QT и FAAD, а также плагина для web-браузера Mozilla и поддержку скинов. Опять же, после окончания процесса конфигурирования — традиционные make и make install.

Кстати, в архиве есть файлы для построения rpm-пакетов (ввести rpm -ba vlc.spec), для Debian (dpkg-buildpackage -rfakeroot -us -uc) и ebuild-файл для Gentoo, что уже делает честь разработчикам. Все, с установкой покончено, запускаем.

Работаем

Запустить VLC во всех перечисленных выше ОС можно как из меню, в котором встраивается ярлык программы (в Linux — только Gnome и KDE), так и из консоли, введя vlc (в Windows придется вводить полный путь к экзешнику). В результате перед нами предстанет главное окно программы. Теперь можно просмотреть локальный видеофайл, создать поток из перечисленных выше источников, в том числе и с контролем на локальном компьютере, и подключиться к имеющемуся потоку. Разберем по порядку.

Просмотр файла

В командной строке вводим:

И наслаждаемся полученным результатом. Программа сама подберет необходимый декодер. При неудаче его можно задать вручную при запуске.

Для DVD или VCD запускаем с такими параметрами:

Это для Windows, где g — ваше DVD-устройство, параметры после @ необязательны, они означают номер дорожки и пр.:

А это для Linux — просмотр видеодиска

При помощи системы меню это еще проще: открыть меню File и выбрать нужный пункт.

Создание и просмотр потока

VLC (как и VLS) может создавать два вида видеопотока: unicast и multicast (возможно применение сразу двух вариантов одновременно). В первом случае видеофайл разбивается на пакеты и отправляются по индивидуальному IP-адресу, указанному при запуске; принимающая сторона просто считывает данные, поступающие на открытый для приема UDP-порт (по умолчанию программой используется 1234; использовать TCP-пакеты, подтверждающие прием, в данном случае смысла особого нет — это только увеличит нагрузку на канал). Во втором случае сервер транслирует передачу на специальный групповой IP-адрес, с которого и считывают информацию многочисленные клиенты. Для создания потока вводим такую команду:

где videofile.avi — транслируемый видофайл, udp://192.168.0.42 — unicast IP-адрес (имя DNS) отдельного компьютера или multicast IP-адрес для общесетевой трансляции, ttl означает «Time To Live», т.е. время жизни пакета: каждый маршрутизатор уменьшает его значение на единицу, и когда ttl становится равным 0, пакет уничтожается. Таким образом, установив его значение в 1, мы не допустим попадания трансляции в глобальную сеть. Можно отправить в сеть и содержимое DVD-диска:

Для трансляции DVD или VCD под Unix потребуется право на запись в /dev/dvd (/dev/cdrom); для этого включите пользователя, от имени которого запускается сервер в группу cdrom (если нет, создайте), или при трудностях с предыдущим пунктом введите просто:

Аналогичным образом можно транслироватьсигнал и с других источников.

Подключаемся к unicast-потоку таким образом:

В случае другого порта, отличного от «умолчаемого», указываем и его.

При multicast добавляется еще и IP-адрес.

Если с unicast все заработало сразу и без особых проблем, то вот с multicast вышла небольшая заминка. Дело в том, что в документации найти вразумительное объяснение, что это за адрес такой, удалось не сразу. Логично было бы поначалу предположить, что это IP-адрес самого компьютера, используемого в качестве сервера. Но подобные установки успеха не возымели, да и в таком случае пришлось бы клиентам подключаться к серверу, что сразу ставит ограничение на их количество, да и понятие трансляции в таком случае приобретает немного иной смысл. Сканирование серверных портов утилитой nmap огорчило — нужный, 1234-й, открыт не был. Следующей идеей было транслировать на незанятый в сети IР-адрес — опять неудача. Но на этот раз параллельно, чтобы видеть, что происходит в сети, я запустил утилиту tcpdump:

Результат немного озадачил. Сервер пытался при помощи протокола ARP (Addres Resolution Protocol, протокол разрешения адреса) разобраться, что это за компьютер такой с IP-адресом 192.168.0.223, а сам в этот момент непринужденно слал информацию по протоколу UDP в адрес 224.2.127.254, порт 9875. Ну, думаю, поймал наконец мелкософт на горячем (сервер тогда испытывался под Windows). Пришлось RTFM'ить, что это за адрес. Оказалось все просто: диапазон адресов от 224.0.0.0 до 239.255.255.255 специально забронирован для широковещательных передач. Поэтому для multicast выбираем любой понравившийся из этого диапазона и настраиваем на него как сервер, так и клиентов. И кстати, приведенный выше адрес зарезервирован по умолчанию для службы анонсов SAP, автоматически добавляющей трансляции в плейлист. Можно воспользоваться для трансляции и стандартным для любой сети адресом, заканчивающимся на 255, также отведенным под широковещательные пакеты, но в большой сети это может помешать нормальной работе некоторых служб, плюс ко всему такие пакеты удаляются маршрутизаторами автоматически, а значит, в Интернет они не попадут, как бы вы этого не хотели.

В меню поток можно организовать, открыв нужный источник при помощи, например, File > Open File; далее через Browse выбираем нужный файл, на этой же странице внизу ставим флажок напротив Stream Output и на появившейся странице либо вручную забиваем нужные параметры в строке Destination Target вверху страницы, либо (что легче) выбираем их из менюшек, активировав Play Locally; здесь же можно и просматривать, то что уходит в сеть. А для приема открываем File > Open Network Stream и выбираем нужные параметры (полученный поток можно тут же перетранслировать на другой адрес).

А теперь, чтобы вы представляли, на что способна эта утилита, кратко пробегусь по advanced-возможностям VLC.

Продвинутые возможности

Добавив в строку запуска параметр –ipv6, можно использовать протокол IРv6, хотя на данный момент такая революция возможна разве что в отдельно взятой сети, но такой задел на будущее по крайней мере разумен. Следующая очень полезная в хозяйстве вещь —transcoding. При этом исходный файл на лету может перекодироваться в любой из поддерживаемых форматов и затем уже отправляться в странствие или сохраняться на жестком диске (опция File во вкладке Stream Output). Активировав пункты Audio и Video codec в поле Transcoding Options, можно установить кодек, битрейт и количество аудиоканалов. В командной строке подключаем все при помощи опции transcode (если нравятся такие приятные на вид конструкции):

Т.е. получаем очень неплохую и к тому же универсальную программу грабления видеодисков и захвата видео. При помощи модуля duplicate можно разделить входящий поток на два и затем каждый обработать по своему усмотрению.

При необходимости можно использовать и http-streaming, когда клиенты подключаются почти к вашему компьютеру как к обычному web-серверу, только в ответ на запрос получают не текстовый файл, а видеоданные. Сервер в таком случае запускается так.

Теперь, подключившись через клиент VLC, получаем информацию:

Кстати, протестировать сервер можно и при помощи обычного браузера — если на экран будет выводиться мусор, значит, все работает. Все хорошо, но пользователю иногда не очень нравится довольствоваться пасивным созерцанием, а хочется самому запустить нужный файл, останавливать просмотр, перематывать неинтересные участки, а с потоковым видео такой вариант не пройдет. И эта возможность реализована в VideoLAN, называется она Video On Demand (VOD, видео по требованию). Для его реализации запускается Web-сервер (например Apache), в один из каталогов которого кладется нужный видеофайл. При помощи клиента VLC подключаемся к этому серверу и запускаем файл на просмотр.

Напомню, что видеопроигрываетель xine (http://xine.sourceforge.net) имеет опцию MRL (media resource locator), позволяющую передать ему на проигрывание любой файл, находящийся на http-сервере (и не только). Но надо помнить, что такой подход здорово нагружает канал.

И напоследок. VLC совсем недавно получил поддержку скинов, пока доступную только под Windows (устойчиво работает на Windows 2000/XP ) и X11-based OSes пока только в Linux. Изменить текущий скин, который можно загрузить с сайта из меню (View > Add Interface >skins) или при запуске программы. Для Windows:

Многие параметры, чтобы не набивать всякий раз, можно прописать в конфигурационном файле. Для Linux/Unix находится в $(HOME)/.vlc/vlcrc. Для Windows 95/98/ ME — в C:\Windows\Application Data\vlc\vlcrc, а в Windows XP/2000: C:\Documents and Settings\username\Application Data\vlc\vlcrc.

Мне приятно описывать программы, функциональность которых не намного шире отведенного в журнале места. Ответы на все вопросы о возможностях программ проекта VideoLAN можно найти в документации, которой на сайте более чем достаточно.

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы или вычислите пример: *
captcha
Обновить





Хостинг на серверах в Украине, США и Германии. © sector.biz.ua 2006-2015 design by Vadim Popov