Real Time Messaging Protocol or RTMP is mainly serving for high speed transmission of audio, video and data between flash player and a server. Initially developed by Macromedia, the protocol is now owned by Adobe, and specifications about it have only partially been released for public use.
According to those specifications, the RTMP protocol has multiple variations, i.e. the “plain” RTMP protocol, RTMPS which is RTMP over an TLS/SSL connection, RTMPE which is RTMP encrypted using Adobe’s own security mechanism, and RTMPT which is encapsulated within HTTP requests to traverse firewalls.
The use of RTMP is to avoid latency in communication, mainly, deliver audio or video streams smoothly, and by splitting them in fragments, make them interleaved and multiplexed over a single connection. Also, you save bandwidth.
Interleaving and multiplexing is done at the packet level, with RTMP packets across several different active channels being interleaved in such a way as to ensure that each channel meets its bandwidth, latency, and other quality-of-service requirements. RTMP defines several virtual channels on which packets may be sent and received, and which operate independently of each other. During a regular RTMP session, several channels may be active simultaneously at any given time.
In result, RTMP encapsulates MP3 or AAC audio and FLV1 video multimedia streams, and can make remote procedure calls, or RPCs.
The Original Flash Streaming Protocol
RTMP is also considered the original flash streaming protocol as developed by Macromedia, then Adobe for streaming audio, video, and data, between Flash media Server and Flash player. A two way connection is established between Flash server and Flash player which allows for a real-time communication back and forth. Example of data that can be communicated is:
live video data
live audio data
coordinates X and Y in a multiplayer game, for example
How it Works?
Flash player first contacts the Flash media server and an RTMP connection is then established. An RTMP connection is said to begin with a “handshake”. Flash player requests a specific stream, for example – video. Once the media server receives the request (for the stream), it is sent to Flash SWF directly over the RTMP connection. The same stream can be sent to any number of clients that request it, provided the bandwidth is good enough on both sides to deliver all the simultaneous streams. Additional media servers can be chained together, which in result improves capacity, or allows for – large events.