资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,RM,文件的封装和解复用报告,RM文件的封装和解复用报告,概述,Rm,文件简介,Rm,文件格式介绍,2664Hisense,的,code,中对,rm,文件的,demux,概述Rm文件简介,Rm,文件简介,简介:,RM,格式是,RealNetworks,公司开发的一种流媒体视频文件格式,它的特点是文件小,但画质仍能保持的相对良好,可以根据网络数据传输的不同速率制定不同的压缩比率,从而实现低速率的,Internet,上进行视频文件的实时传送和播放,即先从服务器上下载一部分视频文件形成视频流缓冲区后实时播放同时继续下载为接下来的播放做好准备。,音视频编码:,RealAudio,、,RealVideo,(,见备注,),与,rmvb,的主要区别:,rm,格式采用的是固定码率编码,rmvb,采用可变码率(,Variable Bitrate,)在画面变动大 的地方用的比特位多一些,平静的画面用少的比特位。,Rm文件简介简介:,Rm,文件格式介绍,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),Rm文件格式介绍Real chunk types:,每个单元的共同头部开始部分:,typedef struct rm_generic_hdr,unsigned long id;/*unique identifier for this header*/,unsigned long size;/*size of header in file*/,unsigned short version;/*struct version*/,_attribute_(packed)rm_generic_hdr_t;,每个单元的共同头部开始部分:,rm文件格式资料课件,1.RealMedia file header(.RMF),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,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.,Rm_plugin_identify()at InputRM.c,查看文件的开始是否为,.RMF,1.RealMedia file header(.RMF),2.File properties Header(,PROP),typedef struct Properties_Header,UINT32 object_id;0-3/object_id,,属性头唯一标识(“,PROP”,),UINT32 size;4-7/size,属性头大小,UINT16 object_version;8-9/object_version,,,RM,文件头版本,决定结构中其他成员的取舍,此结构中此值为零,if(object_version=0),UINT32 max_bit_rate;10-13/,网络传输 时要求的最大比特率,UINT32 avg_bit_rate;14-17/,网络传输 时要求的平均比特率,UINT32 max_packet_size;18-21/,最 大媒体数据包的大小(以字节计算),UINT32 avg_packet_size;22-25/,平 均媒体数据包的大小(以字节计算),2.File properties Header(PROP),UINT32 num_packets;26-29/,媒体数据包 个数,UINT32 duration;30-33/,媒体文件应该播放 的时间(以毫秒计算),UINT32 preroll;34-37/,回放之前的预留毫秒 数,UINT32 index_offset;38-41/,索引头到文件开始的偏移,这个值可为,零,表明没有索引段,UINT32 data_offset;42-45/,数据段到文件开始的偏移,用,32,个二进制位表示(注,:,在,RM,文件中可以有不止一个数据块头,这个值只表示第一个数据块头到文件开始的偏移,其他数据块头的偏移可以从数据块头中,next_data_header,域得到);,UINT16 num_streams;46-47/,在主头段中 包含的全部媒体属性头(,MDPR,)的个数,UINT16 flags;48-49/,包含文件信息的位掩码,;,UINT32 num_packets;26-29,3.,Media properties header(,MDPR),Media_Properties,UINT32 object_id;0-3/object_id:,媒体属性头唯一标识,为“,MDPR”,;,4,UINT32 size;4-7/size,,表明媒体属性头的大小;,4,UINT16 object_version;8-9/object_version,,媒体属性头版本号;,2,if(object_version=0),UINT16 stream_number;10-11/stream_number,,流的标识,表明,RM,媒体文件中此媒体属性头代表的是哪个数据流(视频数据流或音频数据流),在数据段中的每个数据包中都包含有类似的标识以表明数据是属于哪个媒体流。当版本号为零时此成员才存在;,2,UINT32 max_bit_rate;12-15/max_bit_rate,,网络上传输此媒体流所要求的最大比特率,当版本号为零时此成员才存在;,4,UINT32 avg_bit_rate;16-19/avg_bit_rate,,网络上传输此媒体流所要求的平均比特率,当版本号为零时此成员才存在;,4,UINT32 max_packet_size;20-23/max_packet_size,,媒体流数据包的最大容量(以字节计算),当版本号为零时此成员才存在;,4,UINT32 avg_packet_size;24-27/avg_packet_size,,媒体流数据包的平均容量(以字节计算),当版本号为零时此成员才存在;,4,3.Media properties header(MD,UINT32 start_time;28-31/start_time,,开始时间(毫秒表示),用于加到数据包时间标志上,当版本号为零时此成员才存在;,4,UINT32 preroll;32-35/preroll,,和,start_time,相反的时间尺度(毫秒表示),用于从数据包时间标志中减去的值,当版本号为零时此成员才存在;,4,UINT32 duration;36-39/duration,,流的持续时间,当版本号为零时此成员才存在;,4,UINT8 stream_name_size;40-40/stream_name_size,,流名称所占字节数,当版本号为零时此成员才存在,用,8,个二进制位表示;,1,UINT8stream_name;41-41/stream_name,,流的名称,版本号为零时此成员才存在,大小不定;,1,UINT8 mime_type_size;42-42/mime_type_size,,表明下个成员(,mime_type,)所占的存储空间,版本号为零时此成员才存在,用,8,个二进制位表示;,1,UINT8mime_type_sizemime_type;43-43,/,决定,Type_Specific_Data mime_type,,和流相关的,MIME,形式的类型或子类型字符串,版本号为零时此成员才存在,大小不定;,1,UINT32 type_specific_len;44-47/type_specific_len,,表明下个成员,(pe_specific_data,)所占的存储空间,版本号为零时此成员才存在,;,4,UINT8type_specific_lenType_Specific_Data;48-51/Type_Specific_Data,,一般用来保存对流进行处理的特殊数据,版本号为零时此成员才存在,大小不定。,4,;,UINT32 start_time;28-31,mime_type,(,Multipurpose Internet Mail Extensions),代表互联网媒体类型,(Internet media type),:,#define RM_PARSER_PREFIX_LOGICAL logical-,#define RM_PARSER_PREFIX_LOGICAL_FILEINFO logical-fileinfo,#define RM_MIME_TYPE_MULTIRATE_REALAUDIOaudio/x-pn-multirate-realaudio,#define RM_MIME_TYPE_MULTIRATE_REALVIDEOvideo/x-pn-multirate-realvideo,#define RM_MIME_TYPE_REALAUDIO audio/x-pn-realaudio,#define RM_MIME_TYPE_REALVIDEO video/x-pn-realvideo,#define RM_MIME_TYPE_REALVIDEO_ENCRYPTED video/x-pn-realvideo-encrypted,#define RM_MIME_TYPE_REALAUDIO_ENCRYPTED audio/x-pn-realaudio-encrypted,#define RM_MIME_TYPE_REALAUDIO_LOSSLESS audio/x-ralf-mpeg4-generic,#define RM_MIME_TYPE_REALEVENT application/x-pn-realevent,#define RM_MIME_TYPE_REALEVENT_ENCRYPTED application/x-pn-realevent-encrypted,#define RM_MIME_TYPE_REALIMAGEMAP application/x-pn-imagemap,#define RM_MIME_TYPE_REALIMAGEMAP_ENCRYPTED application/x-pn-imagemap-encrypted,#define RM_MIME_TYPE_IMAGEMAPimage_map/x-pn-realvideo,#define RM_MIME_TYPE_IMAGEMAP_ENCRYPTED image_map/x-pn-realvideo-encrypted,#define RM_MIME_TYPE_SYNCMM syncMM/x-pn-realvideo,#define RM_MIME_TYPE_SYNCMM_ENCRYPTEDsyncMM/x-pn-realvideo-encrypte
展开阅读全文