Андрей Смирнов
Время чтения: ~16 мин.
Просмотров: 28

Как транслировать (передавать) видео и музыку в сеть — делаем собственное вещание в локалку и интернет

Дата публикации: 2018-02-01

100.jpg

От автора: поскольку все больше и больше клиентов используют сети с высокой пропускной способностью, потоковое видео стало нормой в Интернете. Социальные медиа, веб-сайты и потоковые сервисы, такие как YouTube и Netflix, передаются прямо на ваш телефон. Исследование показало, что видео повышает взаимодействие с клиентами, поэтому мы должны ожидать, что количество видео в Интернете и на мобильных устройствах будет продолжать расти быстрыми темпами. Но что нужно для хорошего воспроизведения видео? И (возможно, что более важно), как вы можете реализовать хорошее воспроизведение видео, которое также очень высокоэффективно? В этой статье я сосредоточусь на нескольких способах оптимизации потоковой передачи HTTP Live Streaming (HLS) для улучшения доставки. Эти передовые методы также применяются к форматам MPEG-DASH и другим потоковым форматам и ни в коем случае не являются исчерпывающим списком, а просто представляют собой способы повышения производительности потоковой передачи видео.

Исследование: что делает хороший поток?

Ответ: зависит от разных факторов. Клиенты демонстрируют различное поведение для разных типов потоков. Это интуитивно имеет смысл — если вы сидите и смотрите телешоу или фильм (более 15 минут), вы будете более терпеливыми, чем, если это будет видео с котом, едущем на Roomba.

Я рассмотрю 3 основных показателя качества видео, которые необходимо учитывать.

Задержка запуска: время от нажатия воспроизведения до тех пор, как начнётся поток.

Столбцы. В буфере устройства видео не остается, и воспроизведение останавливается.

JavaScript. Быстрый старт

Изучите основы JavaScript на практическом примере по созданию веб-приложения

Узнать подробнее

Качество видео: сколько пикселей на экране в любой момент времени.

Эти показатели сильно зависят от того, насколько быстро видео можно транспортировать по сети. В исследовательской работе Akamai обнаружено, что после 2 секунд задержки запуска клиенты начинают отказываться со скоростью 5,8% за дополнительную секунду. Они также считают, что более длинные (и более многочисленные) торможения приводят к отказу. Наконец, видео высокого качества более приятно смотреть, поэтому важно избегать пиксельного и низкого качества видео.

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

Скриншоты в этой статье взяты из AT & T Video Optimizer, бесплатного инструмента, который собирает сетевые захваты на вашем мобильном устройстве. Он оценивает сетевой трафик против ~ 40 лучших способов повышения производительности сети вашего приложения. Помимо видео, он также просматривает изображения, текстовые файлы, соединения и другие функции производительности сети.

Как мы можем обеспечить быструю и регулярную доставку видео?

Когда дело доходит до потоковой передачи видео, лучший способ обеспечить быструю доставку видео высокого качества — иметь несколько разных битрейтов одного и того же видео, доступного для загрузки. В HLS видео-запрос начинается с доставки файла манифеста. Этот файл (часто с расширением .m3u8) перечисляет доступные видеокодировки для видео, которое будет доставлено. Каждая строка этого текстового файла содержит информацию о доступных потоках. На следующей диаграмме я извлек критическую информацию из видеопотока:

1.png

Первое, что вы могли заметить, — это столбец идентификатора, который немного не соответствует порядку. Существуют значения 1-7, но список начинается с 3. Каждый идентификатор отображает полосу пропускания, разрешение и аудио и видео кодеки, используемые для создания потока.

Запуск видео

Первым битрейтом, указанным в манифесте, является качество видео, которое первоначально запросит пользователь. Если этот список был последовательным, видеопоток начался бы с очень низкого качества 1 (128 × 320 @ 193 KBPS). С положительной стороны, 193 KBPS будет загружаться очень быстро в большинстве сетей.

Если бы порядок был отменен, начальное качество видео было бы чрезвычайно высоким (676 × 1024 3.6 MBPS). И хотя большое качество видео важно, это может привести к очень большой задержке запуска в сети с пропускной способностью менее 3,6 МБ.

Лучшая практика № 1: Чтобы сбалансировать начальное качество видео и задержку запуска, поместите поток средней полосы пропускания / качества в качестве первого выбора, чтобы сбалансировать быструю загрузку / запуск видео и начальное качество видео.

Проигрывание видео

После того, как плеер начнет загружать видео сегменты (2-8 сек фрагментов видео для воспроизведения), проигрыватель будет измерять скорость загрузки. Если он подсчитает, что сеть может обеспечить видео более высокого качества достаточно быстро, он попытается загрузить более качественную версию видео. И наоборот, если сеть работает медленнее, она снизится до более низкого качества видео, чтобы обеспечить постоянный поток. Каждый раз при изменении качества видео загружается манифест для нового потока, и видео может начать загрузку новой версии.

Video Optimizer может отслеживать количество сегментов в буфере локального устройства и отчитывается количество буферизованного видео в секундах и МБ во время сбора данных:

2.png

Если любое из этих чисел достигает 0, на устройстве больше нет видеозаписи, и видео будет остановлено.

JavaScript. Быстрый старт

Изучите основы JavaScript на практическом примере по созданию веб-приложения

Узнать подробнее

Используя функцию «Затухание сети» в «Оптимизаторе видео», я изменил пропускную способность сети с 5 Мбайт до 1 Мбит / с в среднем потоке, и мы видим, что видеопроигрыватель начинает запрашивать более качественные видео сегменты, снижая с 1,5 МБПС и в конечном итоге устанавливая 500 КБ.

3.png

(Кроме того, можно подумать: если пропускная способность сети составляет 1 Мбайт, то почему 800 KBPS-видео плохо транслируется? Оказывается, есть два потока: один для видео и аудио — поток размером 128 Кбайт. Плеер определил, что 928 килобайт (+ накладные, + аналитика) были слишком приближены к 1024 KBPS и понизил видео. В этом случае можно было бы сделать аргумент за то, что более низкое качество звуковой дорожки, чтобы гарантировать, что более высокое разрешение видео воспроизводится. Кроме того, Лучшая практика: Качество звука (отдельный поток или встроенный в видеопоток) влияет на общую скорость передачи видео).

Очевидно, что несколько битрейтов помогут обеспечить хорошее видео. Примеры, показанные выше, имеют кодировки с изменениями битрейта, которые увеличиваются в довольно регулярные интервалы. Это означает, что небольшие изменения пропускной способности сети будут лишь незначительно влиять на качество видео на экране. Сравните это с рекомендуемым списком битрейтов, который я обнаружил в Интернете:

4.png

Представьте, что вы просматриваете видео, закодированное на мобильном устройстве с пропускной способностью 1,4 Мбайт. Единственный возможный вариант — ID 1, а это означает, что любой из пользователей 3G будет видеть только видео с самым низким качеством видео. Кроме того, разница в качестве видео между потоками 1 и 2, вероятно, значительна. Если видео перемещается между битрейтами 1 и 2 несколько раз, изменение качества видео, скорее всего, будет очевидным для конечного пользователя. Этот набор кодировок не очень подходит для потоковой передачи данных на мобильных устройствах.

Лучшая практика № 2: Доступны несколько битрейтов с регулярными интервалами между качествами. Это помогает обеспечить плавное прогрессирование качества видео и предотвратить значительные изменения качества видео.

Видеоплееры отличаются своей агрессивностью, чтобы улучшить качество видео. Некоторые видеопроигрыватели, почувствовав более высокую пропускную способность, начнут процесс замены сегмента — где видео сегменты, уже загруженные с более низким качеством, загружаются снова с более высоким качеством. Это приводит к тому, что один и тот же сегмент загружается более одного раза, но поскольку он улучшает отображаемое видео, я считаю его компромиссным, который обычно оценивается. Например, в таблице ниже сегменты 111-112 изначально загружаются с качеством 0. Плеер регистрирует всплеск пропускной способности и оценивает, что эти 2 сегмента можно заменить и повторно загружать по качеству 2. Однако плеер также довольно агрессивный, загружая 112 третий время в качестве 4. В целом для 4-секундного сегмента 112. потребляется ~ 2 МБ данных. Это может считаться слишком агрессивным — поскольку он тратит большой объем данных.

5.png

Мы также видели примеры «замены обратного сегмента», когда плеер загружает более качественную версию после того, как уже имеет более качественную версию на устройстве. В этом случае сегменты 134-134 загружаются с качеством 4 (1,6 MBPS), а затем загружаются с качеством 1 (447 KBPS):

6.png

По крайней мере, если качество 4 воспроизводится конечному пользователю, ~ 370 КБ будет потрачено впустую (сумма качественных 1 сегментов). Если воспроизводится качество 1, ~ 1,3 МБ данных теряется, и пользователю предоставляется ухудшенное воспроизведение видео.

Лучшая практика № 3: если ваш видеопроигрыватель агрессивно продвигается к высокоскоростному видео, убедитесь, что замена сегмента только улучшает качество видео. Мониторинг использования данных замены сегмента для ваших пользователей (в Video Optimizer это сообщается как избыточность).

Для видео с несколькими высокими потоками битрейта агрессивный алгоритм битрейта может привести к увеличению количества остановок. Если локальный буфер составляет 30 МБ, но поток работает с 8 Мбайт / с, то локальная локация может быть только 2-3 секунды. Внезапное изменение пропускной способности, вероятно, приведет к остановке, прежде чем сеть и сервер смогут отреагировать.

Лучшая практика # 4: при потоковой передаче видео с высоким битрейтом убедитесь, что буфер устройства может поддерживать много секунд видео для учета внезапных изменений пропускной способности. Альтернатива: ограничить максимальные битрейты для устройств с ограниченной памятью.

Вывод:

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

Автор: Doug Sillars

Источник: https://calendar.perfplanet.com/

Редакция: Команда webformyself.

JavaScript. Быстрый старт

Изучите основы JavaScript на практическом примере по созданию веб-приложения

Узнать подробнееverstak.jpg

Верстка-Мастер. От теории до верстки популярных шаблонов

Изучите современную верстку сайтов с нуля

Подробнее Небольшие правки, которые могут сильно повлиять на доступность вашего сайтаTypeScript — Вложенный оператор if —>

Метки:сайтостроение

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

https://webformyself.com/potokovoe-video-chto-eto-takoe/—>

Translyatsiya-delaem-svoyu-setku-veshhaniya.jpgДоброго дня!

Если у вас есть какая-нибудь камера или ТВ-тюнер, и вы хотите сделать свою трансляцию в локальной сети (или в интернет) — то эта заметка для вас. ?

Впрочем, никто не мешает с таким же успехом вещать и просто какие-нибудь фильмы/музыку, например, с ПК на ТВ или мобильные гаджеты…

Единственное, учитывайте, что ваш компьютер (который транслирует) должен быть достаточно производительным (чтобы избежать лагов и подвисаний). К тому же, нужно иметь хорошее и стабильное подключение к сети (не ниже 10 Мбит/с). В помощь: тест скорости интернета.

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

Ладно, ближе к теме…

*

Трансляция видео в сеть: пример настройки вещания

Запуск трансляции

ШАГ 1

И так, для нашей задачи понадобится универсальный кросс-платформенный плеер VLC. Программа позволяет не только смотреть потоковое видео в сети, но и создавать трансляцию самостоятельно…

VLC

Сайт разработчика: https://www.videolan.org/vlc/index.ru.html

VLC-logo.png

Основные преимущества проигрывателя:

  1. «всеядность»: воспроизводит файлы, внешние диски, сетевые трансляции и т.д.;
  2. поддерживает все популярные форматы файлов: MPEG-2, MPEG-4, H.264, MKV, WebM, WMV, MP3 (даже, если у вас не установлены кодеки в системе);
  3. работает на Windows, Android, Linux, Mac OS X, iOS;
  4. программа бесплатна (и без рекламных вставок).

Примечание: очень желательно установить данный проигрыватель и на то устройство, с которого вы будете вещать, и на то — на котором будете принимать трансляцию. В своем примере ниже я так и сделал…

ШАГ 2

Теперь необходимо запустить VLC на том компьютере (устройстве), с которого будем вести трансляцию.

После перейти в меню «Медиа/Передать» (Ctrl+S). См. скриншот ниже.

Peredavat.png

Передавать

ШАГ 3

Далее нужно выбрать, что мы будем транслировать:

  • файл;
  • диск;
  • ТВ-тюнер, камеру или др. устройства захвата.

В своем примере я просто добавил один из фильмов.

Добавить файл

ШАГ 4

Затем нужно уточнить источник вещание: при выборе обычного файла (как в моем случае) можно сразу же нажать далее (т.е. следующий) …

Следующий

ШАГ 5

Важный шаг!

Нужно выбрать в списке «HTTP» и нажать на кнопку «Добавить». У вас появится вкладка с одноименным названием, в которой можно указать порт и путь трансляции (по умолчанию порт 8080). Рекомендую не менять эти значения и перейти к дальнейшей настройке…

Вывод потока (порт)

ШАГ 6

В этом шаге нужно выбрать качество трансляции (подбирается экспериментально, в зависимости от ваших нужд). Например, я транслирую видео с ПК на телефон — поэтому выбрал видео для андроида (прим.: на экране телефона почти незаметна разница между оригиналом и сжатым видео).

Задание качества

ШАГ 7

Здесь можно задать доп. параметры вещания. В большинстве случаев можно сразу же нажать «Поток».

Поток

ШАГ 8

При первом запуске трансляции брандмауэр Windows попросит вас дать разрешение на работу VLC — просто согласитесь, нажав на «Разрешить доступ».

Разрешить доступ

ШАГ 9

Если трансляция запустилась вы увидите тикающий таймер времени (см. нижнюю часть окна программы). То есть с этого момента — вещание можно принять на другое устройство и посмотреть «что-там…». ?

Трансляция пошла

Как смотреть трансляцию

По локальной сети

Примечание! 

Т.е. и компьютер (который вещает), и устройство (которое принимает трансляцию) находится в одной общей локальной сети. В своем примере ниже: трансляция ведется с ПК, а принимается на телефон под андроидом. Оба устройства подключены к одной Wi-Fi сети.

ШАГ 1

Для начала нам нужно узнать локальный IP-адрес компьютера, который ведет трансляцию. Сделать это можно через командную строку: введя в ней ipconfig и нажав Enter.

См. ниже скриншот — мой IP 192.168.0.106 (это нужно для дальнейшего подключения).

ipconfig / Командная строка

Кстати, узнать IP-адреса также можно в настройках роутера.

IP-адрес в настройках роутера

ШАГ 2

Теперь запускаем VLC на том устройстве, с которого будем принимать трансляцию (например, телефон). Далее переходим в меню программы и выбираем «Поток»(или «открыть URL-адрес трансляции»).

Поток / VLC

ШАГ 3

Далее нужно указать сетевой адрес — http://192.168.0.106:8080

Важно! 

1) Вместо 192.168.0.106 — у вас будет свой IP-адрес того компьютера, который ведет трансляцию (например, 192.168.10.102 или 192.168.0.103). Мы этот IP-адрес узнавали в ШАГЕ 1.

2) Вместо порта 8080 может использоваться другой (если при создании трансляции вы изменили его).

VLC для андроид

ШАГ 4

Если вы все указали правильно, то через 3-5 сек. устройство «прогрузит» кэш и VLC начнет показывать вещание…

Трансляция

Разумеется, к одной трансляции можно одновременно подключить несколько устройств…

Фото трансляции

По интернету

ШАГ 1

Всё отличие здесь будет сводится к тому, что нам нужно узнать не локальный IP-адрес (который «дал» нам роутер), а внешний/глобальный (у того ПК, который ведет трансляцию). Сделать это можно по-разному, ссылку на инструкцию привожу ниже…

Как узнать свой локальный и глобальный IP-адрес — https://ocomp.info/kak-uznat-ip-adres.html

Например, мне импонирует утилита Speccy — достаточно открыть раздел Network и вы знаете и локальный IP, и внешний…

Speccy — просмотр IP-адресов, раздел Network

Разумеется, подобную информацию также можно узнать в настройках роутера. Скрин ниже в качестве примера.

Глобальный IP-адрес

ШАГ 2

Чтобы к вашей трансляции могли подключиться из интернета — необходимо открыть (пробросить) нужный порт (в нашем случае 8080). По умолчанию, в целях безопасности, роутер не позволяет подключаться из вне…

Делается это обычно в настройках роутера в разделе «Перенаправление портов» (Port Forwarding). Вообще, у меня на блоге есть подробная заметка на эту тему (для начинающих), ссылка ниже…

В помощь! Как пробросить порты на роутере (открываем порты для игр, Skype, uTorrent и др. приложений) — https://ocomp.info/kak-probrosit-portyi-na-routere.html

проброс портов

ШАГ 3

Теперь запускаем VLC на том устройстве, где будем принимать трансляцию и открываем сетевой адрес вида: http://89.118.10.32:8080

Важно!

Вместо 89.118.10.32 — у вас будет свой внешний IP-адрес (который мы уточняли в ШАГЕ 1, см. чуть выше).

Вводим глобальный IP

ШАГ 4

Если вышеприведенные настройки были корректно заданы — то через несколько секунд начнется показ трансляции (см. скрин ниже). Задача выполнена?!

Видео пошло

*

Дополнения приветствуются…

Удачной работы!

?

RSS  (как читать Rss)

Другие записи:

  • Ноутбук и ПК подключены к Wi-Fi роутеру: как передавать между ними файлы, сделать общедоступную …
  • Как изменить расширение файла и его атрибуты…
  • Что делать если не работает клавиатура на ноутбуке
  • Не могу войти в аккаунт Steam, что можно сделать?
  • Как защитить от редактирования ячейки в Excel — запрет ввода ошибочных данных
  • Глянцевая или матовая поверхность лучше? Советы по выбору монитора
  • Как узнать расстояние между городами: сколько километров от одного города до другого, сколько часов …
  • Как ускорить видеокарту AMD (Radeon) — повышение FPS в играх

Локальные сети – далеко не редкость. Они есть в офисах, на предприятиях и даже в частных квартирах и домах. Жизнь, опутанная локальной сетью, на порядок удобнее: быстрее происходит обмен данными. Не каждый знает, что в рамках такой сети можно открыть самое настоящее видео вещание. Наш материал постарается объять необъятное. Мы узнаем: как настроить вещание в локальной сети, а также создадим веб страницу, которая будет доступна всем компьютерам, подключенным в сеть. Открывая ее в браузере, пользователь сможет насладиться просмотром транслируемого видео. Одним из главных инструментов в нашей работе станет VLC Media Player, он позволяет не только воспроизводить аудио и видео файлы, но организовывать потоковое вещание в сети.

Предлагаю более внятно обозначить условия нашей задачи. В нашей сети есть два компьютера. Первый работает под управлением Windows 7 , второй под управлением Ubuntu Linux.

Компьютерам присвоены следующие IP адреса:

192.168.1.2 – компьютер под управлением Windows 7

192.168.1.3 – Ubuntu Linux

Маска подсети: 255.255.255.0

Так как моя сеть организована при помощи роутера, IP адрес – 192.168.1.1 занят этим полезным аппаратом.

Если вы еще не настроили локальную сеть дома, то рекомендую прочитать статью: «Как подключить два компьютера в локальную сеть?»

Теперь непосредственно о том, что нужно сделать:

  • Настроить потоковое вещание фильма с компьютера под управлением Windows 7 на компьютер с Ubuntu Linux. В нашем случае это будет культовый мультфильм советских времен «Корабль-Призрак»

  • Создать на компьютере под управлением Windows 7 сайт, который будет доступен со второго компьютера.

  • На сайте мы разместим страничку, которая будет транслировать наше потоковое видео. Соответственно, открывая этот сайт с компьютера под управлением Ubuntu Linux, без каких либо ухищрений можно будет насладиться просмотром любимого «Корабля-Призрака».

Версия этого замечательно плеера существует, как под Windows, так и под Ubuntu Linux. Это не случайно, ибо построен плеер на основе открытого исходного кода.

В Ubuntu Linux для установки плеера достаточно войти в «Центр приложений», в поиске ввести VLC и нажать кнопку «Установить»

Для того, чтобы скачать и установить плеер под операционную систему Windows 7, необходимо перейти по ссылке:

http://www.videolan.org/vlc/

Это страница разработчиков плеера. Здесь нас интересует одна единственная кнопка «Download VLC”.

vlc.jpg

Нажатие ее перенесет нас на страничку скачивания. Сохраняем дистрибутив с программой к себе на компьютер и запускаем его установку.

Итак, на всех компьютерах установлен VLC Media Player . Переходим на компьютер с Windows 7, открываем плеер и заходим в главное меню «Медиа» — «Потоковое вещание»

vlc2.jpg

Первое, что мы должны сделать — это добавить наш мультфильм в список воспроизведения. Для этого нажимаем кнопку «Добавить» и с помощью проводника Windows выбираем этот фильм на жестком диске нашего компьютера.

vlc3.jpg

После того, как фильм добавлен в плейлист, в нижней части окна нажимаем кнопку «Поток» и переходим на следующую страницу

vlc4.jpg

В следующем окне от нас не требуется практически ничего, кроме как нажать кнопку «Следующий»

vlc5.jpg

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

Первое, на что нужно обратить внимание – это выпадающий список в верхней части. Здесь происходит выбор протоколов, по которым будет происходить вещание. На самом деле про каждый из них можно написать отдельную статью. И, вероятно, в будущем мы это сделаем.

Сегодня же мы просто выберем протокол HTTP и нажмем кнопку «Добавить»

vlc6.jpg

Откроются текстовые поля «Порт» и «Путь». Трогать их не нужно. Оставим все как есть и обратим внимание на выпадающий список «Профиль», что располагается ниже. Здесь мы выберем вариант :

Video – MPEG-2 + MPGA (TS)

vlc7.jpg

После того, как выполнено все вышенаписанное, мы опять нажимаем кнопку «Следующий» и переходим к следующему окну. Здесь нас ожидает своего рода резюме по произведенным ранее действиям. В общем-то, в данном окне наша задача – просто нажать на кнопку «Поток»

vlc8.jpg

Если вы все сделали правильно, то в окне плеера мы увидим скромную надпись «Потоковая передача». Это означает, что трансляция нашего видео торжественно открыта, и можно приступать к просмотру.

vlc9.jpg

Для просмотра мы переместимся на компьютер под управлением Ubuntu Linux, где уже установлен VLC Media Player. Открываем его и заходим в главное меню «Медиа» — «Открыть URL»

vlc10.jpg

Откроется окошко, где в единственное текстовое поле необходимо ввести адрес нашего потока с вещанием.

Вводим: http://192.168.1.2:8080

После чего нажимаем кнопку «Воспроизвести».

Можно смело насладиться просмотром мультфильма «Корабль – призрак»

VLC-html-6f1f9675_624x497_bfa3f907dbe3a67d4c71ff2169432dc6.jpg

Используемые источники:

  • https://webformyself.com/potokovoe-video-chto-eto-takoe/
  • https://ocomp.info/kak-translirovat-video.html
  • http://www.imsprice.ru/internet-lan/90-kompyuternye-seti/222-nastroika-veschaniya-potokovogo-video-v-lokalnoi-seti-s-pomoschy

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации