RTMP

Real Time Messaging Protocol - протокол потоковой передачи данных. Чаще всего используется для передачи потокового видео и аудиопотоков с веб-камер через интернет.

RTMP (кроме RTMFP) — это протокол TCP , который использует постоянные соединения и обеспечивает связь с малой задержкой (по сравнению с HTTP). Для бесперебойной доставки потока и отправки как можно большего количества информации поток делится на фрагменты, размер которых динамически согласовывается между клиентом и сервером.

Варианты протокола RTMP

Существует несколько вариантов протокола RTMP:

  • RTMP (обычный протокол) — работает через TCP с номером порта по умолчанию 1935.
  • RTMPS - RTMP через соединение TLS/SSL .
  • RTMPE — шифрование RTMP на основе совместного использования ключей Диффи-Хеллмана. Предпочтительнее использовать RTMPS из-за несовершенной конструкции и уязвимости, позволяющей проводить атаки типа «человек посередине».
  • RTMPT — завернутый в HTTP. Он может включать RTMP, RTMPS, RTMPE.
  • pRTMP - RTMP с Primetime DRM.
  • RTMFP — в отличии остальных вариантов, работающих по TCP, работает через UDP. Используется для голосового чата и видеочата.

Метод работы RTMP протокола

Вариант TCP использует постоянное соединение для обеспечения связи в реальном времени. Большие блоки данных передаются для обеспечения плавного воспроизведения. Протокол разбивает данные на блоки по 64 байта для аудио и 128 байт для видео и других типов данных. Фрагменты нескольких потоков чередуются и мультиплексируются в одном соединении. Кусок данных достаточно велик, а заголовок фрагмента составляет всего 1 байт, поэтому накладные расходы невелики. Однако на практике отдельные фрагменты обычно не чередуются. Вместо этого чередование и мультиплексирование выполняются на уровне пакетов, создавая пакеты RTMP для нескольких активных каналов в соответствии с их требованиями к пропускной способности, задержке и качеству обслуживания. Когда пакеты чередуются таким образом, они обрабатываются независимо, а не на уровне фрагментов.

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

Как настроить публикацию по RTMP