Пользователь
0,0
рейтинг
11 февраля 2009 в 08:14

Администрирование → Вещание видеофайлов с помощью VLC multicast. С теорией.

IPTV*
По просьбам переписываю статью с добавлением теоретический знаний. Итак, пара определений:


Multicast (англ. групповая передача) — специальная форма широковещания, при которой копии пакетов направляются определённому подмножеству адресатов. Технология IP Multicast использует адреса с 224.0.0.0 до 239.255.255.255. Поддерживается статическая и динамическая адресация. Примером статических адресов являются 224.0.0.1 — адрес группы, включающей в себя все узлы локальной сети, 224.0.0.2 — все маршрутизаторы локальной сети. Диапазон адресов с 224.0.0.0 по 224.0.0.255 зарезервирован для протоколов маршрутизации и других низкоуровневых протоколов поддержки групповой адресации. Остальные адреса динамически используются приложениями. Для определения членов различных групп в локальной сети маршрутизатор использует протокол IGMP. Один из маршрутизаторов подсети периодически опрашивает узлы подсети, чтобы узнать, какие группы используются приложениями узлов. На каждую группу генерируется только один ответ в подсети. Для того чтобы стать членом новой группы, узел получателя инициирует запрос на маршрутизатор локальной сети. Сетевой интерфейс узла-получателя настраивается на прием пакетов с этим групповым адресом. Каждый узел самостоятельно отслеживает свои активные групповые адреса, и когда отпадает необходимость состоять в данной группе, прекращает посылать подтверждения на IGMP — запросы. Результаты IGMP — запросов используются протоколами групповой маршрутизации для передачи информации о членстве в группе на соседние маршрутизаторы и далее по сети.

VLC media player (первоначально от VideoLAN Client) — это свободный медиаплеер.
Программа работает на большинстве современных операционных систем, в частности на:
* GNU/Linux
* BSD (FreeBSD, NetBSD, OpenBSD, Apple Darwin, Mac OS X)
* Solaris
* и других разновидностях UNIX…
* Семейство BeOS (BeOS, Zeta-OS, Haiku-OS)
* QNX
* MorphOS
* Microsoft Windows
* Microsoft Windows CE
Плеер VLC можно использовать в качестве сервера для трансляции потока аудио/видео по сети (поддерживает протоколы IPv4 и IPv6). Для воспроизведения файлов мультимедиа не требуется установка дополнительных кодеков, они уже «встроены» в программу. VLC может воспроизводить DVD и потоковое незашифрованное (бесплатное) видео (IPTV) и Интернет-радио. Также программа может записывать потоковое аудио/видео на компьютер. VLC хорошо воспроизводит испорченные файлы.

Для вещания был выбран слабенький Pentium III 800MHz c 512 Mb RAM и с дисковой подсистемой в RAID1. На все это железо воздрузилась Gentoo Linux:

Portage 2.1.6.4 (default/linux/x86/2008.0, gcc-4.1.2, glibc-2.6.1-r0, 2.6.25-gentoo-r8 i686)
=================================================================
System uname: Linux-2.6.25-gentoo-r8-i686-Pentium_III_-Coppermine-with-glibc2.0
Timestamp of tree: Mon, 09 Feb 2009 22:15:02 +0000
app-shells/bash: 3.2_p39
dev-lang/python: 2.4.4-r13, 2.5.2-r7
dev-python/pycrypto: 2.0.1-r6
sys-apps/baselayout: 1.12.11.1
sys-apps/sandbox: 1.2.18.1-r2
sys-devel/autoconf: 2.13, 2.63
sys-devel/automake: 1.7.9-r1, 1.9.6-r2, 1.10.2
sys-devel/binutils: 2.18-r3
sys-devel/gcc-config: 1.4.0-r4
sys-devel/libtool: 1.5.26
virtual/os-headers: 2.6.27-r2


VLC был собран со следующими флагами:

media-video/vlc-0.9.7 USE="a52 aac ffmpeg hal libgcrypt mp3 mpeg ncurses stream x264 -X -aalib -alsa (-altivec) -arts -atmo -avahi -bidi -cdda -cddax% -cddb -cdio -dbus -dc1394 -debug -dirac -directfb -dts -dvb -dvd -esd -fbcon -flac -fluidsynth -fontconfig -ggi -gnome -gnutls -httpd -id3tag -jack -kate -libass -libcaca -libnotify -libsysfs -libv4l2 -lirc -live -lua -matroska -mmx -modplug -musepack -nsplugin -ogg -opengl -optimisememory -oss -pda% -png -pulseaudio -pvr -qt4 -remoteosd -rtsp -run-as-root% -samba -schroedinger -sdl -sdl-image -seamonkey -shout -skins -speex -sse -svg -svga -taglib -theora -truetype -twolame -upnp -v4l -v4l2 -vcdinfo -vcdx -vlm -vorbis -win32codecs -xinerama -xml -xosd -xv -zvbi (-vcd%)"

Соответственно можно поиграть флагами кому как хочется, обязателен флаг stream. Описание флагов можно подсмотреть командой equery u vlc из пакета gentoolkit. Единственное на что хочется обратить внимание, это флаг optimisememory. Собирал с ним 3 предыдущих версии, процесс за пару дней сжирал на 100% ресурсы процессора и умирал.

Для запуска я писал демона, который удалял старый плейлист, создавал новый и запускал собственно vlc в screen:
vlc -v /home/ftp/pub/playlist.m3u --sout '#standard{access=udp{ttl=15},mux=ts{tsid=22,pid-video=23,pid-audio=24,pid-pmt=25,use-key-frames},dst=[multcast ip]}' --random --loop --volume 100

Screen, а не демон, был выбран для паралельного запуска нескольких каналов, для более простого и удобного мониторинга процесса. PID'ы мне нужны чтобы STB и MidlleWare все правильно скушали. Файлы конвертировались в:

Формат : MPEG Video
Версия формата : Version 2
Настройка матрицы формата : Standard
Режим расчёта битрейта : Переменный
Битрейт : 7 762 Кбит/сек
Ширина : 1 920 пикс.
Высота : 1 080 пикс.
Соотношение кадра : 16/9
Частота кадров : 30,000 кадр/сек
Колориметрия : 4:2:0
Тип развёртки : Прогрессивная


Формат : MPEG Audio
Версия формата : Version 1
Профайл формата : Layer 2
Режим расчёта битрейта : Постоянный
Битрейт : 64,0 Кбит/сек
Канал(ы) : 2 канала(ов)
Частота : 44,1 КГц
Разрешение : 16 бит


Производительность:
up 70 days, 17:08, load average: 0.16, 0.17, 0.11

Загрузка сети:
30 second input rate 8718000 bits/sec, 801 packets/sec
30 second output rate 2000 bits/sec, 2 packets/sec
Borodin Alexander @Breaker
карма
38,2
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (19)

  • +1
    Поздравляю. Загрузка просто поразила. Я бы посоветовал видео битрейт поменьше, аудио битрейт побольше. Но вы в любом случае молодец. Искренне желаю всяческих успехов.
    • 0
      Спасибо :)
      Мне нужен именно в HDTV с любым звуком ;)
      Это вещается на STB.
  • 0
    Никто не подскажет как при просмотре видео что вещается мультикастом, через
    VLC media player его можно записать себе на хард?
    • 0
      При открытии потока можно дополнить указать, чтобы он воспроизводился локально, выбрать опцию Сохранять на диск, выбрать аудио-видео кодеки, ввести название файла и готово. :)
      • 0
        спасибо
        сохраненное видео воспроизводится нормально только самим VLC, другие плееры его не хотят показывать, при условии что всякие кодеки установлены… никак не могу подобрать пару видео/аудио кодеков чтобы всё работало нормально :(
        • +2
          Итого, методом тыка пришел к следующим настройкам:
          encapsulation — mp4
          видео кодек — MPEG-4
          аудио кодек — mp3
          с такими настройками получилось нормально сразу смотреть и записывать трансляцию
  • 0
    Вот бы кто-то написал статью, как можна с помощью VLC стримить через rtsp для мобильных телефонов…
    • 0
      Да! Пожалуйста, напишите об этом!
  • 0
    Отличная статья, спасибо! Как раз вынашиваю идею трансляцию в домашних условиях на всё, что шевелится.
    Да, загрузка процессора реально порадовала, не ожидал.
  • 0
    *идею трансляциИ
  • 0
    Прежде всего спасибо за статью!

    У меня несколько вопросов:
    Насколько я понимаю через VLC можно ретранслировать практически все что угодно, включая mms?
    Просто IceCast не поддерживает mms и мы хотим полностью перейти на VLC.
    Возможно ли будет транслировать несколько станций параллельно?
    • 0
      Да, я сейчас планирую вещание нескольких «каналов». Но тут всё упрется в дисковую подсистему :(
      • 0
        А какие возникают проблемы?
        У нас просто в локалку ретранслируется радио, а хочется еще и видео и mms формат.
        Сколько станций теоретически выдержать может?

        Есть ли возможность не тянуть поток, если нет ни одного слушателя?
        • 0
          Проблема одна: нехватка времени, кроме IPTV приходится заниматься много чем.
          Теоретически зависит от ширины канала и того, что будете вещать

          Ниже в комментах есть отличный пример ;)
  • +2
    По поводу playlist.m3u, демона и фразы «для паралельного запуска нескольких каналов, для более простого и удобного мониторинга процесса»
    о_О
    Используйте VLM: --vlm-conf вместе с vlm файлом. Для удаленного управления я использую связку --intf http --control telnet (http доступ по 8080 порту и консоль telnet).
    Логирование --extraintf logger --logfile
    Вещаю со спутника целым транспордером, загрузка CPU минимальна 5-7% так как демультиплексирования нет.
    Бывает что канал пропадает с транспордера, для этого парсю tcpdump и если пакеты на мультикаст адрес не идут скрипт автоматом через консоль telnet делает control channel stop, control channel start vlc после этих манипуляций канал встает на место и никаких рестартов vlc.
  • 0
    а как-то можно, чтоб VLC показывал на одной машине видео на монитор, но в это же время аудиопоток этого видео транслировал для подхватки его на другой машине, к которой подключены колонки? :)
    • 0
      очень просто )
      Запускаешь трансляцию и цепляешься к потоку 2-мя клиентами с 2-х разных компов, но на одном окошко сворачиваешь, чтобы был только звук, а на втором наоборот на весь экран )
  • 0
    Человек извне попросил меня задать вам вопрос:
    «Хотелось бы поподробнее узнать о настройках сервисов для вашей amino, где брали прошивку, как её правили(и надо ли это делать), управляется ли вещание контента через amino?»
    • 0
      Если amino это STB, то она скорее всего является просто компом с встроенным HTML браузером и видеоплеером, так что управляется вещание контента на веб-сервере, куда эта STB подключается, а уж серверную часть можно на любом PHP написать.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.