На вложенных страницах описаны различные медиапротоколы и их особенности. Протоколы, не относящиеся прямо к медиастримингу, описаны в разделе "Другие сетевые протоколы".
Основных приложений, рассматриваемых в курсе "Сетевые видеотехнологии", два:
- Мультимедиа (видеостриминг в интернет, доставка контента, видеосвязь)
- Телевизионное производство. Работа с потоками на съемочной площадке или в распределенном съемочном комплексе.
На этой странице вы найдете краткое обобщение, детальную информацию смотрите на страницах соответствующих протоколов и по ссылкам на дополнительные источники.
Источник данных и протоколы передачи мультимедиа
Для передачи мультимедиа‑данных по сети можно использовать различные протоколы, например, RTSP или WebRTC.
RTSP — протокол прикладного уровня и используется не только для передачи мультимедиа данных, но также и для более общих задач управления потоком данных, работает поверх протоколов транспортного уровня RTP и RTCP. Также для управления сеансом пользователя RTSP использует протокол прикладного уровня SDP. Более подробно все эти протоколы приведены в таблице ниже:
| Уровень | Описание | Аналоги |
|---|---|---|
| прикладной | RTSP** – управление потоком данных (установление и контроль сеанса)**:OPTIONS, DESCRIBE, SETUP, PLAY, TEARDOWN, PAUSE | HTTP: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 делит видео, аудио и синхронизацию на отдельные потоки, что позволяет более гибко управлять ими. Это решение идеально подходит для крупных студий и производственных комплексов, где требуется высокая степень контроля над каждым элементом потока.
Источники
- Архитектура потоковой обработки медиа-данных. Хабр, блог Otus.
- ГигаЧат.
Дополнительная информация
Вложения
- image-10-2.png
- image-10.png
- image-11-2.png
- image-11.png
- image-12-2.png
- image-12.png
- image-13.png
- image-14.png
- image-15.png
- image-2-2.png
- image-2-3.png
- image-2-4.png
- image-2-5.png
- image-2.png
- image-3-2.png
- image-3-3.png
- image-3-4.png
- image-3.png
- image-4-2.png
- image-4-3.png
- image-4.png
- image-5-2.png
- image-5.png
- image-6-2.png
- image-6.png
- image-7-2.png
- image-7.png
- image-8-2.png
- image-8.png
- image-9-2.png
- image-9.png
- image.png