Progress-servis55.ru

Новости из мира ПК
68 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Локальное видео что это

Потоковое видео в Android

В этой заметке я хочу рассказать о некоторых подводных камнях, с которыми можно столкнуться при работе с потоковым видео в Android приложениях. Конкретно, речь пойдёт о конвертации видео и протоколах доставки/воспроизведения видео.
Сразу оговорюсь, что экспертом я в данной области не являюсь, а лишь хочу поделится недавно полученным опытом.

Представим, что перед вами стоит задача реализовать Android приложение, способное проигрывать множество файлов, заливаемых пользователями на ваш сервер. Написать свой youtube, с блекджеком и кодеками. Для этого вам придётся решить как минимум две задачи: конвертации видео к поддерживаемому на Android формате, воспроизведение видео с удалённого источника. Рассмотрим обе эти задачи более подробней.

Конвертация видео

И так, прежде чем воспроизвести какое-то видео нашем Android устройстве, надо это видео перекодировать в поддерживаемый формат. В документации к Android чётко обозначен список этих самых форматов.

Для того, что бы перекодировать файлы, заливаемые пользователями на ваш сервис, или же записать поток с TV-тюнера, вам потребуется помощь специальной утилиты ffmpeg, являющейся де-факто стандартом в отрасли. Подробную инструкцию по её установке можно найти на сайте одноимённого проекта.

Наиболее распространённым сейчас (на мой взгляд) способом хранения видео является контейнер MP4 с использованием кодека H.264 AVC. Их мы, собственно, и рассмотрим.

Первым делом обратите внимание, что Android поддерживает не все возможности кодека H.264, а только определённый набор — профиль, именуемый Baseline Profile(BP). Так, например, в BP не входят такие полезные фичи H.264 как CABAC или B-Frames.

Для нас это значит, что если мы будем использовать эти фичи при кодировании видео, то Android проигрывать это видео будет не обязан. Хотя и может, если ваш телефон достаточно мощный и вендор позаботился об установке и поддержке дополнительных кодеков. Так, например, видео в Main Profile без проблем проигрывается на Samsung Galaxy SII. На телефонах же обычного класса (например, Samsung Galaxy Ace) мы получим сообщение о невозможности воспроизведения видео и ошибку с кодом неверного кодека в logcat‘е.

Но перейдём от теории к практике. Для того, что бы пережать видео, необходимо выполнить следующую команду:

ffmpeg -i in.3gp -f mp4
-vcodec libx264 -vprofile baseline -b:v 1500K
-acodec libfaac -b:a 128k -ar 44100 -ac 2
-y out.mp4

Рассмотрим подробнее каждый из параметров:

  • -i src входной (перекодируемый) файл;
  • -f mp4 используемый видеоконтейнер;
  • -vcodec libx264 используемый видеокодек;
  • -vprofile baseline используемый профиль;
  • -b:v 1500K bitrate;
  • -acodec libfaac используемый аудиокодек;
  • -b:a 128k аудио bitrate;
  • -ar 44100 частота звука;
  • -ac 2 количество аудиопотоков;
  • -y флаг перезаписи выходного файла;

Так же стоит отметить, что можно обойтись и без указания профиля, а явно включить/отключить нужные опции кодека H.264 через параметр -x264opts, так что бы они удовлетворяли условиям BP. Но это же занятие для любителей.

Раздача видео

Самый простой способ воспроизвести видео с удалённого сервера — это скачать его во временное хранилище и воспроизвести локально. Однако, думаю всем понятно, что в виду размеров современных видеозаписей — это не вариант.

Как же быть? Платформа Android предлагает нам нативную поддержку следующих технологий/протоколов:

  • HTTP/HTTPS progressive streaming;
  • HTTP/HTTPS live streaming;
  • RTSP (RTP, SDP);

Рассмотрим их по порядку.

Progressive streaming

Наиболее простой способ раздачи видео с помощью обычного web-сервера, сводящийся по сути к скачиванию заранее подготовленного файла по HTTP(S) протоколу. Вся соль в данном случае заключается в том, что воспроизведение файла начинается не по окончанию загрузки, а как только будет скачано достаточно данных (наполнен некоторый буфер).

Тут стоит уточнить, что при использовании контейнера MP4, необходимо сформировать файл так, что бы метаданные о видео потоке (moov atoms) располагались в начале файла (после атома ftyp), перед видеоданными (mdat atoms). Сделать это можно с помощью обработки файла утилитой qt-faststart:

Основной проблемой progressive streaming‘а является невозможность перемотки видео к нескачанному моменту, наличие достаточного количества свободного места на устройстве и необходимость поддержки большого числа «толстых» клиентов, скачивающих видео, на web-сервере.

Воспроизведение с помощью данной технологии поддерживается платформой Android нативно. Вы без проблем (если не считать канал связи, мощность девайса и наличие свободного места) сможете проиграть удалённый файл с помощью стандартного класса MediaPlayer.

Pseudo streaming

Данная технология является логическим расширением progressive streaming‘a и позволяет решить одну из его главных проблем — перемотки к ещё не скачанному фрагменту. Применима для контейнеров MP4/FLV с кодеком H.264/AAC.

Единственным отличием от progressive streaming‘a в данным случае является, тот факт, что вам потребуется специальный web-сервер, который с учётом временной метки в GET-запросе будет отдавать нужный вам фрагмент видео файла. Примером такого web-сервера естественно может служить православный NGINX с его ngx_http_mp4_module.

Мне не удалось найти какой-либо официальной информации относительно поддержки данного стандарта в Android. Однако, эмперическим путём было установлено, что она присутствует как минимум на устройствах HTC Desire и Samsung Galaxy SII. Однако, хочу обратить внимание, что да же в случае отсутствия нативной поддержки на вашем устройстве всегда можно воспользоваться сторонними плеерами типа MX Player, которые самостоятельно реализуют логику скачки и воспроизведения фрагментов видео с нужной временной меткой, что позволяет организовать перемотку.

Live streaming

Довольно нестандартный протокол передачи данных от компании Apple. Суть его сводится к тому, что раздаваемый файл «пилится» на множество небольших частей, объединяемых спецтальным файлом-playlist’ом формата M3U8. Передача данных происходит по протоколу HTTP(S).

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

Однако, появляются и проблемы. Для «распила» файла и создания playlist’а потребуется ресурсы процессора, время и место на сервере. Для вещания файла в сеть, как и в предыдущих примерах, потребуется HTTP сервер (без каких-либо дополнительных модулей).

«Распилить» видео файл можно использовать VLC:

vlc -I dummy /path/to/pornofilm.mpg vlc://quit —sout ‘#transcode

Воспроизвести такой файл можно по URL localhost/pornofilm.m3u8.

Поддержка HTTP Live Streaming на нативном уровне в Android присутствует начиная с версии 3.0. С помощью сторонних плееров (DicePlayer, MX Player), судя по wiki, можно добиться поддержки с версии 2.2.

Real Time Streaming Protocol (RTSP)

Протокол прикладного уровня с поддержкой состояния, разработанный специально для передачи видео. Формат команд очень напоминает HTTP. Сами же команды напоминают кнопки на обычном кассетном магнитофоне: PLAY, PAUSE, RECORD и т.д.

В отличие от HTTP Live Streaming RTSP не требует разбиения фалов на мелкие части и составления playlist’ов. Нужные части файла будут генерироваться и отдаваться клиенту налету. В качестве RTSP сервера можно использовать VLC.

Стоит заметить, что сам протокол RTSP не определяет способ передачи данных, а делегирует это другим протоколам. Например, RTP. Для вещания файла по протоколу RTP нужно будет запустить VLC со следующими параметрами:

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

Поэтому вернёмся к протоколу RTSP и воспроизведению видео по требованию (Vidoe On Demand). Для того, что бы использовать VLC в качестве RTSP сервера для проигрывания VOD необходимо прежде всего запустить VLC, указав атрибуты RTSP сервера и Telnet интерфейса:

vlc -vvv -I telnet —telnet-password 123 —rtsp-host 127.0.0.1 —rtsp-port 5554

После этого как сервер запущен, необходимо произвести его настройку. Делать это удобнее всего с помощью telnet‘a, так как такой подход даёт возможность настройки налету:

Читать еще:  Зависает воспроизведение видео

setup porno input /path/to/pornofilm.mpg

Для воспроизведения видео (в том числе и на платформе Android) необходимо запросить его по URL rtsp://localhost:5554/pornofilm.

Из недостатков можно отметить тот факт, что HTTP открыт зачастую на всех firewall’ах и проксях… с RTSP в случае политики Deny,Allow всё иначе.

Кроме того, при использовании RTSP-сервера для добавления/удаления файлов на сервере придётся обновлять его конфигурацию (список vod’ов). Да, для этого есть telnet, но это всё равно сложнее, чем просто заливать или удалять файлы из каталогов web-сервера.

Воспроизведение с помощью данной технологии поддерживается платформой Android нативно. Например, с помощью всё того же стандартного класса MediaPlayer.

Multicast

Многие считают, что multicast не работает в Android. Это не совсем так.

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

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

Однако, как показывает практика, проигрывать multicast видео на Android всё можно. В моём случае с этой задачей удачно справился недавно вышедший VLC Beta для Android.

Кроме того с помощью VLC-сервера всегда можно свести воспроизведение multicast‘a к HLS:

vlc -I dummy udp://@192.168.20.1:1234 vlc://quit —sout ‘#transcode

new multicast-porno vod enabled

setup multicast-porno input udp://@192.168.20.1:1234

Попытать удачу с проигрыванием multicast’a на вашем устройстве вы можете, передав плееру URL вида udp://@192.168.20.1:1234.

Что выбрать

Если с форматом видео всё ясно (H.264 BP / MP4), то со спобом дистрибуции вопрос открыт. У каждого их них есть свои достоинства и недостатки.

Первым делом из рассмотрения я бы убрал обычный progressive streaming. Да он работает всегда и везде, но отсутствие перемотки и загрузка всего файла целиком — это уже слишком.

Следующим кандидатом на вылет является live streaming. Главным его недостатком является нативная поддержка в Android начиная с версии 3.0. А игнорирование более 80% пользователей c версией 2.x — не вариант. Хотя тут можно посмотреть на сторонний плеер, или заняться собственной реализацией (свободных наработок для поддержки HLS я, увы, не нашёл).

И последним я бы вычеркнул RTSP. Да, это протокол, разработанный специально для видео. Да, его использование идейно верно. Но есть два момента. Во первых — необходимо постоянно обновлять конфигурацию сервера. Во вторых, HTTP открыт всегда и везде, чего нельзя сказать о RTSP/RTP.

Лично я бы остановился на pseudo streaming. Он позволяет осуществлять перемотку и при этом не скачивать весь файл полностью. От нас требуется только немного донастроить web-сервер.

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

Доброго дня!

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

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

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

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

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

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

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

ШАГ 1

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

VLC

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

  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). См. скриншот ниже.

ШАГ 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-адрес трансляции») .

ШАГ 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 может использоваться другой (если при создании трансляции вы изменили его).

ШАГ 4

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

Читать еще:  Почему прерывается видео на ютубе

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

По интернету

ШАГ 1

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

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

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

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

ШАГ 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

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

NDI – Технология передачи данных по локальным сетям

NDI (интерфейс сетевого устройства) – бесплатный стандарт программного обеспечения, разработанный компанией NewTek. С его помощью видеосовместимые устройства могут передавать видео через локальную сеть. NDI позволяет нескольким видеосистемам идентифицироваться и связываться друг с другом по IP. Решение кодирует, передает и получает много потоков высококачественного, точного видео и звука в режиме реального времени.

Видеосигнал (HD-SDI, HDMI), закодированный с использованием NDI и с низкой задержкой по времени передается по IP в локальной сети. Это делается одним кабелем cat5, который подключен к компьютеру. Это относится к входам и выходам, включая мульти-изображения, графику, воспроизведение, DDR или любой другой тип видео, с которым вы работаете в прямом эфире. Чтобы сделать продукт лучше, компания «Newtek» разработала приложение для двунаправленного потока.

NDI – времена меняются

Дни длинных видеокабелей, волоконно-оптической передачи подходят к завершению. Возможность запуска нескольких сигналов HD 1080p по одному кабелю cat5 скоро станет вариантом для каждой AV-компании, сетевого телевидения и т. д.

NDI – востребованное решение для сети, основное предназначение которой – передача IP-видео. Но базовая настройка может быть реализована на основе стандартной коммуникации. Сеть должна уметь поддерживать несколько потоков аудио, видео и данных надежным, синхронизированным образом, без сбоев.

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

Как это работает

Релиз NewTek так описывает свой продукт: «NDI использует сжатие для обеспечения передачи нескольких видеопотоков через существующую инфраструктуру. В частности применяется дискретное косинусное преобразование (DCT), которое преобразует видеосигналы в элементарные частотные компоненты. Этот метод обычно используется в стандартных форматах кодирования. Как один из самых эффективных продуктов, NDI обеспечивает значительно лучшее сжатие, чем многие кодеки, которые были приняты для использования в профессиональном режиме».

Переход на IP-видео с инновационной технологией сетевого интерфейса NewTek (NDI) в сочетании с готовым программным обеспечением позволит вам гарантированно рассчитывать на следующие преимущества:

  • Эффективное устранение проблем маршрутизации

Измените способ создания видео: используйте источники из сети, а не только устройства, физически подключенные к видео-маршрутизатору SDI. NewTek NDI – это бесплатный, находящийся в свободном доступе стандарт, который каждый желающий может реализовать и подключить к видеооборудованию. Любое устройство (производственные микшеры, системы записи, медиа-серверы) можно обнаруживать и получать доступ к содержимому со всех других узлов. Используйте в производстве любое количество источников.

  • Сокращение затрат и времени установки

Не инвестируйте в новые передающие устройства, дополнительные сети и инфраструктуру. Выгоднее воспользоваться специальным программным обеспечением. Метод основан на сложной системе, которая позволяет отправлять и получать большие объемы информации по привычному стандарту: Ethernet LAN. Эффективность кодирования и беспрецедентная производительность делают возможной обработку нескольких одновременных видеопотоков с высоким качеством и сверхнизкой задержкой.

  • Новые рабочие процессы

Поскольку обычные компьютерные системы способны связываться друг с другом и отправлять или получать данные по сети, стоит ли искать другие способы создания видео по IP? Интерфейс сетевого устройства – это больше, чем альтернатива SDI, которая просто посылает односторонний сигнал в микшер. Это двухсторонний стандарт, который позволяет не только передавать видео и аудио через IP, но также отправлять и получать различные входные и выходные сигналы между несколькими устройствами. Вы можете добиться полного подключения всего находящегося в наличии оборудования.

  • Перспективность

Подготовьте свою производственную базу на будущее, воспользовавшись технологическими достижениями, одновременно защищая свои текущие инвестиции. Совместимость с существующими SDI и IP-технологиями делает продукт независимым от постоянно меняющихся форматов. Решение интегрируется с системами ASPEN или SMPTE 2022, а также со всеми другими стандартами, которые появляются. SDK разработчики и производители видео могут сделать все свои компьютерные устройства совместимыми с IP-сетями, присоединившись к сотням компаний, которые используют продукт.

Переход на новый стандарт трансляции

Переключение на IP- видеопроизводство осуществляется просто и не требует финансовых затрат. Используйте свое текущее оборудование и сеть Ethernet, а также программное обеспечение для производства NewTek NDI, чтобы начать работу по новому стандарту.

Для запуска системы могут потребоваться следующие продукты:

Интеграция большего количества устройств, приложений и файлов в рабочий процесс, смешивание большего количества контента с работами, организация источников и многое другое возможно реализовать на практике с помощью инструментов:

– NDI дляAdobe® Creative Cloud;

– конвертер NDI Scan;

Начните создавать рабочий процесс Live IP-видеопроизводства с помощью программного обеспечения NewTek для сети разработчиков NewTek. Расширьте возможности нескольких источников в реальном времени через IP. Откройте для себя новые способы трансляции нужных сведений.

  • Комплект разработки программного обеспечения (SDK)

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

Использование в Wi-Fi и широкополосных сетях

NDI был разработан для работы на высококачественных гигабитных локальных сетях с использованием технологий TCP и mDNS. Чтобы функционировать через подсети, которые не передают mDNS необходимо использовать инструмент NDI Access, который позволяет вручную вводить IP-адрес компьютеров в другой подсети.

Некоторые пользователи испытывали протокол на средних расстояниях между каналами связи до 15 км. Теперь библиотеки версий от 3.5 и выше по умолчанию используют метод передачи UDP с прямой коррекцией ошибок, которая устраняет требования к задержкам, присущие TCP-соединениям.

Возможные проблемы после внедрения NDI

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

Распространенная трудность – проблема с передачей потока. В процессе работ система обнаруживает источники сигнала в сети, которые используют порт 5353. Сервер обмена сообщениями использует вход 5960. Последующие порты, требуемые передающим устройством для размещения общего количества поддерживаемых потоков, назначаются в порядке возрастания. Эти точки открываются по пути между сетевыми подсетями.

Читать еще:  Как объединить два видео на ютубе

Если вы не видите другие источники NDI в сети, исключите четыре распространенные причины:

  • Порты mDNS блокируются в устройством-отправителем, получателем или сетью.
  • Источники не находятся в одной подсети. Устройства с поддержкой стандарта должны находиться в одной подсети для автоматического обнаружения друг друга.
  • Источники не входят в группы, которые вы контролируете. Простой способ проверить это – использовать инструмент NDI Access Manager. Если видите другие источники в сети, но видео не передается, следовательно номера портов, необходимые для передачи видео, блокируются локальными брандмауэрами или центром сети.
  • NDI Scan Converter в некоторых приложениях показывает черное или неправильное видео.

Когда система имеет две дискретные видеокарты (например, NVIDIA и Intel), Windows не может правильно отображать содержимое для некоторых конкретных приложений (например, Google Chrome). Отключение одного из графических процессоров решит эту проблему.

Чтобы отладить неудачные подключения, выполните следующие действия:

  • Запустите специальные приложения для отправки и получения файлов, такие как Test Patterns и Video Monitor (также входящие в бесплатную загрузку NDI Tools) на том же компьютере. Этот подход обходит инфраструктуру локальной сети. Если элементы не подключаются, проблема заключается либо в конфигурации группы либо в локальных брандмауэрах на основе программного обеспечения.
  • Соедините два компьютера вместе с помощью сетевого кроссовера. Если соединения NDI при этом работают, но при подключении к сети не функционируют, то причина неисправности – неполадки в сетевой инфраструктуре.

Что такое потоковая передача мультимедиа?

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

В чем разница между потоковой передачей и загрузкой?

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

Можно подумать об этом, как о разнице между озером и рекой: оба содержат воду, и река может содержать столько же воды, сколько озеро. Разница в том, что в реке вода не находится в одном и том же месте в одно и то же время. Загруженный видеофайл больше похож на озеро, поскольку он занимает много места на жестком диске (и для перемещения озера требуется много времени). Потоковое видео больше похоже на реку, в том, что данные видео непрерывно, быстро течет в браузер пользователя.

Как работает потоковая передача мультимедиа?

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

Отправка видео через интернет, в отличие от отправки текста и неподвижных изображений, требует более быстрого метода передачи данных, чем TCP/IP, который отдает приоритет надежности над скоростью.

Как протокол UDP улучшает потоковую передачу?

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

Большая часть интернета использует TCP или протокол управления передачей. Этот транспортный протокол предусматривает тщательное взаимное подтверждение для открытия соединения. Как только соединение открыто, и два коммутирующих устройства передают пакеты назад и вперед, TCP гарантирует, что передача надежна, что все пакеты поступают в порядке.

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

Если TCP похож на службу доставки пакетов, которая требует, чтобы получатель подписал его, то UDP похож на службу доставки, которая оставляет пакеты на переднем крыльце, не стуча в дверь, чтобы получить подпись. Служба доставки TCP теряет меньше пакетов, но служба доставки UDP работает быстрее, так как пакеты могут быть выгружены, даже если их никто не подписывает.

Потоковая передача и буферизация

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

Какие факторы замедляют стриминг?

На стороне сети:

  • Задержки в сети: различные факторы задержки воздействия, в том числе контент, который пользователи пытаются получить.
  • Перегрузка сети: если через сеть передается слишком много данных, это может снизить производительность потоковой передачи.

На стороне пользователя:

  • Проблемы wi-fi: перезапуск маршрутизатора LAN или переключение на провод вместо Wi-Fi может помочь улучшить производительность потоковой передачи.
  • Медленные клиентские устройства: для воспроизведения видео требуется большая вычислительная мощность. Если устройство, на котором просматривается потоковое видео, имеет много других работающих процессов, или просто медленно в целом, потоковое производительность может быть затронута.
  • Недостаточно пропускной способности: для потокового видео домашним сетям требуется около 4 Мбит/с пропускной способности. Для видео высокой четкости им, вероятно, потребуется больше.

Как сделать потоковую передачу быстрее?

Потоковая передача подвержена тем же задержкам и снижению производительности, что и другие виды веб-контента. Поскольку потоковое содержимое хранится в другом месте, расположение хостинга имеет большое значение, как и в случае с любым типом содержимого, доступного через интернет. Если пользователь в Нью-Йорке пытается выполнить потоковую передачу с сервера Netflix в Лос Гатос, видеоконтент должен будет пересечь 3000 миль, чтобы достичь пользователя, и видео придется потратить много времени на буферизацию или может даже не воспроизводиться вообще. По этой причине Netflix и другие поставщики потоковой передачи широко используют распределенные сети доставки контента (CDN), хранящие контент в местах по всему миру, которые намного ближе к пользователям.

CDN оказывают огромное положительное влияние на производительность потоковой передачи. Cloudflare Stream Delivery использует сеть CDN Cloudflare для хранения видеоконтента во всех точках присутствия Cloudflare по всему миру. В результате сокращается задержка для времени запуска видео и уменьшается буферизация.

Ссылка на основную публикацию
Adblock
detector