В этой части мы рассмотрим «Простой Стриминг» через GUI для домохозяек, а для примера нам послужат ситуации:
1. Когда мы выступаем в роли локального транслятора, для людей с лимитированным интернетом, с отключенным интернетом, или для тех, кто считается с вашим вкусом и хочет смотреть то, что вы им порекомендуете.
3. Если вы захотите передавать видео со своей вебкамеры, просто цифровой камеры и любых других подобных устройств, через DirectShow.
Если у кого будут вопросы, которые уже освещались, посмотрите ответы в темах:
Серьезный разговор о VLC
Серьезный разговор о VLC #2
VLC: Стрим и Стрим-Сервер #1
и
Стабильное вещание IPTV через VLC
Комментарии:
1. Для удобства, в случае если вы будете засовывать множества файлов, советую заранее подготовить плейлист в формате M3U.
2. В последних версиях VLC, стрим можно смело настроить на вещание практически по всем протоколам сразу, если конечно это потребуется.
3. Для отладки и изучения, рекомендую начинать работу с VLC используя модуль «logger»
vlc -extraintf logger
4. Для наложения логотипа на стрим используйте фильтр logo, лучше в формате PNG.
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-диалог выглядит одинаково:
File: Достаточно выбрать плейлист или любой файл (Аудио/Видео), а зависимости от того, что вы собираетесь вещать в сеть.
Disk: DVD. AudioCD. VCD, здесь же можно отключить вывод меню, выбрать привод, и главу.
Network: здесь мы можем выбрать любой протокол и адрес входящего потока, который будем ретранслировать/конвертировать/сохранять (например с Youtube), Также вчера было проверено, что VLC отлично справляется с RTMP потоками, так что можете вещать видео со своей веб-камеры, поток которой идет на любой сервис управляемый red5.
Capture Device: Здесь можно выбрать, при наличии такового, любое устройство которое работают через Direct Show, Камеру, Вебкамеру, Цифровое или Спутниковое ТВ, а также Ваш Рабочий стол (Будет вещаться все, что происходит у вас на экране монитора).
После того как вы определились с выбором входящего потока, достаточно нажать кнопку «Stream». После чего откроется новое диалоговое окно, которое одновременно работает как настройка стриминга и/или конвертации, и конечный результат зависит от внесенных здесь настроек. Нажимаем кнопку Next, или вкладку Destination.
Как показано на рисунке, и как я уже упоминал, мы можем вести трансляции по всем поддерживаемым протоколам одновременно, в данном примере я показываю пример трансляции по HTTP/MMS.
Выбираем:
New Destination — HTTP, нажимаем Add, вбиваем адрес (0.0.0.0, или смотрим по ipconfig), указываем порт. Если нам нужны еще протоколы, то просто нажимаем "+".
Transcoding Options: Выбираем метод транскодинга из готовых профилей, или создаем свой (а также можно пустить поток без обработки для клиентского VLC).
Наморочавшись с кодеками, я пришел к выводу, а потом почитав в сети, я понял что не я один, — передача видео стрима по протоколам mms и http с тех.данными:
Инкапсуляция — ASF
Кодек — DivX3
Ширина — 320 (для уменьшения нагрузки)
Высота — 200 (для уменьшения нагрузки)
Аудио — mp3
Битрейт — 96
cамая оптимальная, для передачи на большинство плееров.
: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 соответственно.
: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 мы рассмотрим в теме продвинутого стриминга с использованием командной строки и телнета