好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

mpeg文件格式分析.doc

20页
  • 卖家[上传人]:gg****m
  • 文档编号:206144746
  • 上传时间:2021-10-30
  • 文档格式:DOC
  • 文档大小:227KB
  • / 20 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 总觉得晚上好像没有有关Mpegl数据流具体格式的东西,所以索性我做些页献 吧这篇文档里面详细的叙述了 Mpegl规范的比特流结构目录目录MPRG-1流比特层次结构分析总结1. 简要介绍Mpeg2. Mpeg-1数据流分析2. 1 视频序列层(VideoStream)2.2画面组层(G0P)2. 3 画面层(Pictures)2.4 片层(Slice)2. 5 宏块层(Macroblock)2.6 块层(Block)3. 加密位置的思考附录MPEG-1流比特层次结构分析总结1. 简要介绍MpegMpeg是Motion Picture Expert Group的缩写活动图像专家组是在1988年由 TSO和TEC联合成立的专家组,负责开发电视图像数据和声音数据的编码,解码 和它们的同步等标准到目前为止己经开发和正在开发的MPEG标准有很多,主 要包括 Mpeg-1, Mpeg-2, Mpeg-4,和 Mpeg-7.其中的Mpeg-1处理的是标准图像交换格式(standard interchange format, SI F)或者称为源输入格式(Source Input Format, STF)的电视,将模拟的图像信 息,通过编码成为数字图像信息,原始输入可以是NTSC制式352pixels * 2401 ines * 30frames/second, PAL 制 352pixels * 2881ines*25frames/second,lis 缩后的数字图像信息的速率为1. 5Mb/s.这个标注是1992年正是的发布的,是针 对当时具有这种数据传输速率的CD-ROM和网络而开发的,用于在CD-ROM上存储 数字影视和在网络上传输数字影视。

      MPEG-1的标准号为ISO/IEC 11172,标准名:“信息技术——用于数据速率大约 高达1. 5Mb/s的数字存储替的电视图像和伴音编码”本文主要是对Mpeg-lVideo数据流的结构进行分析,并将怎样得到Mpeg-1流中 的数据部分进行的阐述IS0/IEC 11172-22. Mpeg-1数据流分析编码后的视频序列是一个如同计算机网络的0SI模型下的数据序列一样,数据被 分成很多层的概念视频序列层一画面组层一画面层一片层一宏块层一块层层次的关系很明显,越往后越是底层,越接近实际的数据2. 1 视频序列层(VideoStream) 视频序列是以一个序列标题开始,之后可以跟着一个或者多个画面组最后以S equence end code结束紧挨着每一个画面组之前可以有一个序列标题也就 是说每个画面组,都可以有一个自己的序列标题序列标题是-一个以sequence_header_code开始,后跟着一系列数据元素的结构 是视频流中用来解码的重要两参数之一其中定义了量化矩阵(load_intra_qu anti zer matri x 和 1 oad_non_intra quanti zer matri x 以及门]选的 intra_quan tizer matrix和non intra quantizer matrix)以及其它的一些重要的数据无 素,其中量化矩阵是可以在视频流中重复的量化矩阵中变化的,并且在每次变化 后,量化矩阵重新定义。

      其它的元素必须与第一个序列标题中的值相同整个视频序列的结构可以用下面的代码表示:Video_Stream{unsigned int h size;e;/* Horiz. size in pixeIs. */unsigned int v_size;s. *//* Vert, size in pixelunsigned int mb_height;ks. *//* Vert, size in mblocunsigned int mbwidth;cks. *//* Horiz. size in mblounsigned char aspectratio;io. *//* Code for aspect ratunsigned char picture rate;te. *//* Code for picture raunsigned int biterate;e. */A Bit ratunsigned int vbv buffer s!ze;e. *//* Minimum buffer sizBOOLEAN constparamflag; r flag. *//* Contrained parameteunsigned char intra quantmatrix[8][8]; x forintracoded frames. *//* Quantization matriunsigned char nonintra quantmatrix[8][8]; x fornon intracoded frames. *//* Quanitization matrichar *ext_data;a. *//* Extension datchar *user data;a. *//* User datGoP group;Ct. *//* Current group of piPict picture;e. *//* Current picturSlice slice;Current slice.*/*past;^future;^current;*/*ring[RING_BUF_SIZE];Macroblock mblock;k. */Block block;k. */int state;g. */int bitoffset;m. */unsigned int ^buffer; e i nbuffer. */int buf length;g buffer. */unsigned int *buf start; tart. */int max buf length;r. */PictImage me. */PictTmage rame. */PictImage e.PictImage es. */ } Video Stream; 具体的序列标题的结构的部分是这样的: 序列 sequenceheader{SEQ START CODE 0x000001 b3; /* 常量/* Current macrobloc/* Current bloc/* State of decodin/* Bit offset in strea/* Pointer to next byt/* Length of remainin /* Pointer to buffer s/* Max lenght of buffe /* Past predictive fra /* Future predictive f /* Current fram/* Ring buffer of fram,作用使用来定位视频序列的序列头*unsigned int hsize;s. */unsigned int vsize;s. */unsigned int mb height;ks. */unsigned int mbwidth;cks. */unsigned char aspect_ratio;io. */unsigned char picturerate;te. *//* Horiz. size in pixel/* Vert, size in pixel/* Vert, size in mbloc/* Horiz. size in mblo/* Code for aspect rat/* Code for picture rae.unsigned intbit_rate;*/ vbvbuffer_size;/* Bit ratunsigned int*/BOOLEAN const_param_flag;r fl ag. */unsigned char load intra quantizer matrix;unsigned char intra quant_matrix[8][8]; /* Quantization matrix for intracoded frames. 这个结构是可选的,要看 load intra quantizer_matrix的值,为真则有这个部分,否则没有,因为intra_quant_ma.trix是量化表的值,而Sequence_header结构在视频序列中是 可重复的,即在每个画面组之前都有可能再次给出一个sequence header,并且 可以在新的sequence header中重新定义量化表*/ unsigned char 1oad non intra_quantizer matrix;unsigned char non intraquant matrix[8][8]; /* Quanitization matri x for non intracoded frames. 也是门J选。

      愿意于 intra_quant_matrix nJ选的 原因相同当load non intra quant matrix的值为真的时候需要定义 */* Minimum buffer size./* Contrained paramete/* Extension dat/* User datchar *ext data;a. */char *user_data;a. */由上面的分析,可以看出来的是:video sequence() {nextstartcode ()do{sequenceheader();do{group of pictures ();画面组}while (nextbits() =GROUP_START_CODE)}while (nextbits () =SEQUENCE_HEADER _C0DE) SEQUENCE_EXD_CODE}; 正是由于视频序列中存在很多开始码,或者称之为定位码、同步码用来告诉解 码器目前数据的区域信息,所以解码器才可以正确的处理各个数据区的数据,下 面就是视频序列中的开始码的罗列:SEQ_EXD_CC)DE 0x000001 b7SEQ START CODE 0x000001b3G0P_START_CODE 0x000001b8PICTURE START CODE 0x00000100^define#define^define#define ttdefine SLICE_MIN_START_CODE 0x00000101ttdefine SLICE MAX START CODE 0x00000lafttdefine EXT_START_CODE 0x000001b5fidefine USER START^CODE 0x000001b2这些开始码都是一些必殊的32bits的比特序列,在视频码流中不会出现的。

      他 们的起着标志的作用,具体可以从名称上面看出来其中EXT STAR。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.