Rtmp url что это

Стриминг видеозвонков по RTMP

Rtmp url что это. . Rtmp url что это фото. Rtmp url что это-. картинка Rtmp url что это. картинка

Сегодня стриминг-платформы на пике популярности, так как миллионы талантливых людей регулярно делятся своими знаниями – читай, используют стриминг на всю катушку. Так как этот рынок растет, то существует и масса приложений, которые могут стримить видео в реальном времени, используя камеру смартфона или ноутбука. Возможно, вы тоже хотите внедрить в ваше приложение такую функциональность; если так, то спешим обрадовать – теперь Voximplant позволяет прокидывать видеозвонки по RTMP в любой CDN, который поддерживает этот протокол.

Эта функциональность стала возможна благодаря новому модулю Voxengine – StreamingAgent. Под катом вас ждут 5 шагов по настройке этой интеграции, добро пожаловать!

Схема

Rtmp url что это. . Rtmp url что это фото. Rtmp url что это-. картинка Rtmp url что это. картинка

Видеозвонок из мобильного/веб-приложения или SIP приходит в наше облако, которое направляет его в стриминговый CDN. В свою очередь, CDN отправляет аудио- и видеопотоки конечным пользователям – как он обычно и делает. Обратите внимание, что RTMP поддерживает только H.264, поэтому очень важно явно указывать этот кодек при стриминге.

Вам понадобятся

1. Настройки стриминга

Первым делом вам нужно будет получить значения двух параметров, который мы используем в облачном сценарии – stream name/key и server URL. Ниже показано, как получить эти значения на примере Twitch и YouTube.

Twitch

Зайдите в аккаунт, нажмите на аватарку в правом верхнем углу и выберите Video Producer.

Rtmp url что это. cplfn7v5zf luwn8jrv7ptez5ai. Rtmp url что это фото. Rtmp url что это-cplfn7v5zf luwn8jrv7ptez5ai. картинка Rtmp url что это. картинка cplfn7v5zf luwn8jrv7ptez5ai

В разделе Settings выберите Channel, а затем нажмите Copy в верху страницы – так вы получите ваш Primary Stream Key. Обратите внимание, что ключ доступен только при активированной двухфакторной аутентификации. Вставьте это значение в ваш текстовый редактор или просто оставьте эту страницу открытой, чтобы скопипастить значение позже.

Чтобы найти server url, зайдите на страницу stream.twitch.tv/ingests, выберите один из рекомендованных серверов и скопируйте его без последнего слэша, например: rtmp://live-sfo.twitch.tv/app

YouTube

Войдите в аккаунт, нажмите на аватарку в правом верхнем углу и выберите YouTube Studio (beta).

Rtmp url что это. . Rtmp url что это фото. Rtmp url что это-. картинка Rtmp url что это. картинка

Если у вас нет канала на YouTube, то появится диалог о создании канала. Нажмите Create channel и вы увидите дашборд созданного канала с уведомлением, что стриминг будет возможен в течение 24 часов.

Rtmp url что это. . Rtmp url что это фото. Rtmp url что это-. картинка Rtmp url что это. картинка

Находясь в YouTube Studio, через меню слева зайдите в Other features —> Live stream now. Откроется новая страница, внизу которого будет блок Encoder setup. Отсюда необходимо взять значения Server URL и Stream name/key (либо оставить страницу открытой).

Rtmp url что это. . Rtmp url что это фото. Rtmp url что это-. картинка Rtmp url что это. картинка

2. Настройки VOXIMPLANT

Теперь надо сделать настройки со стороны Voximplant. Сначала войдите в свой аккаунт: https://manage.voximplant.com/auth. В меню слева нажмите «Приложения», затем «Новое приложение» и создайте приложение с именем streaming. Зайдите в новое приложение, переключитесь на вкладку «Сценарии», чтобы создать сценарий startStream с таким кодом (не забудьте подставить значения из предыдущего шага в строках 8 и 9):

Это простой сценарий, который инициирует стрим, а также отслеживает все его возможные состояния, как то: Connected, Connection failed, StreamStarted и т.д. – подробности работы сценарии будут чуть ниже. Сейчас же вам надо перейти на вкладку «Роутинг» вашего приложения и нажать «Новое правило». Назовите его streamRule, укажите сценарий startStream и оставьте маску по умолчанию (.*).

Rtmp url что это. . Rtmp url что это фото. Rtmp url что это-. картинка Rtmp url что это. картинка

Последнее, что надо сделать на этом этапе – создать пользователя. Перейдите на вкладку «Пользователи», нажмите «Создать пользователя», укажите имя (например, user1) и пароль, затем кликните «Создать». Эта пара логин-пароль понадобятся нам для аутентификации в веб-клиенте.

Rtmp url что это. . Rtmp url что это фото. Rtmp url что это-. картинка Rtmp url что это. картинка

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

3. Сценарий

Модуль StreamingAgent позволяет разработчикам запускать стримы по RTMP на популярные стиминговые платформы. Чтобы использовать функциональность модуля, мы должны подключить его в самом начале сценария:

Далее необходимо явным образом указать кодек, который будет использоваться при стриминге. Так как многие платформы (Twitch и YouTube в том числе) используют RTMP, который, в свою очередь, поддерживает H.264, именно его мы и укажем:

Если кодек не указан, то может быть вызвано событие StreamingAgentEvents.StreamError, содержащее текст об ошибке:

Затем мы добавляем обработчик для события CallAlerting, чтобы обработать видеозвонок из веб-клиента (да-да, скоро мы до него дойдем). Первым делом мы добавим в обработчик вызов метода createStreamingAgent. У метода есть следующие параметры, большинство из них – обязательные, опциональные отмечены отдельно:

Но мы можем опустить keyframeInterval и использовать applicationName, вот так:

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

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

После обработки событий сценарий отвечает на входящий звонок:

Наконец, мы должны корректно обработать окончание стриминга, когда веб-клиент прекращает отправку видео. Формально, мы можем не использовать и этот обработчик тоже, но при этом сессия закончится только по спустя 60 секунд после прекращения отправки видео. В этом ожидании нет смысла, поэтому лучше завершать сессию, отталкиваясь от событий Disconnected:

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

4. Веб-клиент

Клонируйте или скачайте наше демо videochat. Затем перейдите в папку репозитория и откройте файл WebApp/JS/app.js в текстовом редакторе/IDE. Измените имя приложения на 5 строке и сохраните файл:

Rtmp url что это. . Rtmp url что это фото. Rtmp url что это-. картинка Rtmp url что это. картинка

5. Запускаем стриминг

Вам нужно запустить папку WebApp локально или на вашем веб-сервере. Для локального запуска можете воспользоваться утилитой live-server или приложением Web Server for Chrome. При запуске веб-клиента вы должны передать ему имя вашего аккаунта Voximplant, например:

Запустив клиент, введите пару логин-пароль из пункта 2:

Источник

Какой Протокол Стриминга Лучше для Вас: RTMP или RTSP

Rtmp url что это. 101. Rtmp url что это фото. Rtmp url что это-101. картинка Rtmp url что это. картинка 101

Содержание

Сравним протоколы потоковой передачи RTMP и RTSP. Расскажем, как они работают, какие у каждого плюсы и минусы. Подскажем, как выбрать в вашем случае.

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

Что такое протокол связи

Rtmp url что это. Which Streaming Protocol is Better for You RTMP RTSP. Rtmp url что это фото. Rtmp url что это-Which Streaming Protocol is Better for You RTMP RTSP. картинка Rtmp url что это. картинка Which Streaming Protocol is Better for You RTMP RTSP
Задержка при потоковой передаче данных посредством популярных протоколов связи. Источник

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

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

С видеоданными все так же: если протокол хороший, видеосигнал доберется до зрителя с минимальной задержкой и будет высокого качества. Если же протокол плохо реализован или не соответствует задаче, то видео на экране зрителя может «сыпаться», часто прерываться для подзагрузки, содержать артефакты, вовсе не грузиться или аудио- и видеосигналы будут рассинхронизированы.

Различные протоколы потоковой передачи данных ориентированы на разные аспекты потока (задачи). Обычно их делят на протоколы с адаптивным битрейтом, которые нацелены на уменьшение задержек и буферов для видеопотока, и те, что направлены на максимальное сокращение задержки, что позволяет передавать видеосигнал зрителям практически в реальном времени — live streaming.

RTMP и RTSP — это, пожалуй, два наиболее распространенных протокола, ориентированных на стриминг видео с минимальной задержкой. И хотя они созданы для достижения схожих целей, при пристальном сравнении между ними легко обнаружить существенные различия, которые важно знать.

Что такое RTMP и как он работает

Протокол обмена сообщениями в реальном времени, или RTMP — это стандартизированный протокол для передачи мультимедийных данных через интернет. Данная технология была разработана Macromedia (в настоящее время принадлежит Adobe), и изначально она использовалась для передачи данных между RTMP-сервером и Flash-плеером на устройстве пользователя. Сейчас Flash больше не используется из-за проблем с безопасностью, но RTMP все еще популярен.

Как протокол связи технология RTMP нацелена на обеспечение стабильной и плавной передачи увеличивающихся объемов данных, необходимых для передачи и приема видео в реальном времени. Что достигается посредством фрагментирования потока данных на небольшие одинаковые части (по умолчанию составляют 64 байта для аудиоданных и 128 байтов для видеоданных) и их последовательную передачу на принимающее устройство, которое затем снова собирает их в видеопоток.

После того как Flash устарел в 2020 году (Google и другие крупные игроки полностью прекратили поддержку Adobe Flash Player), RTMP стал использоваться в качестве протокола с открытым исходным кодом для вклада первой мили (передачи от кодировщика к сетевому видеохосту). Именно таким образом RTMP сейчас использует Facebook, YouTube, Periscope и большинство других платформ.

Сейчас RTMP существует в 5 вариантах:

Rtmp url что это. %D0%9A%D0%B0%D0%BA%D0%BE%D0%B9 %D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB %D0%A1%D1%82%D1%80%D0%B8%D0%BC%D0%B8%D0%BD%D0%B3%D0%B0 %D0%9B%D1%83%D1%87%D1%88%D0%B5 %D0%B4%D0%BB%D1%8F %D0%92%D0%B0%D1%81 RTMP %D0%B8%D0%BB%D0%B8 RTSP. Rtmp url что это фото. Rtmp url что это-%D0%9A%D0%B0%D0%BA%D0%BE%D0%B9 %D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB %D0%A1%D1%82%D1%80%D0%B8%D0%BC%D0%B8%D0%BD%D0%B3%D0%B0 %D0%9B%D1%83%D1%87%D1%88%D0%B5 %D0%B4%D0%BB%D1%8F %D0%92%D0%B0%D1%81 RTMP %D0%B8%D0%BB%D0%B8 RTSP. картинка Rtmp url что это. картинка %D0%9A%D0%B0%D0%BA%D0%BE%D0%B9 %D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB %D0%A1%D1%82%D1%80%D0%B8%D0%BC%D0%B8%D0%BD%D0%B3%D0%B0 %D0%9B%D1%83%D1%87%D1%88%D0%B5 %D0%B4%D0%BB%D1%8F %D0%92%D0%B0%D1%81 RTMP %D0%B8%D0%BB%D0%B8 RTSP

Как работает потоковая передача RTMP

Как правило, прямая видеотрансляция работает следующим образом: камера снимает видео (или видеокарта захватывает экран) и отправляет его на хост или сервер видеоплатформы через кодировщик (этот этап обычно называют «первой милей»). Затем сервер или видеоплатформа обрабатывает этот поток и передает его дальше через сеть доставки контента (CDN) для распространения видеопотока на устройства пользователей (это «последняя миля»). Когда еще работал Flash, оба эти этапа проходили посредством RTMP, но с тех пор, как Flash устарел, RTMP больше не работает на «последней миле». С этого момента поток должен перехватить другой протокол связи (HLS, MPEG-DASH, CMAF или WebRTC).

Rtmp url что это. Which Streaming Protocol is Better for You RTMP RTSP4. Rtmp url что это фото. Rtmp url что это-Which Streaming Protocol is Better for You RTMP RTSP4. картинка Rtmp url что это. картинка Which Streaming Protocol is Better for You RTMP RTSP4
На диаграмме показаны четыре отдельных этапа в цепочке доставки видео в реальном времени. Первый этап обычно называют «первой милей» (передача видео от камеры до сервера), а четвертый — «последней милей» (видео доставляется на экран пользователя, например телевизор). Источник

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

Преимущества и недостатки RTMP

Что такое RTSP и как он работает

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

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

Как работает потоковая передача RTSP

Rtmp url что это. Which Streaming Protocol is Better for You RTMP RTSP5. Rtmp url что это фото. Rtmp url что это-Which Streaming Protocol is Better for You RTMP RTSP5. картинка Rtmp url что это. картинка Which Streaming Protocol is Better for You RTMP RTSP5
Схема передачи видео через RTSP. Источник

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

Как только устройство (плеер) узнает список команд и как сделать запрос, он передает запрос описания видеоконтента на сервер потоковой передачи, и сервер отвечает описанием этого мультимедиа. Дальше устройство отправляет запрос на загрузку, а сервер отвечает информацией о транспортном механизме, и дальше инициируется процесс потоковой передачи видео через указанный механизм.

Так как RTSP зависит от выделенного сервера и полагается на RTP, данный протокол не поддерживает шифрование видеоконтента или повторную передачу потерянных пакетов. Кроме того, RTSP не совместим с HTTP, следовательно, он не позволяет напрямую воспроизводить видеопоток в веб-браузере. Для этого нужно конвертировать видеопоток через специальный промежуточный сервер.

Преимущества и недостатки RTSP

Технические характеристики RTMP vs RTSP

Rtmp url что это. %D0%9A%D0%B0%D0%BA%D0%BE%D0%B9 %D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB %D0%A1%D1%82%D1%80%D0%B8%D0%BC%D0%B8%D0%BD%D0%B3%D0%B0 %D0%9B%D1%83%D1%87%D1%88%D0%B5 %D0%B4%D0%BB%D1%8F %D0%92%D0%B0%D1%81 RTMP %D0%B8%D0%BB%D0%B8 RTSP2. Rtmp url что это фото. Rtmp url что это-%D0%9A%D0%B0%D0%BA%D0%BE%D0%B9 %D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB %D0%A1%D1%82%D1%80%D0%B8%D0%BC%D0%B8%D0%BD%D0%B3%D0%B0 %D0%9B%D1%83%D1%87%D1%88%D0%B5 %D0%B4%D0%BB%D1%8F %D0%92%D0%B0%D1%81 RTMP %D0%B8%D0%BB%D0%B8 RTSP2. картинка Rtmp url что это. картинка %D0%9A%D0%B0%D0%BA%D0%BE%D0%B9 %D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB %D0%A1%D1%82%D1%80%D0%B8%D0%BC%D0%B8%D0%BD%D0%B3%D0%B0 %D0%9B%D1%83%D1%87%D1%88%D0%B5 %D0%B4%D0%BB%D1%8F %D0%92%D0%B0%D1%81 RTMP %D0%B8%D0%BB%D0%B8 RTSP2 Rtmp url что это. %D0%9A%D0%B0%D0%BA%D0%BE%D0%B9 %D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB %D0%A1%D1%82%D1%80%D0%B8%D0%BC%D0%B8%D0%BD%D0%B3%D0%B0 %D0%9B%D1%83%D1%87%D1%88%D0%B5 %D0%B4%D0%BB%D1%8F %D0%92%D0%B0%D1%81 RTMP %D0%B8%D0%BB%D0%B8 RTSP3. Rtmp url что это фото. Rtmp url что это-%D0%9A%D0%B0%D0%BA%D0%BE%D0%B9 %D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB %D0%A1%D1%82%D1%80%D0%B8%D0%BC%D0%B8%D0%BD%D0%B3%D0%B0 %D0%9B%D1%83%D1%87%D1%88%D0%B5 %D0%B4%D0%BB%D1%8F %D0%92%D0%B0%D1%81 RTMP %D0%B8%D0%BB%D0%B8 RTSP3. картинка Rtmp url что это. картинка %D0%9A%D0%B0%D0%BA%D0%BE%D0%B9 %D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB %D0%A1%D1%82%D1%80%D0%B8%D0%BC%D0%B8%D0%BD%D0%B3%D0%B0 %D0%9B%D1%83%D1%87%D1%88%D0%B5 %D0%B4%D0%BB%D1%8F %D0%92%D0%B0%D1%81 RTMP %D0%B8%D0%BB%D0%B8 RTSP3 Rtmp url что это. %D0%9A%D0%B0%D0%BA%D0%BE%D0%B9 %D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB %D0%A1%D1%82%D1%80%D0%B8%D0%BC%D0%B8%D0%BD%D0%B3%D0%B0 %D0%9B%D1%83%D1%87%D1%88%D0%B5 %D0%B4%D0%BB%D1%8F %D0%92%D0%B0%D1%81 RTMP %D0%B8%D0%BB%D0%B8 RTSP4. Rtmp url что это фото. Rtmp url что это-%D0%9A%D0%B0%D0%BA%D0%BE%D0%B9 %D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB %D0%A1%D1%82%D1%80%D0%B8%D0%BC%D0%B8%D0%BD%D0%B3%D0%B0 %D0%9B%D1%83%D1%87%D1%88%D0%B5 %D0%B4%D0%BB%D1%8F %D0%92%D0%B0%D1%81 RTMP %D0%B8%D0%BB%D0%B8 RTSP4. картинка Rtmp url что это. картинка %D0%9A%D0%B0%D0%BA%D0%BE%D0%B9 %D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB %D0%A1%D1%82%D1%80%D0%B8%D0%BC%D0%B8%D0%BD%D0%B3%D0%B0 %D0%9B%D1%83%D1%87%D1%88%D0%B5 %D0%B4%D0%BB%D1%8F %D0%92%D0%B0%D1%81 RTMP %D0%B8%D0%BB%D0%B8 RTSP4

Какой протокол лучше для вас

IP-камеры → RTSP. Практически все IP-камеры поддерживают RTSP, что обусловлено тем, что IP-камеры существовали задолго до создания протокола RTMP. И поскольку RTSP был (и остается) достаточно простым и эффективным инструментом для передачи видеосигнала, нет необходимости что-то менять.

В связке RTSP и IP-камеры, сама IP-камера действует как RTSP-сервер. Это означает, что для подключения видеокамеры к серверу IP-камеры и трансляции видео необходимо запустить RTSP-клиент, например, посредством Restreamer Red5 Pro. Данный плагин позволяет подключиться к потоку в качестве клиента и перенаправить его на другие конечные точки, поддерживающие Red5 Pro (браузер, работающий с WebRTC).

IoT-устройства → RTSP или RTMP. Датчики, дроны, роботы, машины и другие устройства Интернета вещей могут выиграть от возможности транслировать видео в реальном времени. Поскольку такая трансляция не только покажет, что «видит» IoT-устройство, но и позволит управлять им в реальном времени. Благо, в большинство этих устройств изначально встроено программное обеспечение с поддержкой RTSP. Однако некоторые производители, такие как DJI, предпочитают RTMP.

Red5 Pro Mobile SDK → RTSP. Обычно мобильные устройства не поддерживают RTSP. Однако его можно легко добавить с помощью Red5 Pro Mobile SDK, который использует RTSP для трансляции видеоконтента в реальном времени на мобильные устройства и обратно через приложение Red5 Pro. Таким образом можно создавать как отдельные соединения источник-зритель, так и вести большое количество трансляций к большому количеству зрителей (подписчиков стримера).

YouTube, Twitch, Facebook → RTMP. Несмотря на отказ от Flash Media Player, RTMP до сих пор используется в качестве протокола приема во многих сторонних потоковых сервисах и приложениях, например в YouTube Live, Twitch и Facebook. В Zoom также встроена поддерживает вывод видео потока по RTMP.

Старый аппаратный кодировщик → RTMP. Многие аппаратные кодировщики видео (особенно это актуально для старых устройств) принимают только RTMP-потоки. Если ваша задача / проект требует использования такого кодировщика, то выбор между RTMP и RTSP для вас будет очевиден.

Заключение

Споры о том, какой протокол потоковой передачи лучше — RTMP или RTSP, продолжаются уже больше двадцати лет, и, похоже, им не будет конца, пока один из протоколов не устареет окончательно. Что, скорее всего, случится еще нескоро из-за резкого роста числа влогеров, стримеров и прочих энтузиастов live-трансляций.

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

Источник

¶ Стриминг в реальном времени

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

¶ Допустимая задержка

¶ Рабочий процесс

На рисунке ниже показан путь от камеры до зрителя, режиссера (на микшере) и оператора (если камера управляется удаленно через веб-инструменты. Это частный случай, в общем можно назвать больше протоколов и вариантов управления. Но рассмотрим именно его, тем более, что он реализован в МИЭМе.

Viewer does not support full SVG 1.1

Каждый этап задействует свои протоколы. В этот раз рассмотрим получение потоков с источников (здесь это камера) и передачу выходного потока (эфирной программы) на стриминговую платформу. В качестве такой платформы по умолчанию в этом курсе будем рассматривать Youtube, но на его месте может быть и VK, OK, Facebook, Twitch и т.д. Можно запустить и собственный сервер. Обобщенно всё стриминговое производство описывается так:

Viewer does not support full SVG 1.1

¶ RTMP vs RTSP

RTSP — Real-Time Streaming Protocol. 1998

RTMP — Real-Time Messaging Protocol. 2009, но использовался ранее

В нашем частном (!) случае мы рассматриваем в качестве источников RTSP устройства: это камеры, кодеры или программные серверы потоков RTSP.

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

Источник

NGINX + nginx-rtmp-module — трансляция видео с веб-сервера

Вещание видео будет осуществляться с помощью модуля для nginx — nginx-rtmp-module.

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

Содержание:

Сборка NGINX + nginx-rtmp-module

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

Установка nginx и пакетов для сборки

Ubuntu:

apt-get install nginx libpcre++-dev libssl-dev libxslt1-dev libgd2-xpm-dev libgeoip-dev

CentOS:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

yum install nginx pcre-devel openssl-devel

Сборка из исходников

Смотрим версию установленного пакета:

Теперь переходим по ссылке https://nginx.org/download и копируем ссылку на установленную версию nginx (архив tar.gz). В моем случае, это была версия 1.10.0.
* обратите внимание, что в данном списке версии идут не по порядку — ориентируйтесь по дате (средняя колонка).

Распаковываем исходник nginx и модуль:

tar xzf nginx-1.10.0.tar.gz

tar xzf master.tar.gz

И переходим в распакованный каталог nginx:

Смотрим, с какими опциями собран уже установленный nginx:

Копируем текст, который идет после configure arguments:

Источник

Русские Блоги

Подробный протокол rtmp

Предисловие

Недавно я узнал о протоколе rtmp. Я всегда был в неведении, когда смотрел официальные документы. Я смотрел его резко в течение двух дней. Теперь я в основном понимаю протокол rtmp. Я хочу объяснить протокол rtmp более ясным, как я думаю. Такому новичку, как я, будет полезно.

Эта статья объяснит протокол rtmp в следующих четырех частях.

1. Новости

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

Формат сообщения

Заголовок сообщения

Идентификаторы сообщений 1-7 используются для сообщений управления протоколом.

Сообщения 8 и 9 используются для передачи аудио и видео данных соответственно.

15-20 сообщений используются для отправки команд в кодировке AMF, отвечающих за взаимодействие между пользователем и сервером, такие как воспроизведение, пауза

Загрузить

Реальные данные, содержащиеся в сообщении в полезной нагрузке. Например, это могут быть образцы аудио или сжатые видеоданные.

Два, блок

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

Формат блока

Блок состоит из головки и груза.

Структура блока
ценностьдлинасмысл
basic header1 байт или 2 байта или 3 байтаЗаголовок блока
chunk msg header11 байт или 2 байта или 3 байтаЗаголовок блока
extended timestamp4byteРасширенная отметка времени
a, основной заголовок блока (основной заголовок)

Этот протокол поддерживает 65597 потоков с идентификаторами от 3 до 65599. ID 0, 1, 2 зарезервированы.

б. Заголовок сообщения чанка

Тип 0 имеет всего 11 байтов и имеет следующий формат:

Тип 1 имеет всего 7 байтов и имеет следующий формат:

Тип 1 имеет всего 3 байта и имеет следующий формат:

Блоки типа 3 не имеют заголовка. Идентификатор потока, длина сообщения и отметка времени не отображаются. Этот тип блока использует те же данные, что и предыдущий блок. Когда сообщение разделено на несколько блоков, все блоки, кроме первого, должны использовать этот тип.

c, расширенная метка времени (расширенная метка времени)

Расширенная временная метка имеет всего 4 байта, и это поле передается только тогда, когда нормальная временная метка в заголовке блочного сообщения установлена ​​на 0x00ffffff. Если значение обычной отметки времени меньше 0x00ffffff, это поле не должно появляться.

Формат данных rtmp подробно описан выше, а содержание конкретного протокола rtmp поясняется ниже.

Загрузить

Подводя итог: сообщение является основной единицей данных rtmp, а блок используется для переупаковки сообщения для передачи по сети.

Три, тип сообщения rtmp

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

1. Сообщение управления протоколом

1.1. Установите размер блока сообщения (Тип сообщения = 1)

Рекомендуется, чтобы максимальный размер блока составлял не менее 128 байт, но он должен быть не менее 1 байта. Каждое направление связи (например, от клиента к серверу) имеет независимые настройки размера блока. Максимальный размер блока поддерживается взаимодействующими сторонами (сервером или клиентом).

Установите общий размер блока данных сообщения 4 байта, формат следующий:

ценностьдлинасмысл
01bitПервый бит должен быть 0
chunk size31bitНовое значение максимального размера блока
1.2. Сообщение о завершении (Тип сообщения = 2)

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

Полезная нагрузка сообщения о завершении имеет всего 4 байта и имеет следующий формат:

ценностьдлинасмысл
chunk stream id4byteИдентификатор блочного потока, сообщения этого блочного потока не будут потеряны
1.3. Подтверждающее сообщение (Тип сообщения = 3)

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

Полезная нагрузка сообщения подтверждения составляет всего 4 байта и имеет следующий формат:

ценностьдлинасмысл
sequence number4byteКоличество полученных байтов
1.4. Подтвердите сообщение о размере окна (Тип сообщения = 5)

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

Полезная нагрузка сообщения размером окна подтверждения составляет всего 4 байта, и имеет следующий формат:

ценностьдлинасмысл
acknowledge window size4byteПодтвердите размер окна
1.5. Установите сообщение о противоположной конечной полосе пропускания (Тип сообщения = 6)

Клиент или сервер отправляет это сообщение для обновления выходной полосы пропускания однорангового узла. Значение выходной полосы пропускания такое же, как и значение размера окна. Если значение, полученное одноранговым узлом в этом сообщении, не совпадает с размером окна, сообщение с подтверждением (спасибо) будет отправлено обратно.

Отправитель может пометить сообщение как жесткое (0), мягкое (1) или динамическое (2) в поле типа ограничения. Если это жесткое ограничение, одноранговый узел должен отправлять данные в соответствии с предоставленной полосой пропускания. Если это мягкий предел, одноранговый узел может гибко определять полосу пропускания, а отправитель может ограничивать ее. Если это динамический предел, пропускная способность может быть жестким или мягким.

2. Управляющее сообщение пользователя (Тип сообщения = 4)

RTMP использует идентификатор типа сообщения 4 для представления управляющих сообщений пользователя. Эти сообщения содержат информацию, используемую уровнем потоковой передачи RTMP. В управляющих сообщениях протокола используются идентификаторы 1, 2, 3, 5 и 6 (описано ранее).
Управляющие сообщения пользователя должны использовать идентификатор потока сообщений 0 (чтобы считаться потоком управления) и использовать идентификатор потока блоков как 2 при отправке в потоке блоков RTMP. Прием сообщения управления протоколом вступает в силу немедленно; при синтаксическом анализе поле отметки времени игнорируется.

Клиент или сервер отправляет это сообщение, чтобы уведомить однорангового узла о некоторых событиях пользовательского управления.

Это сообщение содержит тип события и данные о событии и имеет следующий формат:

3. Командное сообщение RTMP.

3.1. Сообщение с данными (Тип сообщения = 18 или 15)

Клиент или сервер отправляет метаданные и данные пользователя другой стороне через это сообщение. Метаданные включают такие детали, как время создания, продолжительность и тематика данных. Тип сообщения 18 кодируется с помощью AMF0, а тип сообщения 15 кодируется с помощью AMF3.

3.2. Сообщение общего объекта (Тип сообщения = 19 или 16)

Формат следующий:
Rtmp url что это. 2435c6cd8f6be9135a3979c25bd9731b. Rtmp url что это фото. Rtmp url что это-2435c6cd8f6be9135a3979c25bd9731b. картинка Rtmp url что это. картинка 2435c6cd8f6be9135a3979c25bd9731b

событиеописание
Use (=1)Клиент отправляет это событие, чтобы уведомить сервер о создании именованного общего объекта.
Release (=2)Когда клиент удаляет общий объект, он отправляет это событие, чтобы уведомить сервер.
Requeset change (=3)При запросе на изменение связанного значения именованного параметра общего объекта клиент отправляет это сообщение.
Change (=4)Когда соответствующее значение именованного параметра изменяется, сервер отправляет это событие всем клиентам.
Success (=5)После принятия события изменения запроса сервер отвечает на это сообщение запрашивающему клиенту.
SendMessage (=6)Клиент отправляет это событие на сервер, чтобы передать сообщение. После получения этого события сервер рассылает сообщение всем клиентам, включая отправку этого события.
Status (=7)В ответ на состояние ошибки сервер отправляет это событие клиенту.
Clear (=8)Сервер отправляет это событие клиенту для очистки общего объекта. Это событие также используется в качестве ответа на событие использования, отправленное клиентом при подключении.
Remove (=9 )Сервер отправляет это событие, чтобы клиент удалил слот.
Request Remove (=10)Это событие отправляется на сервер, когда клиент удаляет слот.
Use Success(=11)Когда соединение установлено, сервер отправляет это событие клиенту.
3.3. Звуковое сообщение (Тип сообщения = 8)

Клиент и сервер используют это сообщение для отправки аудиоданных на противоположный конец.

3.4. Видео сообщение (Тип сообщения = 9)

Клиент и сервер используют это сообщение для отправки видеоданных на противоположный конец.

3.5. Сводные сообщения (Тип сообщения = 22)

Rtmp url что это. 5207f7203b7caf6deab12882f36c8e17. Rtmp url что это фото. Rtmp url что это-5207f7203b7caf6deab12882f36c8e17. картинка Rtmp url что это. картинка 5207f7203b7caf6deab12882f36c8e17

Идентификатор потока сообщений агрегированного сообщения будет иметь приоритет над идентификатором потока вспомогательного сообщения в агрегированном сообщении.
Разница между меткой времени агрегированного сообщения и первым вложенным сообщением заключается в смещении, которое используется для перенормировки метки времени вложенного сообщения в расписание потока. Смещение добавляется к метке времени каждого суб-сообщения для достижения нормализованного времени потока. Отметка времени первого суб-сообщения должна быть такой же, как отметка времени агрегированного сообщения, поэтому смещение должно быть нулевым.
Указатель возврата содержит размер предыдущего сообщения, включая его заголовок. Заголовок сообщения включен для соответствия формату файла FLV и поиска в обратном направлении.

3.6. Командное сообщение (Тип сообщения = 20 или 17)

Командное сообщение передает команду между клиентом и сервером, закодированную с помощью AMF. Тип сообщения 20 кодируется с помощью AMF0, а тип сообщения 17 кодируется с помощью AMF3.

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

Команды, относящиеся к NetConnection
б. Команды, связанные с NetStream

Четыре, пример анализа процесса передачи rtmp

В этой части будет представлен процесс передачи rtmp и использование wirehark для захвата пакетов и анализа примеров.

1. Пожать руки

(1) Рукопожатие начинается, когда клиент отправляет блоки C0 и C1.

(2) Сервер отправляет блоки S0 и S1 после получения C0.

(3) После получения блоков S0 и S1 клиент отправляет блок C2, а сервер отправляет блок S2 после получения блоков C0 и C1.

(4) Когда клиент получает S2, а сервер получает C2, рукопожатие считается успешным после проверки.

Принципиальная схема выглядит следующим образом:

Rtmp url что это. 3ea0e97746bc57f1b95ed7e0f5c9287b. Rtmp url что это фото. Rtmp url что это-3ea0e97746bc57f1b95ed7e0f5c9287b. картинка Rtmp url что это. картинка 3ea0e97746bc57f1b95ed7e0f5c9287b

C0 и S0 имеют только 1 байт, формат следующий:

ценностьдлинасмысл
version1byteномер версии

C1 и S1 имеют 1526 байт, формат следующий:

ценностьдлинасмысл
time4byteОтметка времени
zero4byteнуль
random bytes1528byteЭто поле используется для проверки

Формат сообщения C2 и S2

Сервер будет сравнивать с S1 после получения C2.

Клиент будет сравнивать с C1 после получения S2.

rtmp использует этот метод, чтобы определить, было ли рукопожатие успешным.

Анализ случая:

(1) Рукопожатие начинается, когда клиент отправляет блоки C0 и C1:

Rtmp url что это. 917e4c48d2639f01663a05aa853089d3. Rtmp url что это фото. Rtmp url что это-917e4c48d2639f01663a05aa853089d3. картинка Rtmp url что это. картинка 917e4c48d2639f01663a05aa853089d3

(2) Сервер отправляет блоки S0 и S1 после получения C0:

Rtmp url что это. b5defb21b7ab601975385c297db1fc65. Rtmp url что это фото. Rtmp url что это-b5defb21b7ab601975385c297db1fc65. картинка Rtmp url что это. картинка b5defb21b7ab601975385c297db1fc65

(3) После получения блоков S0 и S1 клиент отправляет блок C2, а сервер отправляет блок S2 после получения блоков C0 и C1.

Следующее изображение S2 отправлено сервером:
Rtmp url что это. 4a6f88a74a01d9a8e6663a0cdab11ed7. Rtmp url что это фото. Rtmp url что это-4a6f88a74a01d9a8e6663a0cdab11ed7. картинка Rtmp url что это. картинка 4a6f88a74a01d9a8e6663a0cdab11ed7

Видно, что данные такие же, как у C1.

На картинке ниже представлен C2, отправленный клиентом:

Rtmp url что это. 438ccfa4e639bd22dd3121beede89aa4. Rtmp url что это фото. Rtmp url что это-438ccfa4e639bd22dd3121beede89aa4. картинка Rtmp url что это. картинка 438ccfa4e639bd22dd3121beede89aa4

Видно, что данные такие же, как у S1.

2. Установите сетевое соединение.

(1) Клиент отправляет «сообщение о подключении» для запроса подключения.

(2) После того, как служба получает запрос на подключение, она отправляет «сообщение о размере окна подтверждения».

(3) Сервер отправляет клиенту «сообщение об установке полосы пропускания».

(4) После того, как клиент обработал «сообщение об установке полосы пропускания», он отправляет на сервер «сообщение о подтверждении размера окна» (это сообщение будет отправлено только в том случае, если значение сообщения об установке полосы пропускания отличается от размера окна).

(5) Сервер отправляет клиенту «сообщение о начале потока» в управляющем сообщении пользователя.

(6) Сервер отправляет «результат» (_result) в «командном сообщении», чтобы уведомить клиента о состоянии подключения.

Принципиальная схема выглядит следующим образом:

Rtmp url что это. 9f8e08d1e7b42dc1eae2ec95479a01a2. Rtmp url что это фото. Rtmp url что это-9f8e08d1e7b42dc1eae2ec95479a01a2. картинка Rtmp url что это. картинка 9f8e08d1e7b42dc1eae2ec95479a01a2

Анализ случая:

«Команда подключения», которую клиент отправляет на сервер командное сообщение:

Rtmp url что это. 24d1138161df6a49a1e63726a914c428. Rtmp url что это фото. Rtmp url что это-24d1138161df6a49a1e63726a914c428. картинка Rtmp url что это. картинка 24d1138161df6a49a1e63726a914c428

Сервер отправляет клиенту сообщение с окном подтверждения:

Rtmp url что это. 600a38324b0ab67846f45bf1e938f9ae. Rtmp url что это фото. Rtmp url что это-600a38324b0ab67846f45bf1e938f9ae. картинка Rtmp url что это. картинка 600a38324b0ab67846f45bf1e938f9ae

После этого сервер отправил клиенту еще три сообщения. Это немного отличается от того, что говорится в документе, и я этого не совсем понимаю. Надеюсь, кто-нибудь сможет объяснить:

Rtmp url что это. ebced2b93d60c358c2898843faef948b. Rtmp url что это фото. Rtmp url что это-ebced2b93d60c358c2898843faef948b. картинка Rtmp url что это. картинка ebced2b93d60c358c2898843faef948b

Блок-поток содержит несколько сообщений

3. Установите поток

(1) Клиент отправляет на сервер команду «создать поток (createStream)» в «командном сообщении».

(2) После получения сообщения сервер отправляет «результат (_result)» в «командном сообщении».

Принципиальная схема выглядит следующим образом:

Rtmp url что это. e8b56e9ac73ed0395c5847cbe8c84a50. Rtmp url что это фото. Rtmp url что это-e8b56e9ac73ed0395c5847cbe8c84a50. картинка Rtmp url что это. картинка e8b56e9ac73ed0395c5847cbe8c84a50

Анализ случая:

(1) Клиент отправляет на сервер команду createStream в «сообщении команды»:

Rtmp url что это. 041210360638a0aaa87ca207c86affe2. Rtmp url что это фото. Rtmp url что это-041210360638a0aaa87ca207c86affe2. картинка Rtmp url что это. картинка 041210360638a0aaa87ca207c86affe2

(2) Сервер отправляет клиенту «результат (_result)» в «командном сообщении»:

Rtmp url что это. 27ed75b6005afb9c4c65923ad6f26035. Rtmp url что это фото. Rtmp url что это-27ed75b6005afb9c4c65923ad6f26035. картинка Rtmp url что это. картинка 27ed75b6005afb9c4c65923ad6f26035

4. Публикуйте аудио- и видеоданные.

(1) Клиент отправляет «команду публикации» в «командном сообщении».

(2) Сервер отправляет «streambegin» в управляющем сообщении пользователя после получения сообщения.

(3) Клиент начинает отправлять аудио и видео данные.

Принципиальная схема выглядит следующим образом:

Rtmp url что это. dd88dfb9eda09acb16bd79b6422a0ca8. Rtmp url что это фото. Rtmp url что это-dd88dfb9eda09acb16bd79b6422a0ca8. картинка Rtmp url что это. картинка dd88dfb9eda09acb16bd79b6422a0ca8

Анализ случая:

Клиент отправляет «команду публикации» в «командном сообщении»:

Rtmp url что это. 485d8ca6667ebec47004f890fd53a31a. Rtmp url что это фото. Rtmp url что это-485d8ca6667ebec47004f890fd53a31a. картинка Rtmp url что это. картинка 485d8ca6667ebec47004f890fd53a31a

Rtmp url что это. 580b51ed45a534d1f0f41d947038db21. Rtmp url что это фото. Rtmp url что это-580b51ed45a534d1f0f41d947038db21. картинка Rtmp url что это. картинка 580b51ed45a534d1f0f41d947038db21

Клиент отправляет мультимедийную информацию:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *