Real-Time Messaging Protocol (RTMP) is a
communication protocol
A communication protocol is a system of rules that allows two or more entities of a communications system to transmit information via any variation of a physical quantity. The protocol defines the rules, syntax, semantics (computer science), sem ...
for
streaming
Streaming media refers to multimedia delivered through a network for playback using a media player. Media is transferred in a ''stream'' of packets from a server to a client and is rendered in real-time; this contrasts with file downl ...
audio, video, and data over the Internet. Originally developed as a
proprietary protocol
In telecommunications, a proprietary protocol is a communications protocol owned by a single organization or individual.
Intellectual property rights and enforcement
Ownership by a single organization gives the owner the ability to place restricti ...
by
Macromedia
Macromedia, Inc. was an American graphics, multimedia, and web development software company headquartered in San Francisco, California, that made products such as Adobe Flash, Flash and Adobe Dreamweaver, Dreamweaver. It was purchased by its riv ...
for streaming between
Flash Player
Adobe Flash Player (known in Internet Explorer, Firefox, and Google Chrome as Shockwave Flash) is a discontinuedExcept in China, where it continues to be used, as well as Harman for enterprise users. computer program for viewing multimedia c ...
and the Flash Communication Server,
Adobe
Adobe (from arabic: الطوب Attub ; ) is a building material made from earth and organic materials. is Spanish for mudbrick. In some English-speaking regions of Spanish heritage, such as the Southwestern United States, the term is use ...
(which acquired Macromedia) has released an incomplete version of the specification of the protocol for public use.
The RTMP protocol has multiple variations:
# RTMP proper, the "plain" protocol which works on top of
Transmission Control Protocol
The Transmission Control Protocol (TCP) is one of the main communications protocol, protocols of the Internet protocol suite. It originated in the initial network implementation in which it complemented the Internet Protocol (IP). Therefore, th ...
(TCP) and uses port number 1935 by default.
# RTMPS, which is RTMP over a
Transport Layer Security
Transport Layer Security (TLS) is a cryptographic protocol designed to provide communications security over a computer network, such as the Internet. The protocol is widely used in applications such as email, instant messaging, and voice over ...
(TLS/SSL) connection.
# RTMPE, which is RTMP encrypted using Adobe's own security mechanism. While the details of the implementation are proprietary, the mechanism uses industry standard cryptographic primitives.
# RTMPT, which is
encapsulated within
HTTP
HTTP (Hypertext Transfer Protocol) is an application layer protocol in the Internet protocol suite model for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web, wher ...
requests to traverse
firewalls. RTMPT is frequently found utilizing cleartext requests on TCP
ports Ports collections (or ports trees, or just ports) are the sets of makefiles and Patch (Unix), patches provided by the BSD-based operating systems, FreeBSD, NetBSD, and OpenBSD, as a simple method of installing software or creating binary packages. T ...
80 and 443 to bypass most corporate traffic filtering. The encapsulated session may carry plain RTMP, RTMPS, or RTMPE packets within.
# RTMFP, which is RTMP over
User Datagram Protocol
In computer networking, the User Datagram Protocol (UDP) is one of the core communication protocols of the Internet protocol suite used to send messages (transported as datagrams in Network packet, packets) to other hosts on an Internet Protoco ...
(UDP) instead of TCP, replacing RTMP Chunk Stream. The Secure
Real-Time Media Flow Protocol suite has been developed by Adobe Systems and enables end‐users to connect and communicate directly with each other (P2P).
# E-RTMP, or Enhanced RTMP, is an enhancement to the RTMP and FLV specifications designed to improve streaming capabilities while maintaining compatibility with existing RTMP infrastructure.
E-RTMP enhances RTMP by adding features such as advanced timestamp precision, multitrack capabilities, expanded codec support, FourCC signaling, and a reconnect request feature.
While the primary motivation for RTMP was to be a protocol for playing
Flash video, it is also used in some other applications, such as the
Adobe LiveCycle Data Services ES.
Basic operation
RTMP is a TCP-based protocol which maintains persistent connections and allows low-latency communication. To deliver streams smoothly and transmit as much information as possible, it splits streams into fragments, and their size is negotiated dynamically between the client and server. Sometimes, it is kept unchanged; the default fragment sizes are 64 bytes for audio data, and 128 bytes for video data and most other data types. Fragments from different streams may then be interleaved, and
multiplexed
In telecommunications and computer networking, multiplexing (sometimes contracted to muxing) is a method by which multiple analog or digital signals are combined into one signal over a shared medium. The aim is to share a scarce resource— ...
over a single connection. With longer data chunks, the protocol thus carries only a one-byte header per fragment, so incurring very little
overhead. However, in practice, individual fragments are not typically interleaved. Instead, the 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. Packets interleaved in this fashion are treated as indivisible, and are not interleaved on the fragment level.
The RTMP defines several virtual channels on which packets may be sent and received, and which operate independently of each other. For example, there is a channel for handling RPC requests and responses, a channel for video stream data, a channel for audio stream data, a channel for out-of-band control messages (fragment size negotiation, etc.), and so on. During a typical RTMP session, several channels may be active simultaneously at any given time. When RTMP data is encoded, a packet header is generated. The packet header specifies, amongst other matters, the ID of the channel on which it is to be sent, a timestamp of when it was generated (if necessary), and the size of the packet's payload. This header is then followed by the actual payload content of the packet, which is fragmented according to the currently agreed-upon fragment size before it is sent over the connection. The packet header itself is never fragmented, and its size does not count towards the data in the packet's first fragment. In other words, only the actual packet payload (the media data) is subject to fragmentation.
At a higher level, the RTMP encapsulates
MP3
MP3 (formally MPEG-1 Audio Layer III or MPEG-2 Audio Layer III) is a coding format for digital audio developed largely by the Fraunhofer Society in Germany under the lead of Karlheinz Brandenburg. It was designed to greatly reduce the amount ...
or
AAC
AAC may refer to:
Aviation
* Advanced Aircraft, a company from Carlsbad, California
* Airborne aircraft carrier, a type of aircraft
* Alaskan Air Command, a radar network
* American Aeronautical Corporation, a company from Port Washington, New ...
audio and
FLV1 video multimedia streams, and can make
remote procedure call
In distributed computing, a remote procedure call (RPC) is when a computer program causes a procedure (subroutine) to execute in a different address space (commonly on another computer on a shared computer network), which is written as if it were a ...
s (RPCs) using the
Action Message Format
Action Message Format (AMF) is a binary format used to serialize object graphs such as ActionScript objects and XML, or send messages between an Adobe Flash client and a remote service, usually a Flash Media Server or third party alternatives. T ...
. Any RPC services required are made asynchronously, using a single client/server request/response model, such that
real-time communication
Real-time communication (RTC) is a category of software protocols and communication hardware media that gives real-time guarantees, which is necessary to support real-time guarantees of real-time computing. Real-time communication Protocols (comp ...
is not required.
Encryption
RTMP sessions may be encrypted using either of two methods:
* Using industry standard
TLS/SSL mechanisms. The underlying RTMP session is simply wrapped inside a normal TLS/SSL session.
* Using RTMPE, which wraps the RTMP session in a lighter-weight encryption layer.
HTTP tunneling
In RTMP Tunneled (RTMPT), RTMP data is
encapsulated and exchanged via
HTTP
HTTP (Hypertext Transfer Protocol) is an application layer protocol in the Internet protocol suite model for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web, wher ...
, and messages from the client (the media player, in this case) are addressed to port 80 (the default for HTTP) on the server.
While the messages in RTMPT are larger than the equivalent non-tunneled RTMP messages due to HTTP headers, RTMPT may facilitate the use of RTMP in scenarios where the use of non-tunneled RTMP would otherwise not be possible, such as when the client is behind a
firewall
Firewall may refer to:
* Firewall (computing), a technological barrier designed to prevent unauthorized or unwanted communications between computer networks or hosts
* Firewall (construction), a barrier inside a building, designed to limit the spre ...
that blocks non-HTTP and non-HTTPS outbound traffic.
The protocol works by sending commands through the POST URL, and AMF messages through the POST body. An example is
POST /open/1 HTTP/1.1
for a connection to be opened.
Specification document and patent license
Adobe has released a specification for version 1.0 of the protocol, dated 21 December 2012. The web
landing page
In online marketing, a landing page, sometimes known as a "lead capture page", "single property page", "static page", "squeeze page" or a "destination page", is a single web page that appears in response to clicking on a search engine optimized s ...
leading to that specification notes that "To benefit customers who want to protect their content, the open RTMP specification does not include Adobe's unique secure RTMP measures".
A document accompanying the Adobe specification grants "non-exclusive, royalty-free, nontransferable, non-sublicensable, personal, worldwide"
patent license
A license (American English) or licence (Commonwealth English) is an official permission or permit to do, use, or own something (as well as the document of that permission or permit).
A license is granted by a party (licensor) to another part ...
to all implementations of the protocol, with two restrictions: one forbids use for intercepting streaming data ("any technology that intercepts streaming video, audio and/or data content for storage in any device or medium"), and another prohibits circumvention of "technological measures for the protection of audio, video and/or data content, including any of Adobe’s secure RTMP measures".
Patents and related litigation
Stefan Richter, author of some books on
Flash
Flash, flashes, or FLASH may refer to:
Arts, entertainment, and media
Fictional aliases
* The Flash, several DC Comics superheroes with super speed:
** Flash (Jay Garrick)
** Barry Allen
** Wally West, the first Kid Flash and third adult Flash ...
, noted in 2008 that while Adobe is vague as to which patents apply to RTMP, appears to be one of them.
In 2011, Adobe did sue Wowza Media Systems claiming, among other things, infringement of their RTMP patents. In 2015, Adobe and Wowza announced that the lawsuits have been settled and dismissed with prejudice.
Packet structure

Packets are sent over a TCP connection, which is established first between client and server. They contain a header and a body which, in the case of connection and control commands, is encoded using the
Action Message Format
Action Message Format (AMF) is a binary format used to serialize object graphs such as ActionScript objects and XML, or send messages between an Adobe Flash client and a remote service, usually a Flash Media Server or third party alternatives. T ...
(AMF). The header is split into the ''Basic Header'' (shown as detached from the rest, in the diagram) and ''Chunk Message Header''. The Basic Header is the only constant part of the packet and is usually composed of a single ''composite'' byte, where the two most significant bits are the Chunk Type (''fmt'' in the specification) and the rest form the Stream ID. Depending on the value of the former, some fields of the Message Header can be omitted, and their value derived from previous packets while depending on the value of the latter, the Basic Header can be extended with one or two extra bytes (as in the case of the diagramme that has three bytes in total (c)). If the value of the remaining six bits of the ''Basic Header'' (BH) (least significant) is 0 then the BH is two bytes and represents from Stream ID 64 to 319 (64+255); if the value is 1, then the BH is three bytes (with last two bytes encoded as 16bit Little Endian) and represents from Stream ID 64 to 65599 (64+65535); if the value is 2, then BH is one byte and is reserved for low-level protocol control messages and commands. The Chunk Message Header contains meta-data information such as the message size (measured in bytes), the ''Timestamp Delta'' and ''Message Type''. This last value is a single byte and defines whether the packet is an audio, video, command or "low level" RTMP packet such as an RTMP Ping.
An example is shown below as captured when a flash client executes the following code:
var stream:NetStream = new NetStream(connectionObject);
this will generate the following Chunk:
The packet starts with a ''Basic Header'' of a single byte (0x03) where the two most significant bits (b00000011) define a chunk header type of 0 while the rest (b00000011) define a Chunk Stream ID of 3. The four possible values of the header type and their significance are:
* b00 = 12 byte header (full header).
* b01 = 8 bytes - like type b00, not including message ID (4 last bytes).
* b10 = 4 bytes - Basic Header and timestamp (3 bytes) are included.
* b11 = 1 byte - only the Basic Header is included.
The last type (b11) is always used in the case of aggregate messages where, in the example above, the second message will start with an id of 0xC3 (b11000011) and would mean that all Message Header fields should be derived from the message with a stream Id of 3 (which would be the message right above it). The six least significant bits that form the Stream ID can take values between 3 and 63. Some values have special meaning, like 1 that stands for an extended ID format, in which case there will be two bytes following that. A value of two is for low level messages such as Ping and Set Client Bandwidth.
The next bytes of the RTMP Header (including the values in the example packet above) are decoded as follows:
* byte #1 (0x03) = Chunk Header Type.
* byte #2–4 (0x000b68) = Timestamp delta.
* byte #5–7 (0x000019) = Packet Length - in this case it is 0x000019 = 25 bytes.
* byte #8 (0x14) = Message Type ID - 0x14 (20) defines an AMF0 encoded ''command'' message.
* byte #9–12 (0x00000000) = Message Stream ID. This is in little-endian order.
The Message Type ID byte defines whether the packet contains audio/video data, a remote object or a command. Some possible values for are:
* 0x01 = Set Packet Size Message.
* 0x02 = Abort.
* 0x03 = Acknowledge.
* 0x04 = Control Message.
* 0x05 = Server Bandwidth
* 0x06 = Client Bandwidth.
* 0x07 = Virtual Control.
* 0x08 = Audio Packet.
* 0x09 = Video Packet.
* 0x0F = Data Extended.
* 0x10 = Container Extended.
* 0x11 = Command Extended (An AMF3 type command).
* 0x12 = Data (Invoke (onMetaData info is sent as such)).
* 0x13 = Container.
* 0x14 = Command (An AMF0 type command).
* 0x15 = UDP
* 0x16 = Aggregate
* 0x17 = Present
Following the header, 0x02 denotes a string of size 0x000C and values 0x63 0x72 ... 0x6D ("createStream" command). Following that we have a 0x00 (number) which is the transaction id of value 2.0. The last byte is 0x05 (null) which means there are no arguments.
Invoke Message Structure (0x14, 0x11)
Some of the message types shown above, such as Ping and Set Client/Server Bandwidth, are considered low level RTMP protocol messages which do not use the AMF encoding format. Command messages on the other hand, whether AMF0 (Message Type of 0x14) or AMF3 (0x11), use the format and have the general form shown below:
(String)
(Number)
(Mixed) ex. Null, String, Object:
The transaction id is used for commands that can have a reply. The value can be either a string like in the example above or one or more objects, each composed of a set of key/value pairs where the keys are always encoded as strings while the values can be any AMF data type, including complex types like arrays.
Control Message Structure (0x04)
Control messages are not AMF encoded. They start with a stream Id of 0x02 which implies a full (type 0) header and have a message type of 0x04. The header is followed by six bytes, which are interpreted as such:
* #0–1 - Control Type.
* #2–3 - Second Parameter (this has meaning in specific Control Types)
* #4–5 - Third Parameter (same)
The first two bytes of the message body define the Ping Type, which can apparently take six possible values.
* Type 0 - Clear Stream: Sent when the connection is established and carries no further data
* Type 1 - Clear the Buffer.
* Type 2 - Stream Dry.
* Type 3 - The client's buffer time. The third parameter holds the value in millisecond.
* Type 4 - Reset a stream.
* Type 6 - Ping the client from server. The second parameter is the current time.
* Type 7 - Pong reply from client. The second parameter is the time when the client receives the Ping.
* Type 8 - UDP Request.
* Type 9 - UDP Response.
* Type 10 - Bandwidth Limit.
* Type 11 - Bandwidth.
* Type 12 - Throttle Bandwidth.
* Type 13 - Stream Created.
* Type 14 - Stream Deleted.
* Type 15 - Set Read Access.
* Type 16 - Set Write Access.
* Type 17 - Stream Meta Request.
* Type 18 - Stream Meta Response.
* Type 19 - Get Segment Boundary.
* Type 20 - Set Segment Boundary.
* Type 21 - On Disconnect.
* Type 22 - Set Critical Link.
* Type 23 - Disconnect.
* Type 24 - Hash Update.
* Type 25 - Hash Timeout.
* Type 26 - Hash Request.
* Type 27 - Hash Response.
* Type 28 - Check Bandwidth.
* Type 29 - Set Audio Sample Access.
* Type 30 - Set Video Sample Access.
* Type 31 - Throttle Begin.
* Type 32 - Throttle End.
* Type 33 - DRM Notify.
* Type 34 - RTMFP Sync.
* Type 35 - Query IHello.
* Type 36 - Forward IHello.
* Type 37 - Redirect IHello.
* Type 38 - Notify EOF.
* Type 39 - Proxy Continue.
* Type 40 - Proxy Remove Upstream.
* Type 41 - RTMFP Set Keepalives.
* Type 46 - Segment Not Found.
''Pong'' is the name for a reply to a Ping, with the values used as seen above.
ServerBw/ClientBw Message Structure (0x05, 0x06)
This relates to messages that have to do with the client up-stream and server down-stream bit-rate. The body is composed of four bytes showing the bandwidth value, with a possible extension of one byte which sets the Limit Type. This can have one of three possible values which can be: hard, soft or dynamic (either soft or hard).
Set Chunk Size (0x01)
The value received in the four bytes of the body. A default value of 128 bytes exists, and the message is sent only when a change is wanted.
Protocol
Handshake
After establishing a TCP connection, an RTMP connection is established first, performing a handshake through the exchange of three packets from each side (also referred to as Chunks in the official documentation). These are referred in the official spec as C0-2 for the client sent packets and S0-2 for the server side respectively and are not to be confused with RTMP packets that can be exchanged only after the handshake is complete. These packets have a structure of their own and C1 contains a field setting the "epoch" timestamp, but since this can be set to zero, as is done in third party implementations, the packet can be simplified. The client initialises the connection by sending the C0 packet with a constant value of 0x03 representing the current protocol version. It follows straight with C1 without waiting for S0 to be received first which contains 1536 bytes, with the first four representing the epoch timestamp, the second four all being 0, and the rest being random (and which can be set to 0 in third party implementations). C2 and S2 are an echo of S1 and C1 respectively, except with the second four bytes being the time the respective message was received (instead of 0). After C2 and S2 are received, the handshake is considered complete.
Connect
At this point, the client, and server can negotiate a connection by exchanging
AMF encoded messages. These include key value pairs which relate to variables that are needed for a connection to be established. An example message from the client is:
(Invoke) "connect"
(Transaction ID) 1.0
(Object1)
The Flash Media Server and other implementations uses the concept of an "app" to conceptually define a container for audio/video and other content, implemented as a folder on the server root which contains the media files to be streamed. The first variable contains the name of this app as "sample" which is the name provided by the Wowza Server for their testing. The
flashVer
string is the same as returned by the Action-script
getversion()
function. The
audioCodec
and
videoCodec
are encoded as
doubles and their meaning can be found in the original spec. The same is true for the
videoFunction
variable, which in this case is the self-explanatory constant. Of special interest is the
objectEncoding
which will define whether the rest of the communication will make use of the extended
AMF3 format or not. As version 3 is the current default, the flash client has to be told explicitly in Action-script code to use AMF0 if that is requested. The server then replies with a ServerBW, a ClientBW and a SetPacketSize message sequence, finally followed by an Invoke, with an example message.
(Invoke) "_result"
(transaction ID) 1.0
(Object1)
(Object2)
Some values above are serialised into properties of a generic Action-script Object, which is then passed to the NetConnection event listener. The
clientId
will establish a number for the session to be started by the connection. Object encoding must match the value previously set.
Play video
To start a video stream, the client sends a "createStream" invocation followed by a ping message, followed by a "play" invocation with the file name as argument. The server will then reply with a series of "onStatus" commands followed by the video data as encapsulated within RTMP messages.
After a connection is established, media is sent by encapsulating the content of
FLV tags into RTMP messages of type 8 and 9 for audio and video, respectively.
HTTP tunneling (RTMPT)
This refers to the HTTP tunneled version of the protocol. It communicates over port 80 and passes the
AMF data inside HTTP POST request and responses. The sequence for connection is as follows:
POST /fcs/ident2 HTTP/1.1
Content-Type: application/x-fcs\r\n
HTTP/1.0 404 Not Found
POST /open/1 HTTP/1.1
Content-Type: application/x-fcs\r\n
HTTP/1.1 200 OK
Content-Type: application/x-fcs\r\n
1728724019
The first request has an path, and the correct reply is a 404 Not Found error. The client then sends an /open/1 request where the server must reply with a 200 ok appending a random number that will be used as the session identifier for the said communication. In this example, 1728724019 is returned in the response body.
POST /idle/1728724019/0 HTTP/1.1
HTTP/1.1 200 OK
0x01
From now on, the is a polling request where the
session id
In computer science, a session identifier, session ID or session token is a piece of data that is used in network communications (often over HTTPS) to identify a session, a series of related message exchanges. Session identifiers become necessar ...
has been generated and returned from the server and the sequence is just a number that increments by one for every request. The appropriate response is a 200 OK, with an integer returned in the body signifying the interval time.
AMF data is sent through
Software implementations
RTMP is implemented at these three stages:
* Live video encoder
* Live and on-demand media streaming server
* Live and on-demand client
rtmpdump
The open-source RTMP client command-line tool
rtmpdump is designed to play back or save to disk the full RTMP stream, including the
RTMPE protocol Adobe uses for encryption. RTMPdump runs on Linux, Android, Solaris, , and most other Unix-derived operating systems, as well as Microsoft Windows. Originally supporting all versions of 32-bit Windows including Windows 98, from version 2.2 the software will run only on Windows XP and above (although earlier versions remain fully functional).
Packages of the
rtmpdump suite of software are available in the major open-source repositories (Linux distributions). These include the front-end apps "rtmpdump", "rtmpsrv" and "rtmpsuck."
Development of RTMPdump was restarted in October 2009, outside the United States, at the
MPlayer
MPlayer is a free and open-source media player software application. It is available for Linux, OS X and Microsoft Windows. Versions for OS/2, Syllable Desktop, Syllable, AmigaOS, MorphOS and AROS Research Operating System are also available. A ...
site. The current version features greatly improved functionality, and has been rewritten to take advantage of the benefits of the
C programming language
C (''pronounced'' '' – like the letter c'') is a general-purpose programming language. It was created in the 1970s by Dennis Ritchie and remains very widely used and influential. By design, C's features cleanly reflect the capabilities of ...
. In particular, the main functionality was built into a library (librtmp) which can easily be used by other applications. The RTMPdump developers have also written support for librtmp for
MPlayer
MPlayer is a free and open-source media player software application. It is available for Linux, OS X and Microsoft Windows. Versions for OS/2, Syllable Desktop, Syllable, AmigaOS, MorphOS and AROS Research Operating System are also available. A ...
,
FFmpeg
FFmpeg is a free and open-source software project consisting of a suite of libraries and programs for handling video, audio, and other multimedia files and streams. At its core is the command-line ffmpeg tool itself, designed for processing vide ...
,
XBMC
Kodi (formerly XBMC) is a free and open-source media player and technology convergence software application developed by the Kodi Foundation, a non-profit technology consortium. Kodi is available for multiple operating systems and hardware pl ...
,
cURL
cURL (pronounced like "curl", ) is a free and open source computer program for transferring data to and from Internet servers. It can download a URL from a web server over HTTP, and supports a variety of other network protocols, URI scheme ...
,
VLC and a number of other open source software projects. Use of librtmp provides these projects with full support of RTMP in all its variants without any additional development effort.
FLVstreamer
FLVstreamer is a fork of RTMPdump, without the code, which Adobe claims violates the
DMCA
The Digital Millennium Copyright Act (DMCA) is a 1998 United States copyright law that implements two 1996 treaties of the World Intellectual Property Organization (WIPO). It criminalizes production and dissemination of technology, devices, or ...
in the USA. This was developed as a response to Adobe's attempt in 2008 to suppress RTMPdump. FLVstreamer is an RTMP client that will save a stream of audio or video content from any RTMP server to disk, if encryption (RTMPE) is not enabled on the stream.
Enhanced RTMP
Enhanced RTMP (E-RTMP) is an enhancement to the Real-Time Messaging Protocol (RTMP) and
FLV specifications, modernizing streaming workflows while maintaining compatibility with existing RTMP infrastructure.
Developed as an open specification, E-RTMP was published by the Veovera Software Organization, with contributions from
Adobe
Adobe (from arabic: الطوب Attub ; ) is a building material made from earth and organic materials. is Spanish for mudbrick. In some English-speaking regions of Spanish heritage, such as the Southwestern United States, the term is use ...
,
Google
Google LLC (, ) is an American multinational corporation and technology company focusing on online advertising, search engine technology, cloud computing, computer software, quantum computing, e-commerce, consumer electronics, and artificial ...
,
Twitch, and others.
Enhancements introduced in E-RTMP include:
* Advanced audio and video codec support, including
AC-3,
E-AC-3,
Opus,
FLAC
FLAC (; Free Lossless Audio Codec) is an audio coding format for lossless compression of digital audio, developed by the Xiph.Org Foundation, and is also the name of the free software project producing the FLAC tools, the reference software ...
,
VP8
VP8 is an open format, open and royalty-free Video coding format, video compression format released by On2 Technologies in 2008.
Initially released as a Proprietary software, proprietary successor to On2's previous VP7 format, VP8 was released a ...
,
VP9,
HEVC
High Efficiency Video Coding (HEVC), also known as H.265 and MPEG-H Part 2, is a video compression standard designed as part of the MPEG-H project as a successor to the widely used Advanced Video Coding (AVC, H.264, or MPEG-4 Part 10). In co ...
, and
AV1 with
HDR capabilities.
* Multichannel audio configurations to enhance flexibility while maintaining compatibility.
*
FourCC
A FourCC ("four-character code") is a sequence of four bytes (typically ASCII) used to uniquely identify data formats. It originated from the OSType or ResType metadata system used in classic Mac OS and was adopted for the Amiga/Electronic Arts ...
signaling to improve codec identification and support for modern media formats.
* Multitrack capabilities that allow simultaneous audio, video, and metadata processing within a single stream.
* Video metadata expansion, extending
VideoPacketType.Metadata
to support a broader range of metadata types.
* A reconnect request feature to improve connection stability and resilience in streaming workflows.
* Timestamp precision improvements, introducing nanosecond-level precision for better synchronization with modern media formats.
E-RTMP enhances RTMP’s capabilities while ensuring seamless interoperability with existing RTMP implementations.
Implementations
*
ffmpeg
FFmpeg is a free and open-source software project consisting of a suite of libraries and programs for handling video, audio, and other multimedia files and streams. At its core is the command-line ffmpeg tool itself, designed for processing vide ...
(since 6.1)
*
OBS Studio 29.1
*
YouTube
YouTube is an American social media and online video sharing platform owned by Google. YouTube was founded on February 14, 2005, by Steve Chen, Chad Hurley, and Jawed Karim who were three former employees of PayPal. Headquartered in ...
(Beta, same ingest parameters as h264)
*
Twitch
*
Ant Media Server
See also
*
Secure Reliable Transport (SRT)
*
Reliable Internet Stream Transport (RIST)
*
WebRTC
WebRTC (Web Real-Time Communication) is a free and open-source project providing web browsers and mobile applications with real-time communication (RTC) via application programming interfaces (APIs). It allows audio and video communication and ...
*
Protected Streaming Info about RTMPS and RTMPE
*
Video on Demand
Video on demand (VOD) is a media distribution system that allows users to access videos, television shows and films Digital distribution, digitally on request. These multimedia are accessed without a traditional video playback device and a typica ...
(VoD)
*
Media Source Extensions (MSE)
*
WebSocket
WebSocket is a computer communications protocol, providing a full-duplex, simultaneous two-way communication channel over a single Transmission Control Protocol (TCP) connection. The WebSocket protocol was standardized by the Internet Engineering ...
References
External links
Adobe Developer page - RTMP - official specificationSend an RTMP Stream to Wowza Streaming Cloud With OBS StudioOpen Broadcaster Software : Streaming with SRT or RIST ProtocolsEnhanced RTMP (V2)
{{Adobe Flash
Adobe Flash
Multimedia
Network protocols