Коли виникає необхідність одночасного перегляду відео великою кількістю користувачів, можна прийти до різних варіантів рішення. Найпростішим буде відкрити доступ до відеофайлу, інші користувачі будуть дивитися через відеоплеєр. Переваг даного методу три, не потрібно ніякого спеціального програмного забезпечення, незалежність від операційної системи з боку клієнта, а сам файл можна переглянути в будь-який час. Недоліків же не так багато за кількістю, зате вага їх перетягує все інше. Наприклад "живе" відео, отримане з 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 apt - cache 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. І в результаті перед нами постане головне вікно програми.
Тепер можна переглянути локальний відеофайл, створити потік або підключитися до наявного потоку. Розберемо по порядку.
Перегляд файлу.
У командному рядку вводимо.
$ 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, який розташований у верхній частині сторінки.
Або, що простіше заповнюємо поля в Output Method s.
Наприклад, для організації UDP multicast потоку вводимо в поле UDP, такі параметри Адреса - 224.10.10.10 і порт залишаємо за замовчуванням. Активувавши параметр Відтворювати локально, можна на цьому ж комп'ютері контролювати, то що йде в мережу. Тепер на іншому комп'ютері для прийому потоку відкриваємо Файл - Open Network Stream, у вікні вказуємо параметри multicast сервера (отриманий потік можна тут же перетрансліровать на іншу адресу).
Є і третій варіант - використання майстер трансляції та перекодування, який викликається з однойменного пункту розташованого в меню Файл. В цьому випадку вам необхідно буде пройти всього п'ять кроків:
- вибір режиму роботи - Мовлення в мережу
- вибір джерела сигналу - потік або список
- вибір варіанту вихідного потоку - UDP unicast, multicast або HTTP
- вибір формату форматування пакета
- установки TTL і анонсів SAP
Після натискання на 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 можна знайти в документації, якої на сайті більше ніж достатньо. Успіхів.