RTMP
RTMP (Real-Time Messaging Protocol) — Adobe/Macromedia (2002). Живёт как ingest-протокол — стример пушит на сервер (YouTube Live, Twitch, VK Play, Kick). Плеер-часть RTMP умерла с Flash.
Транспорт
- TCP порт 1935
- RTMPS — поверх TLS
- RTMPT — tunneled через HTTP (deprecated)
Handshake
3-way custom handshake: C0/C1/C2 ↔ S0/S1/S2 (по 1537 байт). Не совместим с HTTP или чем-либо ещё — отличительная черта.
Chunk stream
Данные разбиваются на chunks (128 или 4096 байт). Внутри — messages (audio, video, control, metadata). Мультиплексирует несколько streams в одну TCP-сессию.
Стример пушит
ffmpeg -re -i input.mp4 \
-c:v libx264 -preset veryfast -b:v 4000k \
-c:a aac -b:a 128k \
-f flv rtmp://live.twitch.tv/app/<stream_key>
Транспорт кодеков
- Видео: H.264 (де-факто), H.265 (расширение, поддержка неровная)
- Аудио: AAC, MP3, Speex
- Контейнер: FLV-подобный
Enhanced RTMP
2023 — Enhanced RTMP: поддержка HEVC, AV1, Opus. Twitch, YouTube начали принимать. Adobe умер, но сообщество (Veovera Software Organization) обновляет спеку.
Latency
2-5 сек ingest → CDN → HLS плеер = 10-30 сек end-to-end. Для low-latency — WHIP+WHEP или SRT+LL-HLS.
Замены
| Кто | Ingest сегодня |
|---|---|
| YouTube | RTMP(S) + HLS ingest + WebRTC (beta) |
| Twitch | RTMP + Media Ingest (WHIP-like) |
| Kick | RTMP + Media Live |
| ProAV | SRT |