Установка VideoLAN

4

Когда возникает необходимость одновременного просмотра видео большим количеством пользователей, можно прийти к различным вариантам решения. Самым простым будет открыть доступ к видеофайлу, остальные пользователи будут смотреть через видеопроигрыватель. Достоинств данного метода три, не требуется никакого специального программного обеспечения, независимость от операционной системы со стороны клиента, а сам файл можно просмотреть в любое время. Недостатков же не так много по количеству, зато вес их перетягивает все остальное. Например “живое” видео, полученное с web-камер или со спутникового ТВ таким методом не посмотришь. Сервер и канал при большом количестве подключений будет перегружен. Выход — трансляция видеопотоков. Чем сейчас и займемся.

Для этих целей будем использовать VideoLAN http://www.videolan.org/ проект, начатый французскими студентами, а теперь поддерживаемый разработчиками более чем с 20 стран. Обладает всеми необходимыми нам возможностями при простоте настройки. С его помощью легко можно организовать трансляцию мультимедиапотоков с различных источников: видеофайлов формата MPEG-1, MPEG-2, MPEG-4 и DivX, цифровых видео и DVD-дисков, цифровых  спутниковых и телевизионных каналов и “живых” видеотрансляций полученных с web-камер.  Как для отдельного компьютера, небольшой сети или в Интернет. Для трансляции MPEG-4 потока сеть должна обеспечивать от 0.5 до 4 Мбит/с, от 3 до 4  Мбит/с  для MPEG-2 потока идущего со спутникового или телевизионного канала, и от 6 до 9  Мбит/с для DVD. Еще одна особенность выделяет этот проект – многоплатформеность. VideoLAN может работать на компьютерах под управлением различных версий GNU/Linux, всеми BSD системами, Windows всех версий,  Mac OS X, BeOS, Solaris, QNX. Распространяется под лицензией  GPL.

Для организации видеопотока  проект VideoLAN предлагает два приложения:

         VLS —  только VideoLAN сервер, транслирующий потоки из файлов MPEG-1, MPEG-2 и MPEG-4, DVD и VCD, цифровых спутниковые и телевизионных каналов, “живое” видео.

         VLC — изначально только VideoLAN клиент, а сейчас может использоваться как сервер транслирующий потоки MPEG-1, MPEG-2 и MPEG-4 / DivX файлов, видеодисков и живого видео, и клиент способный получать, декодировать и выводить MPEG потоки.

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

Для VLS отдельно поставляется SAP сервер. Его назначение, объявление анонсов транслируемых по сети  программ (VLC анонсирует себя сам). Клиенты VLC получают эти сообщения, и автоматически добавляют объявленные программы в свой playlist.

VLC имеет понятный графический интерфейс позволяющий настроить большинство параметров. Для организации одного потока достаточно компьютера класса Pentium 100 с 32 Mб ОЗУ, жесткий диск нужен естественно побольше. 

Установка VLC.

Перекомпилированные пакеты имеются для большинства дистрибутивов. В дистрибутивах использующих APT для поиска пакетов, которые нужно установить вводим.

$sudo aptcache search vlc

Список будет большой, но все устанавливать не нужно. Например, в KUbuntu, чтобы установить VLC, в минимальной конфигурации вводим.   

$ sudo apt-get update

$ sudo apt-get install vlc vlc-plugin-alsa  (или для Ubuntu vlc-plugin-esd)

Будут установлены все необходимые пакеты, включая и зависимости. По умолчанию устанавливается wxvlc графический интерфейс, добавив kvlc, qvlc или gnome-vlc можно установить другой фрон-енд. Кроме того, доступен плагин к Mozilla mozilla-plugin-vlc.  Для ALTLinux команда установки выглядит так.

  $ apt-get install vlc-normal

На странице http://www.videolan.org/vlc/ приведены ссылки с информацией по установке VLC на основные дистрибутивы GNU/Linux.

Если вы будете устанавливать VLC вручную, вам понадобится еще несколько дополнительных библиотек:

       libdvdcss – если нужно читать зашифрованные DVD диски (кстати модуль не обращает внимание на зоны)

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

       libdvbpsi – если нужно читать TS/DVB потоки видео со спутников или цифрового телевидения

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

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

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

       lirc – для управления с помощи пульта ДУ

Работаем.

Запустить VLC можно как из основного меню, в который встраивается ярлык программы, так и c консоли введя vlc. И в результате перед нами предстанет главное окно программы.

 

113.png

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

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

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

$ vlc -vvv my_videofile.mpg

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

$ vlc -vvv —codec ffmpeg my_videofile.mpg

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

$  vlc -vvv vcd:/dev/cdrom:@1:1 

Используя меню, это сделать еще проще. Открываем Файл, и выбираем источник сигнала файл, папку или диск.

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

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

# vlc -vvv videofile.avi —sout udp://192.168.0.42 —ttl 1

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

Можно отправить в сеть и содержимое DVD диска.

# vlc -vvv dvd:/dev/dvd —sout udp://example.org

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

# chmod 666 /dev/dvd

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

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

# vlc -vvv udp:

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

 # vlc -vvv udp:@:9876

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

# vlc -vvv udp:@multicast_address[:server_port]

Для широковещательных передач зарезервирован специальный диапазон адресов от  224.0.0.0 до 239.255.255.255. Поэтому для multicast выбираем любой понравившийся из этого диапазона и настраиваем на него как сервер, так и клиентов. Можно воспользоваться для трансляции и стандартным для любой сети адресом, заканчивающимся на 255, также отведенным под широковещательные пакеты, но в большой сети это может помешать нормальной работе некоторых служб. 

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

# vlc -vvv input_stream —sout ‘#standard{access=http,mux=ogg,url=server.example.org:1234}’

Теперь подключившись при помощи клиента VLC (можно использовать и XINE например), получаем информацию.

# vlc http://server.example.org:1234

C помощью меню поток можно организовать так. Открываем нужный источник Файл – Открыть файл. Далее выбираем нужный файл и на этой же странице внизу ставим флажок напротив Вывод потока (Stream Output), нажимаем Настройка. В появившемся окне заполняем параметры, либо вручную прописывая их в поле Destination Target, который расположен вверху страницы.

 217.png

Либо, что проще заполняем поля в Output Methods.

Например, для организации UDP multicast потока вводим в поле UDP, следующие параметры Адрес —   224.10.10.10 и порт оставляем по умолчанию. Активировав параметр Воспроизводить локально, можно на этом же компьютере контролировать, то что уходит в сеть. Теперь на другом компьютере для приема потока открываем Файл – Open Network Stream, в появившемся окне указываем параметры multicast сервера (полученный поток можно тут же перетранслировать на другой адрес) . 

 314.png

 

Есть и третий вариант — использования мастер трансляции и перекодирования, который вызывается из одноименного пункта расположенного в меню Файл. В этом случае вам необходимо будет пройти всего пять шагов:

— выбор режима работы – Вещание в сеть

49.png

— выбор источника сигнала – поток или список

56.png

— выбор варианта выходного потока – UDP unicast, multicast или HTTP

63.png

— выбор формата форматирования пакета

 

71.png

— установки TTL и анонсов SAP

8.png

После нажатия на Finish можно подключаться к потоку и проверять результат. Хотя как видите при использовании Мастера, многие параметры не доступны.

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

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

# vlc -vvv  dvd:/dev/dvd  –sout  ‘#transcode{vcodec= DIV3, acodec=vorb,vb=800,ab=128,channels=2,deinterlace}:standard{access=udp,mux=ts,url=239.255.12.42,sap=TestStream}’

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

#  vlc -vvv  videofile.avi  —sout ‘#duplicate{dst=display,

dst=»transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:

duplicate{dst=standard{access=udp,mux=ts,url=192.168.1.2},

dst=standard{access=udp,mux=ts,url=192.168.1.12}»}’

Все параметры чтобы вводить их каждый раз, можно прописать в конфигурационном файле. По умолчанию используется $HOME/.vlc/vlcrc.

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

 

4 комментария

  1. M0NG0L
    // Ответить

    Прошу прощения за скорее всего неумный но от этого не менее важный для меня вопрос. Возможно ли организовать на удаленном сервере (хост) так называемую ретрансляцию видео потоков с различных телеканалов или же только имею собственный локальный сервер. Спасибо.

  2. M0NG0L
    // Ответить

    Честно говоря не расчитывал на скорый ответ, спасибо Вам большое. Пожалуй поюзаю Ваш сайт тогда еще )).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *