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
Бесплатный триал Flussonic Media Server