Перейти к основному содержимому

На вложенных страницах описаны различные медиапротоколы и их особенности. Протоколы, не относящиеся прямо к медиастримингу, описаны в разделе "Другие сетевые протоколы".

Основных приложений, рассматриваемых в курсе "Сетевые видеотехнологии", два:

  1. Мультимедиа (видеостриминг в интернет, доставка контента, видеосвязь)
  2. Телевизионное производство. Работа с потоками на съемочной площадке или в распределенном съемочном комплексе.

На этой странице вы найдете краткое обобщение, детальную информацию смотрите на страницах соответствующих протоколов и по ссылкам на дополнительные источники.

Источник данных и протоколы передачи мультимедиа

Для передачи мультимедиа‑данных по сети можно использовать различные протоколы, например, RTSP или WebRTC.

RTSP — протокол прикладного уровня и используется не только для передачи мультимедиа данных, но также и для более общих задач управления потоком данных, работает поверх протоколов транспортного уровня RTP и RTCP. Также для управления сеансом пользователя RTSP использует протокол прикладного уровня SDP. Более подробно все эти протоколы приведены в таблице ниже:

УровеньОписаниеАналоги
прикладнойRTSP** – управление потоком данных (установление и контроль сеанса)**:OPTIONS, DESCRIBE, SETUP, PLAY, TEARDOWN, PAUSEHTTP:GET, POST, PUT, DELETE, …
транспортныйRTP – передача данных в реальном времени (основан на UDP)UDP
транспортныйRTCP – контроль и синхронизация/ RTCP — ВикипедияUDP
прикладнойSDP** (session description protocol)** – описание сессии (имя сессии, время доступности сессии, URI) Session Description Protocol — Википедия  

При использовании RTSP или RTP одним из наиболее популярных источников и обработчиков данных потока является утилита FFMPEG.

Пример запуска потока с утилитой FFMPEG:

ffmpeg  -re  -i media/s16le-44100hz-example.wav  -c:a copy -f rtp "rtp://127.0.0.1:11111"

RTSP работает как пульт управления видеоплеером. Например: Воспроизведение, пауза и т. д. В этом участвуют два протокола: RTP отвечает за медиаданные, RTCP -- за команды.

RTP — это транспортный протокол, используемый RTSP (RTP использует UDP).

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

Например, если есть потеря пакета на стороне получателя при передаче пакета (кадра) h.264, он может запросить у отправителя полный i‑й кадр.

RTCP — это просто протокол управления, который работает с RTP для QoS Metric (его основная цель — сбор статистики для сеанса RTP).

Сейчас все в браузерах. Можем ли мы транслировать мультимедиа в браузер? Да, именно здесь на сцену выходит WebRTC. WebRTC снова использует протокол RTP.

WebRTC — это стандарт, который помогает выполнять потоковую передачу мультимедиа из/в браузеры. Кроме того, он имеет дополнительные функции.

Несмотря на то, что WebRTC является peer‑to‑peer технологией, вам все равно придется управлять веб‑серверами и платить за них. Чтобы два одноранговых узла могли общаться друг с другом, вам необходимо использовать сигнальный сервер для настройки, управления и завершения сеанса связи WebRTC. В сценариях вещания WebRTC «один ко многим» вам, вероятно, понадобится медиа‑сервер WebRTC, который будет выступать в качестве промежуточного программного обеспечения для мультимедиа. С WebRTC сложно начать. Существует множество концепций, которые вам нужно изучить и освоить: различные интерфейсы WebRTC, кодеки и обработка мультимедиа, трансляция сетевых адресов (NAT) и брандмауэры, UDP (основной базовый протокол связи, используемый WebRTC) и многое другое.

Телевизионное производство

Рассмотрим несколько наиболее популярных протоколов медиастриминга:

RTSP** (Real Time Streaming Protocol)**

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

SRT** (Secure Reliable Transport)**

SRT был создан компанией Haivision для обеспечения надежной и безопасной передачи медиаданных через ненадежные сети, такие как интернет. Этот протокол использует механизмы восстановления потерянных пакетов и шифрования, что делает его идеальным выбором для доставки высококачественного контента при работе в интернет. SRT также обеспечивает низкую задержку при передаче, что особенно важно для прямых трансляций. Это относительно молодой протокол, он, как и RTSP, работает со сжатыми потоками, но предполагает работу не только в локальной сети, но и в интернет. Выпускаются кодеры и камеры, поддерживающие SRT, но поддержка RTSP пока существенно шире. На уровне программной поддержки также не всё гладко: уже есть модули для FFMPEG и GStreamer, но обещанной разработчиками протокола минимальной задержки добиться не удаётся, в то время как RTSP, для которого работу в реальном времени (например, при многокамерном видеопроизводстве) никто и не заявлял, показывает лучшие результаты. Возможно, это связано с "сырыми" версиями соответствующего ПО.

SRT интересен также тем, что любая сторона может быть как клиентом, так клиентом, так и сервером.

NDI** (Network Device Interface)**

NDI, разработанный компанией NewTek, представляет собой высокоскоростной протокол для передачи видео и аудиосигналов по IP-сетям. Он оптимизирован для использования в высокоскоростных (от 1 Гбит/с) локальных сетях и может передавать несколько потоков одновременно без кратного увеличения нагрузки на сеть. NDI широко применяется в студиях вещания и видеопродакшн-комплексах благодаря своей простоте настройки и высокой производительности. Потоки в "классическом" NDI тяжелые: FullHD видео потребляет больше 100 мбит/с и поддерживают цветовую субдискретизацию 4:2:2.

Также существуют версии этого протокола для работы со сжатым видео (от 6 мбит/с 4:2:0).

SMPTE ST 2110

SMPTE ST 2110 — это набор стандартов, разработанных SMPTE, для передачи несжатых видео- и аудиопотоков по IP-сетям. Этот протокол требует высокоскоростную сетевую инфраструктуру (от 10 Гбит/с). В отличие от предыдущих протоколов, ST 2110 делит видео, аудио и синхронизацию на отдельные потоки, что позволяет более гибко управлять ими. Это решение идеально подходит для крупных студий и производственных комплексов, где требуется высокая степень контроля над каждым элементом потока.


Источники

  1. Архитектура потоковой обработки медиа-данных. Хабр, блог Otus.
  2. ГигаЧат.

Дополнительная информация

  1. Video Streaming Protocols: What Are They & How to Choose The Best One. Getstream.io

Вложения