2022年rm文件格式 .pdf
RealMedia Format This is the newer format which stores both audio and video. All multi-byte numbers are stored in big-endian format. A RealMedia file consists of a series of chunks. Each chunk has the following format: dword chunk type (FOURCC) dword chunk size, including 8-byte preamble word chunk version byte chunk payload Real chunk types: .RMF: RealMedia file header (only one per file, must be the first chunk) PROP: File properties (only one per file) MDPR: Stream properties (one for each stream) CONT: Content description/metadata (typically one per file) DATA: File data INDX: File index (typically one per stream) RealMedia file header (.RMF) This must be the first chunk in a RealMedia file. Only one .RMF can be present in a file. The only useful information carried by .RMF is the number of headers. A .RMF chunk has the following format dword chunk type (.RMF) dword chunk size (typically 0 x12) word chunk version (always 0, for every known file) dword file version dword number of headers File properties header (PROP) This chunk contains some information about the general properties of a RealMedia file. Only one PROP chunk can be present in a file. A PROP chunk has the following format 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - dword Chunk type (PROP) dword Chunk size (typically 0 x32) word Chunk version (always 0, for every known file) dword Maximum bit rate dword Average bit rate dword Size of largest data packet dword Average size of data packet dword Number of data packets in the file dword File duration in ms dword Suggested number of ms to buffer before starting playback dword Offset of the first INDX chunk form the start of the file dword Offset of the first DATA chunk form the start of the file word Number of streams in the file word Flags (bitfield, see below) Flags: bit 0: file can be saved on disk bit 1: PerfectPlay can be used (extra buffering) bit 2: the file is a live broadcast Media properties header (MDPR) This chunk contains information about the properties of a RealMedia stream. This header defines the type of a stream and the codec used. All codec-related data is in the type specific part of this header. Many fields share the same meanings as the ones in PROP chunk, but in this case they are specific for one stream. There is one MDPR chunk for every stream in the file. A MDPR chunk has the following format dword Chunk type (MDPR) dword Chunk size word Chunk version (always 0, for every known file) word Stream number dword Maximum bit rate dword Average bit rate dword Size of largest data packet dword Average size of data packet dword Stream start offset in ms dword Preroll in ms (to be subtracted from timestamps?) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - dword Stream duration in ms byte Size of stream description string byte Stream description string byte Size of stream mime type string byte Mime type string dword Size of type specific part of the header byte Type specific data, meaning and format depends on mime type Audio (audio/) audio/x-pn-realaudio and audio/x-pn-multirate-realaudio These mimetypes are used to specify streams with RealAudio codecs. There are 3 known versions of this datablock: ra3, ra4, ra5. ra3 is used only with the old 14_4 codec, ra4 and ra5 can be used with all the other codecs. The audio block has this format byte4 Header signature (., r, a, 0 xfd) word Version (3, 4 or 5) #if version = 3 word Header size, not including first 8 bytes byte10 Unknown dword Data size byte Title string length byte Title string byte Author string length byte Author string byte Copyright string length byte Copyright string byte Comment string length byte Comment string byte Unknown * byte Fourcc string length (always 4) * byte Fourcc string (always lpcJ) * #elseif version = 4 or version = 5 word Unused (always 0) byte4 ra signature (.ra4 or .ra5, depending on version) dword Unknown (maybe data size) word Version2 (always equal to version) dword Header size word Codec flavor dword Coded frame size byte12 Unknown word Sub packet h 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - word Frame size word Subpacket size word Unknown #if version = 5 byte6 Unknown #endif word Samplerate word Unknown word Sample size word Channels #if version = 4 byte Interleaver ID string length (always 4) byte Interleaver ID string byte FourCC string length (always 4) byte FourCC string #endif #if version = 5 dword Interleaver ID dword FourCC#endif byte3 Unknown #if version = 5 byte Unknown #endif dword Codec extradata length byte Codec extradata #endif audio/X-MP3-draft-00 This is used to store MP3 audio in rm container. When this mimetype is used the type-specific part of the MDPR header is not used, and its length is set to 0. The MP3 frames are stored in ADU format (see RFC 3119 for details) with no interleaving (at least this is true in the only known sample). audio/x-ralf-mpeg4 This is used to store ralflossless audio. This is the only known RealAudio codec that does not use the x-pn-realaudio mimetype. The format of this type-specific data is not known. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 7 页 - - - - - - - - - Content description header (CONT) This chunk contains some text information (like title, author, .) about the content of the file. This header has an informative purpose only and its not needed to demux the file. A CONT chunk has the following format dword Chunk type (CONT) dword Chunk size word Chunk version (always 0, for every known file) word Title string length byte Title string word Author string length byte Author string word Copyright string length byte Copyright string word Comment string length byte Comment string Data header (DATA) This chunk contains a group of data packets. Packets from each stream are interleaved, except for multirate files. A DATA chunk has the following format dword Chunk type (DATA) dword Chunk size word Chunk version (always 0, for every known file) dword Number of data packets in this chunk dword Offset of the next DATA chunk (form the start of the file) byte Data packets Each data packet has this format word Packet version (0 or 1 in available samples) word Packet size word Stream number dword Timestamp (in ms) byte Unknown byte Flags (bitfield, see below) #if version = 1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 7 页 - - - - - - - - - byte Unknown #endif byte Stream-specific data Flags: bit 0: reliable packet (refers to network transmission method) bit 1: keyframe Note: The previous description of the data packet comes from working demuxer code, the description in official Real docs (somewhere on Helixsite) is a bit different: word Packet version word Packet size word Stream number dword Timestamp #if version = 0 byte Packet group byte Flags #endif #if version = 1 word ASM rule byte ASM flags #endif byte Stream-specific data where packet group is The packet group to which the packet belongs. If packet grouping is not used, set this field to 0 (zero), asm rule is The ASM rule assigned to this packet and asm flags Contains HX_ flags that dictate stream switching points. Index header (INDX) This chunk contains index entries. It comes after all the DATA chunks. An index chunk contains data for a single stream, A file can have more than one INDX chunk. A INDX chunk has the following format dword Chunk type (INDX) dword Chunk size word Chunk version (always 0, for every known file) dword Number of entries in this chunk 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 7 页 - - - - - - - - - word Stream number dword Offset of the next INDX chunk (form the start of the file) byte Index entries Each index entry has this format word Entry version (always 0, for every known file) dword Timestamp (in ms) dword Packet offset in file (form the start of the file) dword Packet number 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -