Как стать автором
Обновить

VLC: Стрим и Стрим-Сервер #2

Время на прочтение5 мин
Количество просмотров183K
image
В этой части мы рассмотрим «Простой Стриминг» через GUI для домохозяек, а для примера нам послужат ситуации:
1. Когда мы выступаем в роли локального транслятора, для людей с лимитированным интернетом, с отключенным интернетом, или для тех, кто считается с вашим вкусом и хочет смотреть то, что вы им порекомендуете.
3. Если вы захотите передавать видео со своей вебкамеры, просто цифровой камеры и любых других подобных устройств, через DirectShow.



Если у кого будут вопросы, которые уже освещались, посмотрите ответы в темах:
Серьезный разговор о VLC
Серьезный разговор о VLC #2
VLC: Стрим и Стрим-Сервер #1
и
Стабильное вещание IPTV через VLC


Комментарии:
1. Для удобства, в случае если вы будете засовывать множества файлов, советую заранее подготовить плейлист в формате M3U.
2. В последних версиях VLC, стрим можно смело настроить на вещание практически по всем протоколам сразу, если конечно это потребуется.
3. Для отладки и изучения, рекомендую начинать работу с VLC используя модуль «logger»
image
vlc -extraintf logger
4. Для наложения логотипа на стрим используйте фильтр logo, лучше в формате PNG.
image
5. В качестве альтернативных плееров для воспроизведения потоков с VLC брали Windows и Winamp Media Player.

Методы вывода потоков


  • Play localy: Просмотр/прослушивание того, что вы вещаете на данный момент поддерживает транскодинг, рескалинг и так далее… (для локального применения)
  • File: Сохраняет пущенный в эфир поток на жесткий диск. (пригоден если вы ретранслируете что-либо мимо себя, и хотите это сохранить)
  • HTTP/S: Стрим потока по HTTP. Необходимо указать IP адрес и порт TCP.
  • MMS/H: Чаще всего используется для потока в Windows Media Player. И работает только с методом ASF инкапсуляции.
  • UDP: multicast и unicast (возможна поддержка IPv6). И работает только с методом TS инкапсуляции.
  • RTP: Real-Time Transfer Protocol. похож на UDP, и может использовать unicast multicast адреса одновременно.
  • RTMP: Real Time Messaging Protocol — проприетарный протокол потоковой передачи данных, в основном используется для передачи потокового видео и аудио-потоков с веб-камер через интернет. (Поддерживается VLC только в качестве входящего потока, который можно ретранслировать.)

Настройка входящих данных


Для всех типов вещание начальный GUI-диалог выглядит одинаково:
image
File: Достаточно выбрать плейлист или любой файл (Аудио/Видео), а зависимости от того, что вы собираетесь вещать в сеть.
Disk: DVD. AudioCD. VCD, здесь же можно отключить вывод меню, выбрать привод, и главу.
Network: здесь мы можем выбрать любой протокол и адрес входящего потока, который будем ретранслировать/конвертировать/сохранять (например с Youtube), Также вчера было проверено, что VLC отлично справляется с RTMP потоками, так что можете вещать видео со своей веб-камеры, поток которой идет на любой сервис управляемый red5.
image
Capture Device: Здесь можно выбрать, при наличии такового, любое устройство которое работают через Direct Show, Камеру, Вебкамеру, Цифровое или Спутниковое ТВ, а также Ваш Рабочий стол (Будет вещаться все, что происходит у вас на экране монитора).
image
После того как вы определились с выбором входящего потока, достаточно нажать кнопку «Stream». После чего откроется новое диалоговое окно, которое одновременно работает как настройка стриминга и/или конвертации, и конечный результат зависит от внесенных здесь настроек. Нажимаем кнопку Next, или вкладку Destination.
Как показано на рисунке, и как я уже упоминал, мы можем вести трансляции по всем поддерживаемым протоколам одновременно, в данном примере я показываю пример трансляции по HTTP/MMS.
Выбираем:
New Destination — HTTP, нажимаем Add, вбиваем адрес (0.0.0.0, или смотрим по ipconfig), указываем порт. Если нам нужны еще протоколы, то просто нажимаем "+".
image
Transcoding Options: Выбираем метод транскодинга из готовых профилей, или создаем свой (а также можно пустить поток без обработки для клиентского VLC).

Наморочавшись с кодеками, я пришел к выводу, а потом почитав в сети, я понял что не я один, — передача видео стрима по протоколам mms и http с тех.данными:
Инкапсуляция — ASF
Кодек — DivX3
Ширина — 320 (для уменьшения нагрузки)
Высота — 200 (для уменьшения нагрузки)
Аудио — mp3
Битрейт — 96
cамая оптимальная, для передачи на большинство плееров.
image
:sout=#transcode{vcodec=DIV3,vb=800,scale=1,width=320,height=200,acodec=mp3,ab=96,channels=2,samplerate=44100}:std{access=mmsh,mux=asfh,dst=0.0.0.0:1234}
При таких раскладах, протестировав на 10 клиентах, загрузка процессора была ~5-12%

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

Для этого создайте документ с расширением *.asx, например stream.asx и поместить туда код:
<ASX version ="3.0">
  <TITLE>Домашний Стрим</TITLE>
  <ENTRY>
    <REF HREF="http://127.0.0.1:1234" />
  </ENTRY>
</ASX>

Где HREF, — Ваш IP и порт. Поместите этот файл на сервер, например в папку /stream/, а в html файле, где бы вы хотели отобразить стрим, напишите следующее:
<embed src="stream.asx” height=”320” width=”200">


В случае же если у клиентов стоит Mplayer или VLC, то можно поиграть с другими типами инкапсуляций и кодеков, таких как TS и h264 соответственно.
image
:sout=#std{access=http,mux=ts,dst=0.0.0.0:8080}

В таком случае мы получим меньшую нагрузку на систему, большую на канал, но при этом клиенты получают оригинальное видео.

Следующая/последняя вкладка Options не обязательна, в нее стоит заглянуть только для тех кто будет настраивать Анонсы, или захочет посмотреть сгенерированный скрипт, который можно будет в дальнейшем использовать из командной стройки, так же полезен если вы будете запускать вещания по «Крону». О том как использовать я уже писал.
Нажимаем последний раз "Stream" и приглашаем друзей.

Выводы: Качество стрима и его приема может быть достигнуто только при наличии VLC или Mplayer с обоих сторон, так как в случае с VLC не потребует заморочек с плагинами и кодеками, Все, что он стримает по любому протоколу, он быстро и безболезненно подхватывает и на стороне клиента, вне заисимости от кодеков и инкапсуляций и прочих раздражающих факторов. Данный вывод основан только на том факте, что рассматриваемый метод хорош для «домохозяек», и людей которые не умеют пользоватся консолями и командными строками. В следющей части мы попробуем раскрыть тему и возможности вещания на основе «Command Line», которые увеличивают спектр возможностей по стрмингу.

PS: Если возникают проблемы с доступностью из сети,
1. Проверьте Фаервол, Прокси, Файл C:\****\VideoLAN\VLC\http\.hosts на наличие раскомментированных строк
::/0
0.0.0.0/0

UPD: Для передачи потока по UDP unicast
со стороны сервера необходимо указать IP и порт назначения. Например:
Сервер (192.168.0.1), Клиент (192.168.0.2)
На сервере в настройках стриминга указать
Media — Stream — UDP, 192.168.0.2:1234
У клиента для просмотра потока:
Media — Open Network Stream — UDP, @:1234

UDP Multicast
В multicast, стрим вещается на multicast IP адреса (IP адреса зарезервированные для этих целей, диапазон которых от 224.0.0.0 до 239.255.255.255). Затем, любая машина в сети, может присоединится к multicast группе, посылая запрос в сеть, автоматически получит транслируемый поток.

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

Активация multicast, происходит также как в случае с unicast, только во вкладке Options необходимо указать количество TTL* (например 50) IP пакетов, Это означает, что multicast поток сможет пересекать 50 маршрутизаторов.
* — Time To Live
А со стороны клиента, достаточно просто открыть поток в любом плеере который поддерживает multiсast и в строке имени потока указать
udp://@_IP_:port

Ссылки по теме
Multicast на Википедии
IP Multicast на сайте Cisco

Более подробно multicast мы рассмотрим в теме продвинутого стриминга с использованием командной строки и телнета
Теги:
Хабы:
Всего голосов 48: ↑42 и ↓6+36
Комментарии36

Публикации

Ближайшие события

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань