Meta tags:
Headings (most frequently used words):
structure, message, protocol, and, implementations, http, tunneling, real, time, messaging, contents, basic, operation, specification, document, patent, license, patents, related, litigation, packet, layered, on, protocols, software, extensions, see, also, references, external, links, encryption, invoke, 0x14, 0x11, control, 0x04, serverbw, clientbw, 0x05, 0x06, set, chunk, size, 0x01, handshake, connect, play, video, rtmpt, rtmpdump, flvstreamer, ad, hoc, extension, enhanced, rtmp,
Text of the page (most frequently used words):
the (285), and (110), rtmp (83), type (64), for (46), adobe (42), with (40), which (38), protocol (36), #message (36), header (31), video (30), edit (30), are (30), #stream (29), from (27), data (27), packet (25), flash (24), server (24), client (24), that (23), bytes (22), this (21), audio (21), http (20), can (20), not (19), value (19), time (18), media (17), connection (17), set (17), flv (16), other (16), format (15), messages (15), byte (15), streaming (14), real (13), software (13), use (12), amf (12), enhanced (12), specification (12), has (12), such (12), using (11), codec (11), example (11), new (11), request (11), any (11), have (11), rtmpdump (11), content (11), command (11), values (11), control (11), messaging (10), may (10), retrieved (10), ping (10), implementations (10), used (10), while (10), one (10), will (10), sent (10), session (10), packets (10), structure (10), chunk (10), size (10), bandwidth (10), two (10), basic (10), was (9), open (9), wowza (9), level (9), above (9), version (9), then (9), toggle (8), wikipedia (8), systems (8), patent (8), original (8), also (8), some (8), only (8), types (8), four (8), first (8), communication (8), over (8), rtmpt (8), their (8), encoded (8), tcp (8), code (7), non (7), page (7), action (7), com (7), rtmpe (7), capabilities (7), uses (7), these (7), include (7), response (7), number (7), where (7), body (7), post (7), case (7), timestamp (7), when (7), possible (7), last (6), december (6), 2024 (6), april (6), layer (6), single (6), all (6), including (6), reply (6), followed (6), invoke (6), contains (6), extended (6), handshake (6), second (6), 0x14 (6), channel (6), fragment (6), subsection (6), license (5), protocols (5), tools (5), file (5), support (5), 2009 (5), archived (5), patents (5), extensions (5), same (5), existing (5), would (5), headers (5), fourcc (5), instead (5), standard (5), been (5), encryption (5), current (5), main (5), into (5), most (5), three (5), sequence (5), found (5), fcs (5), established (5), name (5), commands (5), connect (5), transaction (5), define (5), sample (5), string (5), rest (5), default (5), each (5), received (5), parameter (5), low (5), following (5), interleaved (5), contents (4), search (4), 2025 (4), macromedia (4), related (4), live (4), formats (4), links (4), github (4), february (4), 2011 (4), services (4), source (4), internet (4), secure (4), own (4), made (4), extension (4), metadata (4), within (4), bit (4), developed (4), does (4), hoc (4), industry (4), its (4), flvstreamer (4), full (4), play (4), windows (4), returned (4), 200 (4), through (4), 0x01 (4), 1728724019 (4), application (4), tunneled (4), port (4), tunneling (4), after (4), encapsulated (4), object (4), whether (4), amf0 (4), null (4), third (4), 0x03 (4), being (4), 0x05 (4), access (4), hash (4), udp (4), six (4), 0x04 (4), like (4), shown (4), 0x11 (4), defines (4), significant (4), bits (4), between (4), streams (4), hide (4), move (4), sidebar (4), view (3), developers (3), about (3), available (3), organization (3), chinese (3), 2008 (3), 2020 (3), description (3), side (3), list (3), flex (3), player (3), official (3), av1 (3), hevc (3), opus (3), 2014 (3), rpc (3), veovera (3), demand (3), rtmps (3), transport (3), see (3), fork (3), originally (3), ffmpeg (3), changes (3), reserved (3), fields (3), mechanism (3), codecs (3), identify (3), considered (3), different (3), top (3), without (3), take (3), librtmp (3), projects (3), end (3), derived (3), article (3), generated (3), random (3), follows (3), layered (3), respectively (3), start (3), script (3), objectencoding (3), app (3), container (3), meaning (3), constant (3), special (3), serverbw (3), clientbw (3), amf3 (3), diagram (3), composed (3), either (3), 0x06 (3), segment (3), rtmfp (3), ihello (3), throttle (3), meta (3), read (3), 0x02 (3), form (3), there (3), little (3), b00 (3), information (3), document (3), measures (3), tls (3), ssl (3), several (3), channels (3), requests (3), payload (3), fragments (3), operation (3), add (2), languages (2), table (2), contact (2), privacy (2), policy (2), additional (2), terms (2), apply (2), site (2), wikimedia (2), inc (2), commons (2), november (2), categories (2), language (2), articles (2), clarification (2), march (2), short (2), wikidata (2), multimedia (2), https (2), org (2), flow (2), protected (2), animation (2), lite (2), obsolete (2), google (2), encoder (2), programming (2), players (2), library (2), objects (2), srt (2), rist (2), send (2), cloud (2), obs (2), studio (2), developer (2), external (2), october (2), mpegts (2), january (2), beta (2), ant (2), via (2), youtube (2), vp9 (2), supports (2), red5 (2), documentation (2), settle (2), cases (2), leagle (2), 2013 (2), back (2), infringement (2), published (2), august (2), 2012 (2), 2007 (2), therealtimeweb (2), help (2), references (2), info (2), reliable (2), portal (2), author (2), bilibili (2), ingesters (2), twitch (2), since (2), independently (2), calls (2), enhances (2), legacy (2), but (2), forward (2), reconnect (2), feature (2), improve (2), workflows (2), onmetadata (2), allows (2), part (2), describe (2), more (2), multitrack (2), limited (2), agreed (2), upon (2), identifier (2), enhancement (2), specifications (2), maintaining (2), compatibility (2), infrastructure (2), additions (2), field (2), ids (2), assigned (2), practice (2), variants (2), however (2), things (2), directly (2), save (2), disk (2), development (2), features (2), functionality (2), applications (2), mplayer (2), suite (2), linux (2), designed (2), versions (2), mac (2), implemented (2), idle (2), 404 (2), sends (2), must (2), ident2 (2), inside (2), responses (2), createstream (2), invocation (2), argument (2), netconnection (2), encoding (2), clientid (2), 2004 (2), object1 (2), variable (2), spec (2), make (2), videofunction (2), flashver (2), key (2), pairs (2), needed (2), referred (2), chunks (2), exchanged (2), complete (2), epoch (2), done (2), party (2), sending (2), representing (2), 128 (2), limit (2), hard (2), soft (2), pong (2), proxy (2), notify (2), disconnect (2), link (2), boundary (2), get (2), buffer (2), clear (2), carries (2), they (2), always (2), general (2), below (2), aggregate (2), virtual (2), remote (2), endian (2), 0x000019 (2), delta (2), b11 (2), least (2), included (2), 000011 (2), netstream (2), depending (2), represents (2), litigation (2), free (2), personal (2), released (2), works (2), url (2), traffic (2), encrypted (2), required (2), active (2), actual (2), fragmented (2), based (2), latency (2), plain (2), security (2), proprietary (2), 1935 (2), appearance (2), upload (2), history (2), log (2), create (2), account (2), donate (2), menu (2), topic, mobile, cookie, statement, statistics, conduct, legal, safety, contacts, disclaimers, text, under, you, agree, registered, trademark, profit, foundation, creative, attribution, sharealike, rendered, parsoid, edited, utc, hidden, cs1, sources, needing, dmy, dates, matches, network, index, php, title, time_messaging_protocol, oldid, 1320331994, category, futurewave, television, films, thoughts, comparison, html5, topics, openlaszlo, swfdec, shumway, ajax, animator, papervision3d, swift, swish, max, scaleform, gfx, mtasc, swfobject, catalyst, builder, wallaby, swiffy, swfmill, swftools, converters, frameworks, ming, stage3d, flare3d, away3d, starling, framework, libraries, flashfirebug, scout, crossbridge, openfl, haxe, apache, powerflasher, fdt, stencyl, moho, toon, boom, animate, tamarin, ruffle, lightspark, gnash, gameswf, air, swc, swf, movie, lsos, local, shared, fxg, xml, graphics, actionscript, broadcaster, xqq, introducing, broadcasting, september, unlock, power, 2023, enable, h265, rtmp对h265和opus的支持, updates, project, accessed, trac, wiki, tutorials, www, news, incorporate, 2243, 20120907565, lawler, ryan, gigaom, fires, suit, schumacher, rasmussen, eric, streamingmedia, denies, allegations, parmar, thornburgh, eds, devnet, lozben, slavik, 2017, websocket, mse, vod, webrtc, his, ingest, parameters, h264, producers, because, many, includes, ensuring, interoperability, decoder, know, how, decode, frames, containing, still, able, properly, stability, resilience, advertisement, signaled, parts, frame, writing, videopackettype, multichannel, configurations, flexible, ability, configuration, allowing, simultaneous, processing, nanosecond, timestamps, better, synchronization, modern, old, integers, extensibility, numbers, choices, though, hdr, vp8, flac, enhancements, introduced, modernizing, contributions, others, coded, reuse, making, compatible, china, 265, 2018, soon, accepted, xia, chu, zlmediakit, kingsoft, interally, namespaces, cause, conflict, baseline, 711a, 264, selections, necessitated, claims, violates, usa, attempt, suppress, enabled, dmca, restarted, outside, united, states, greatly, improved, rewritten, advantage, benefits, particular, built, easily, written, provides, effort, vlc, curl, xbmc, packages, major, repositories, distributions, front, apps, rtmpsrv, rtmpsuck, line, tool, runs, android, solaris, unix, operating, well, microsoft, supporting, run, although, earlier, remain, fully, functional, stages, now, polling, just, increments, every, appropriate, integer, signifying, interval, path, correct, error, appending, said, refers, communicates, passes, encapsulating, tags, series, onstatus, serialised, properties, generic, passed, event, listener, establish, started, match, previously, array, succeeded, success, status, object2, mode, fms, fmsver, _result, concept, conceptually, folder, root, files, streamed, provided, testing, function, true, self, explanatory, interest, told, explicitly, requested, replies, setpacketsize, finally, support_vid_client_seek, doubles, videocodec, audiocodec, getversion, pageurl, 252, videocodecs, 3191, audiocodecs, 9947, false, fpad, 127, tcurl, swfurl, 153, point, negotiate, exchanging, relate, variables, establishing, performing, exchange, confused, setting, zero, simplified, initialises, straight, waiting, 1536, echo, except, respective, exists, change, wanted, relates, down, rate, showing, sets, dynamic, seen, keepalives, remove, upstream, continue, eof, redirect, query, sync, drm, begin, check, timeout, update, critical, write, deleted, created, receives, reset, holds, millisecond, dry, further, apparently, specific, implies, interpreted, keys, strings, complex, arrays, mixed, key1, value1, key2, value2, hand, denotes, 0x000c, 0x63, 0x72, 0x6d, 0x00, means, arguments, 0x17, present, 0x16, 0x15, 0x13, 0x12, 0x10, 0x0f, 0x09, 0x08, 0x07, acknowledge, abort, 0x00000000, order, length, 0x000b68, next, decoded, 0xc3, b11000011, mean, should, right, stands, b10, b01, starts, significance, ascii, hex, generate, connectionobject, var, captured, executes, contain, split, detached, usually, former, omitted, previous, latter, extra, diagramme, total, remaining, 319, 255, 16bit, 65599, 65535, measured, fmt, composite, did, sue, claiming, among, 2015, announced, lawsuits, settled, dismissed, prejudice, stefan, richter, books, noted, vague, appears, them, 246, 356, accompanying, grants, exclusive, royalty, nontransferable, sublicensable, worldwide, restrictions, forbids, intercepting, technology, intercepts, storage, device, medium, another, prohibits, circumvention, technological, protection, dated, web, leading, notes, benefit, customers, who, want, protect, unique, landing, opened, larger, than, equivalent, due, facilitate, scenarios, otherwise, behind, blocks, outbound, firewall, addressed, wraps, lighter, weight, mechanisms, underlying, simply, wrapped, normal, sessions, methods, higher, encapsulates, rpcs, asynchronously, model, procedure, flv1, aac, mp3, operate, handling, out, band, negotiation, etc, during, typical, simultaneously, given, specifies, amongst, matters, necessary, according, currently, before, itself, never, count, towards, words, subject, fragmentation, maintains, persistent, connections, deliver, smoothly, transmit, much, splits, negotiated, dynamically, sometimes, kept, unchanged, sizes, longer, thus, per, incurring, very, individual, typically, interleaving, multiplexing, across, way, ensure, meets, quality, service, requirements, fashion, treated, indivisible, overhead, multiplexed, primary, motivation, playing, livecycle, adding, advanced, precision, expanded, signaling, replacing, enables, users, communicate, p2p, user, datagram, traverse, frequently, utilizing, cleartext, 443, bypass, corporate, filtering, carry, ports, firewalls, details, implementation, cryptographic, primitives, proper, transmission, multiple, variations, acquired, incomplete, public, osi, introduction, purpose, abbreviation, encyclopedia, item, printable, download, pdf, print, export, switch, parser, shortened, cite, permanent, what, here, actions, english, talk, українська, русский, português, polski, latviešu, 한국어, 日本語, italiano, français, فارسی, deutsch, català, pages, recent, community, learn, contribute, events, navigation, jump,
Text of the page (random words):
nificant 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 hex code ascii 03 00 0b 68 00 00 19 14 00 00 00 00 02 00 0c 63 72 65 61 74 65 53 74 72 65 61 6d 00 40 00 00 00 00 00 00 00 05 i c r e a t e s t r e a m the packet starts with a basic header of a single byte 0x03 where the two most significant bits b 00 000011 define a chunk header type of 0 while the rest b00 000011 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 edit 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 command name number transaction id mixed argument ex null string object key1 value1 key2 value2 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 edit 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 12 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 edit 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 edit 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 edit rtmp handshake diagram handshake edit 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 edit 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 app sample flashver mac 10 2 153 2 swfurl null tcurl rtmpt 127 0 0 1 sample fpad false capabilities 9947 75 audiocodecs 3191 videocodecs 252 videofunction 1 pageurl null objectencoding 3 0 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 support_vid_client_seek 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 fmsver fms 3 5 5 2004 capabilities 31 0 mode 1 0 object2 level status code netconnection connect success description connection succeeded data array version 3 5 5 2004 clientid 1728724019 objectencoding 3 0 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 edit 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 layered on protocols edit http tunneling rtmpt edit 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 fcs ident2 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 idle session id sequence is a polling request where the session id 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 send session id sequence software implementations edit see also list of rtmp software rtmp is implemented at these three stages live video encoder live and on demand media streaming server live and on demand client rtmpdump edit main article 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 mac os x 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 site 13 the current version features greatly improved functionality and has been rewritten to take advantage of the benefits of the c programming language 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 ffmpeg xbmc curl 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 edit flvstreamer is a fork of rtmpdump without the code which adobe claims violates the dmca 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 extensions edit the above variants are additions made on top of rtmp however the limited codec selections of flv and rtmp has necessitated the industry to add things to the format and the protocol directly ad hoc extension edit rtmp interally uses its own four bit codec id instead of standard fourcc to identify the set of codecs it supports audio and video codec ids are considered to be in different namespaces so using the same value does not cause any conflict for example in adobe s baseline standard audio codec 7 is g 711a and video codec 7 is h 264 in china kingsoft cloud assigned h 265 to video codec 12 in 2018 a practice soon accepted by other industry players such as bilibili in 2020 xia chu of zlmediakit assigned opus to audio codec 13 14 all ad hoc additions to the coded id field have been made obsolete by e rtmp e rtmp does not reuse the ids 12 and 13 making it compatible with the chinese ad hoc extensions enhanced rtmp edit 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 2 developed as an open specification e rtmp was published by the veovera software organization with contributions from adobe google twitch and others enhancements introduced in e rtmp include new flv audio and video header fo...
|