77百科网
当前位置: 首页 生活百科

mpeg编码标准(MPEG标准制定方法)

时间:2023-06-29 作者: 小编 阅读量: 1 栏目名: 生活百科

mpeg编码标准mp3编码在MPEG文件中,没有主标头,因为MPEG的音频文件是由一系列被称为帧的较小部分组成的。帧本身是由slot组成的。LayerI的slot大小是4字节,其余情况是1字节。除比特率外,其他帧中的信息应该与第一个帧是一致的,因为可能当前是VBR的文件。在VBR的文件中,可以在每个帧中更改比特率。这是可以在所有的layer中使用。LayerIII必须这个方式,LayerI和LayerII解码器可以选择支持针对LayerII,不允许使用比特率和模式的一些组合。大多数解码器将其输出为

mpeg编码标准?在MPEG文件中,没有主标头,因为MPEG的音频文件是由一系列被称为帧的较小部分组成的每个帧都是一个具有自己标头和音频信息的数据块,今天小编就来说说关于mpeg编码标准?下面更多详细答案一起来看看吧!

mpeg编码标准

mp3 编码

在MPEG文件中,没有主标头,因为MPEG的音频文件是由一系列被称为帧的较小部分组成的。每个帧都是一个具有自己标头和音频信息的数据块。

Layer II,II,III的音频帧头都是相同的,不同之处体现在音频数据的编码方式。帧本身是由slot组成的。Layer I的slot大小是4字节,其余情况是1字节。

除了Layer之外,MPEG音频本身也有3个版本,这个几个版本的不同之处体现在能处理的采样率不同(参考 表2.1.2)。MPEG 1 (ISO/IEC 13818-3) 和MPEG2(ISO/IEC 11172-3)是ISO标准. MPEG2.5对MPEG2进行的非官方的扩展,它是为了支持更低的采样率。MPEG2/2.5 也常被简称为LSF(Low SamplingFrequencies),既低采样率

对于Layer I和Layer II,帧是完全彼此独立的,因此您可以剪切MEPG音频文件的任何部分并正确的播放。然后,播放器将从发现的第一个完整有效的帧开始播放。但是,Layer III,帧不总是独立的,因为它可能使用了byte resevoir,这是一种内部缓冲区,因此帧之间通常是相互依赖的。在最坏的情况下,可能至少需要输入9个帧才能解码单个帧。

如果你需要检索有关MPEG的音频文件的信息,那么可以简单的找到第一帧,然后从它的header中获取信息。除比特率外,其他帧中的信息应该与第一个帧是一致的,因为可能当前是VBR的文件。在VBR的文件中,可以在每个帧中更改比特率。例如,为了在整个文件中保持音乐的高质量,当音乐比较复杂时就需要更多的位来做编码

帧头本身的长度是32位的(4字节)。帧头的前十二位(在MPEG2.5扩展的情况下为前十一位)始终设置为1,称为帧同步。帧还可能有可选的CRC校验和。它长16位,如果存在,则紧跟在帧头之后。CRC之后就是音频数据。通过重新计算CRC并将值与文件中的值进行比较,就可以检查比特流在传输期间是否已经被更改。

一个文件可以被编码成恒定比特率(CBR)或可变比特率(VBR),这意味着每帧可以有不同的比特率。可变比特率的质量往往比恒定比特率编码的文件更高,因为他们可以在需要的地方使用更高的比特率。

MP3文件的整体结构:

  • [ID3 V2] | [APE 头]: 可选
    • ID3 V2的头,大多数最新的MP3,都有这个头
    • 用于APE格式的头,现在也用于MPEG
  • 第一帧
    • MPEG 音频头, 通常大小为4字节.(当Protection bit==0时,帧头后会有16bit=2byte的CRC,此时帧头大小为6字节)
    • 边信息,9/17/32 字节
    • [Xing 头]: 可选 8-120字节,如果是VBR,多数都有此Xing头,而且只有第一帧有
    • 音频数据
  • 第二帧
    • 帧头
    • 边信息
    • 音频数据
  • 第三帧
    • 帧头
    • 边信息
    • 音频数据
  • 最后一帧
    • 帧头
    • 边信息
    • 音频数据
  • [TAG]: 可选。128字节的ID3 V1信息,如果没有前面的ID3 V2,多数都有这个ID3 V1的头

mp3帧头编码

起始位置0位高位开始

起始位置大小位置描述
01131-21帧同步标识,11个‘1’。用于定位帧头起始位置
11220-19MPEG音频版本
13218-17Layer序列号
15116Protection bit
16415,12比特率
20211-10采样率
2219Padding bit的定义
2318保护位
2427-6channel模式
2625-4只用于Joint stereo 模式扩展
2813版权位 0:无版权 1:有版权
2912原始位 0:原始媒体的副本 1:原始媒体
3021-0Emphasis

MPEG音频版本

设置值描述
00MPEG version2.5
01保留
10MPEG version2
11MPEG version1

Layer序列号

设置值描述
00保留
01Layer III
10Layer II
11Layer I

Protection-bit

设置值描述
0protected by 16 bit CRC following header
1no CRC

比特率

bitsV1,L1V1,L2V1,L3V2,L1V2, L2 & L3
0000freefreefreefreefree
0001323232328
00106448404816
00119656485624
010012864566432
010116080648040
011019296809648
01112241129611256
100025612811212864
100128816012814480
101032019216016096
1011352224192176112
1100384256224192128
1101416320256224144
1110448384320256160
1111badbadbadbadbad

NOTES: All values are in kbps

  • V1: MPEG Version 1
  • V2: MPEG Version 2 and Version 2.5
  • L1: Layer I
  • L2: Layer II
  • L3: Layer III
  • “free”:: free fromat. free bitrate必须保持恒定,并且必须小于允许的最大的比特率. 解码器不需要支持free bitrate的流
  • “bad”: 意思是这个值是不被允许的.

MPEG文件可能具有可变的比特率(VBR)。每一个帧可以用不同的比特率来创建。这是可以在所有的layer中使用。Layer III必须这个方式,Layer I 和 Layer II 解码器可以选择支持 针对Layer II,不允许使用比特率和模式的一些组合。下面是一些允许的组合

bitrate单通道立体声intensity stereodual channe
freeyesyesyesyes
32yesnonono
48yesnonono
56yesnonono
64yesyesyesyes
80yesnonono
96yesyesyesyes
112yesyesyesyes
128yesyesyesyes
160yesyesyesyes
192yesyesyesyes
224noyesyesyes
256noyesyesyes
320noyesyesyes
384noyesyesyes

采样率

抽样速率指定每秒钟有多少个样本被记录。每个MPEG版本可以处理不同的samplingrates。

采样率索引MPEG-1 (Hz)MPEG-2 (Hz)MPEG-2.5 (Hz)
00441002205011025
01480002400012000
1032000160008000
11reservedreservedreserved

Padding-bit

如果设置了,则用一个slot填充数据(slot对框架大小的计算很重要) Layer I的slot大小是4字节,其余情况是1字节。

设置值描述
0没有填充
1使用一个额外的slot填充数据

channel模式

设置值描述
00立体声
01Joint stereo
10Dual channel(2 mono channels)
11Single channel(mono)

注意:双通道文件由两个独立的单声道组成。每一个都只使用了文件的一半比特率。大多数解码器将其输出为立体声,但情况并非总是如此。使用一个例子是在相同的比特流中承载了两个不同语言的语音,那么解码器需要仅解码所选择的语言进行播放

模式扩展

扩展模式被用来增加了一些没有在立体声效果使用的信息,从而减少了所需的位。这些位由在Joint stereo模式下的编码器动态的确定,每一个帧的Joint stereo都可以改变,甚至可以打开或者关闭

MPEG文件的整个的频率范围分为了多个子带,共有32个子带。对于Layer I和Layer II来说两个位确定了当应用intensity stereo时的频率范围(频带)。针对Layer III,这两个位决定了使用哪一种类型的joint stereo(intensity stereo或者m/s stereo). 频率范围由解压缩算法来确定

设置值Layer I & II
00bands 4 to 31
01bands 8 to 31
10bands 12 to 31
11bands 16 to 31

Layer III:

Intensity stereoMS stereo
offoff
onoff
offon
onon

Emphasis

设置值描述
00none
0150/15 ms
10reserved
11CCIT J.17

MP3边信息

边信息紧接着帧头。它包含了一些解码器会用到的一些信息,用于解码器控制音频流的播放,但不包含实际的音频数据。下表显示了所有Layer III文件的边信息的大小

模式MPEG 1MPEG 2/2.5 (LSF)
立体声,联合立体声,双通道3217
Mono179

对于Layer I的文件,你必须考虑到扩展模式(见表2.1.6)。然后你可以以下公式计算出用于计算CRC的比特位的数量:

4 * ( 声道数 * bound of intensity stereo + (32 – bound of intensity stereo) );

这可以被读成两倍的立体声子带加上单子带的数量和结果乘以4。对于简单的mono帧,这等于128,因为通道的数目是1,而强度立体声的边界是32,这意味着没有强度立体声。对于立体帧,这是256。有关更多信息,请查看类CMPAFrame中的rc代码。

MP3解析的解析

基于MPG123库

核心数据结构

typedef struct mpstr_tag {struct buf *head, *tail; /* buffer linked list pointers, tail points to oldest buffer */intvbr_header;/* 1 if valid Xing vbr header detected */intnum_frames;/* set if vbr header present */intenc_delay;/* set if vbr header present */intenc_padding;/* set if vbr header present *//* header_parsed, side_parsed and data_parsed must be all set 1before the full frame has been parsed */intheader_parsed;/* 1 = header of current frame has been parsed */intside_parsed;/* 1 = header of sideinfo of current frame has been parsed */intdata_parsed;intfree_format;/* 1 = free format frame */intold_free_format; /* 1 = last frame was free format */intbsize;intframesize;intssize; /* number of bytes used for side information, including 2 bytes for CRC-16 if present */intdsize;intfsizeold;/* size of previous frame, -1 for first */intfsizeold_nopadding;struct frame fr;/* holds the parameters decoded from the header */struct III_sideinfo sideinfo;unsigned char bsspace[2][MAXFRAMESIZE + 1024]; /* bit stream space used ???? */ /* MAXFRAMESIZE */realhybrid_block[2][2][SBLIMIT * SSLIMIT];inthybrid_blc[2];unsigned long header;intbsnum;realsynth_buffs[2][2][0x110];intsynth_bo;intsync_bitstream;/* 1 = bitstream is yet to be synchronized */intbitindex;unsigned char *wordpointer;plotting_data *pinfo;lame_report_function report_msg;lame_report_function report_dbg;lame_report_function report_err;} MPSTR, *PMPSTR;

数据结构关键字段说明:

  • struct buf *head, *tail
    • 这是一个字符串双向链表
    • head 是外部请求输入的buffer
    • tail 是获取的之前的buffer,解析的时候从tail开始。解析后会更新pos位置
  • wordpointer是指向bsspace的指针
    • decodeMP3_clipchoice中每次计算出头的大小,side info的大小,data的大小,都会复制到这个指针的内存里面,使用copy_mp来复制,复制的源是tail中的数据
    • 消费者在commong.c中的一系列的getbits函数,这些函数会更新bitindex以及wordpointer的指向getbitsgetbits_fastget_leq_8_bitsget_leq_16_bits
  • bsspace是位流的空间

decodeMP3_clipchoice是核心的入口函数

关键的流程解析:

  • addbuf
    • 将输入的需要解码的数据,插入到head的buffer中
    推荐阅读
  • 2021天津市和平五一文旅活动汇总

    一:2021天津“和平之春”艺术节系列活动30余项活动充分展现和平区社会主义现代化大都市标志区的新面貌、新成就、新气象,让广大群众零距离感受高雅艺术、创意文化的魅力。4月29日艺术节开幕式推出《红旗颂》、《我的中国心》等红色经典交响音乐会,为中国共产党成立100周年献礼。

  • 麻雀是几级保护动物吗(麻雀是多少级保护动物)

    麻雀是几级保护动物吗麻雀是国家二类保护动物,但是麻雀并不属于国家一级和二级保护动物的范畴,麻雀被被列入国家林业局2000年8月日发布的《国家保护的有益的或者有重要经济、科学研究价值的陆生野生动物名录》。麻雀栖息地海拔300-2500米。麻雀为杂食性鸟类,夏、秋主要以禾本科植物种子为食,育雏则主要以为害禾本科植物的昆虫为主,其中多为鳞翅目害虫。所以麻雀除了粮食作物之外也会以害虫为食,为农业生产解决了害虫问题,带来好处。

  • 无线鼠标为啥插不进电脑的接口(光电鼠标使用转接口接到电脑后)

    无线鼠标为啥插不进电脑的接口一只USB接口的光电鼠标使用USB转PS/2转接口连接到电脑PS/2接口上启动电脑后,发现鼠标指示灯亮,但无法使用。对于这样的故障,应该首先检查转接口方面的原因,然后检查其他方面的原因,此故障的解决步骤如下:将鼠标直接接在USB接口进行测试,发现可以正常工作,看来是转接口的问题。

  • 苏打水有甜味怎么回事 苏打水为什么喝着有有点甜

    苏打水呈弱碱性,有抗衰老的作用,有助于缓解消化不良和便秘症状。喝苏打水的注意事项1、苏打水的美容功效更是子虚乌有。对于人体的皮肤来说,酸性环境是健康皮肤的必要条件,标准PH值为5.5,弱碱性的苏打水非但不能提供酸性,更是会破换皮肤正常的生存环境,对皮肤有弊无利。

  • 兔头怎么吃(兔头的吃法介绍)

    我们一起去了解并探讨一下这个问题吧!兔头怎么吃吃兔头是需要一定技巧和水平的,把兔头从下巴处分开,然后吃兔子腮边的两块肌肉和舌头,最后才吃兔脑花,能锻炼到像吃大闸蟹那样干净,就算是出师了。兔是哺乳类兔形目兔科下属所有的属的总称,俗称兔子。生物学分类动物界脊索动物门,脊椎动物亚门,哺乳纲,兔形目。兔具有管状长耳,簇状短尾,强健后腿。多见于荒漠、荒漠化草原、热带疏林、干草原和森林或树林。

  • 火车和高铁会有一样的车次号吗(北京-哈尔滨间增开夜行动车组)

    具体时刻D4609次列车23:52分从北京站出发,次日8:19分到达哈尔滨西站,全程8小时27分钟;D4610次列车19:34分从哈尔滨西站出发,次日3:05分到达北京站,全程7小时31分钟。2018年中秋节放假时间为9月24日(周一),与周末连休,也就是合在一起放假三天,即9月22日-9月24日,如此推算,中秋假期第一天的火车票将于8月24日开始发售。

  • 戴尿不湿正确方法(科普戴尿不湿正确方法)

    戴尿不湿正确方法给宝宝换纸尿布前应该先去将手洗干净,避免细菌感染宝宝的稚嫩皮肤,另外将新的纸尿裤拆开备好。然后我们呢就将新的纸尿裤穿上,将纸尿裤调整成一个环状,然后将粘贴的部分贴好,以免脱落。接着我们将宝宝抱起来,将他的双腿分别穿过纸尿裤的两边,放至到纸尿裤在屁股正中间就可以了,然后在前面将纸尿裤提起来至腹部。最后将纸尿裤的侧方防漏护围调好,以免发生侧漏。

  • 金桔怎么种植 金桔怎么种植盆栽

    采用环状沟施、条沟施、穴施和土面撒肥等方法。土壤干旱时灌水,积水时排水。橘子树要勤施薄施,以氮肥为主,配合施用磷、钾肥,春、夏、秋梢抽发期施肥5-6次。幼树期选定类中央的延长枝和各主枝、副主枝延长枝后,对其进行中度甚至重度短截,并以短截程度和剪口芽方向调节各主枝之间生长的平衡。结果期继续选择短截处理各级骨干延长枝,抹除夏梢,促发健壮秋梢。秋季对旺长树采用环割、断根、控水等促花措施。

  • 流量畅享是什么意思(流量畅享解释)

    以下内容大家不妨参考一二希望能帮到您!流量畅享是什么意思流量畅享指电信推出的一款流量套餐业务,以河南省为例,该套餐的具体内容有如月基本费用为99元,全国通用流量20G、赠送300分钟国内通话时长和300MB宽带业务。

  • 2020广东省线上教育在+上课怎么操作(广东中小学3月2日起线上教育)

    2020广东省线上教育在+上课怎么操作?扩展材料全省中小学校3月2日起开展线上教育,学生不返校。线上教育按照省级托底、区域统筹、学校实施的原则组织开展。鼓励各地各学校开发使用更有针对性的线上教育资源。