MPEG-1 详解

news2024/11/17 20:39:58

MPEG-1 详解

  • MPEG-1 详解
    • 特点
    • MPEG-1 中的运动补偿与 B 帧的引入
    • MPEG-1 vs H.261
    • MPEG-1 视频数据流的结构
    • MPEG-1 视频压缩模式
    • MPEG-1 视频解码框图
    • MPEG-1 音频编码模式
      • MPEG-1 audio layer 1
      • MPEG-1 audio layer 2
      • MPEG-1 audio layer 3
    • MPEG-1 音频编码框图
    • MPEG-1 音频解码框图
    • 参考

MPEG-1 详解

MPEG是活动图像组(Moving Picture Exports Group)的缩写。

MPEG-1是MPEG组织制定的第一个视频和音频有损压缩标准。视频压缩算法于1990年定义完成。1992年底,MPEG-1正式被批准成为国际标准。

MPEG-1是为CD光盘介质定制的视频和音频压缩格式,支持的视频格式有mpg、mlv、mpe以及mpeg等等。一张70分钟的CD光盘传输速率大约在1.4Mbps。

MPEG-1采用了块方式的运动补偿、离散余弦变换(DCT)、量化等技术,并为1.2Mbps传输速率进行了优化。MPEG-1随后被Video CD采用作为核心技术。

VCD采用的就是MPEG-1的标准,该标准是一个面向家庭电视质量级的视频、音频压缩标准。VCD的分辨率只有约352×240,并使用固定的比特率(1.15Mbps),因此在播放快速动作的视频时,由于数据量不足,令压缩时宏区块无法全面调整,结果使视频画面出现模糊的方块。因此MPEG-1的输出质量大约和传统录像机VCR相当,这也许是Video CD在发达国家未获成功的原因。

MPEG-1音频分三代,其中最著名的第三代协议被称为MPEG-1 Layer 3,简称MP3,目前已经成为广泛流传的音频压缩技术。MPEG-1音频技术在每一代之间,在保留相同的输出质量之外,压缩率都比上一代高。第一代协议MP1被应用在LD作为记录数字音频以及飞利浦公司的DGC上;而第二代协议MP2后来被应用于欧洲版的DVD音频层之一。

特点

随机访问,灵活的帧率、可变的图像尺寸、定义了I-帧、P-帧和B-帧 、运动补偿可跨越多个帧 、半像素精度的运动向量 、量化矩阵、GOF结构 、slice结构 、技术细节、输入视频格式。

MPEG-1 中的运动补偿与 B 帧的引入

与H.261、H.263相同,MPEG-1也采用混合编码,结合了运动补偿策略与变换编码策略进行预测残差估计。

在H.261中,每个P帧都通过运动补偿进行编码,P帧的每个宏块都会从参考的已编码I帧或P帧中找到一个参考宏块,并对宏块差值进行编码,这个过程被称为预测,宏块差值被称为预测残差,这个残差会经历DCT、量化和熵编码。H.261中的P帧只能参考它之前的帧,这被称为前向预测。在实际中,可能在P帧之前的帧中根本找不到一个可以很好的与目标宏块匹配的参考宏块,但可能在P帧之后的某个帧中也许会存在一个比较匹配的参考宏块,这种情况下就需要引入后向预测了,即用P帧之后的某帧来对当前帧进行预测,用未来的帧来预测当前帧,我们在下一段中将详细讲解这种机制在MPEG中的实现。

MPEG引入了除I帧、P帧之外的第三种帧——B帧,即双向预测帧,其中的字母B表示单词“bidirectional”。

在这里插入图片描述

B帧的工作方式如上图所示,目标帧过去的帧和未来的帧都会与目标帧的宏块进行运动向量搜索。如果在过去帧和未来帧中都找到了可接受的运动向量,则两个运动向量都会被记录,并在差分编码时,过去帧中的宏块和未来帧中的宏块会先进行一个平均(在上图中用一个百分号%表示),然后再与目标宏块取差,这时既有前向预测也有后向预测;如果只在一个方向的参考帧中找到了误差在可接受范围内的运动向量,则只会对一个方向的参考宏块进行编码,即只会发生前向预测或后向预测中的一种。

一个MPEG视频的帧序列模式通常是固定的,在MPEG的文件头中有写入规定的字段。MPEG中用 M 表示一个P帧和它之前的最近一个I帧或P帧的间隔距离,用 N 表示两个最近的I帧之间的间隔距离。例如当 M=3, N=9 时,帧模式就是:I B B P B B P B B I B B P B B P B B I … 而当 M=1 时,就表示没有用到任何B帧。

由于在MPEG中引入了B帧,而B帧的解码是依赖于它之后的帧的,这就导致MPEG视频帧的编码顺序与显示顺序不同。并且在解析B帧时,必须要等它后面的参考帧解析结束才能解析当前帧,这就可能带来延迟,尤其是在不太稳定的网络的流媒体传输中。

MPEG-1 vs H.261

除了B帧的引入,MPEG-1还在H.261的基础上做了以下升级:

  1. 支持更多种类的源视频格式。

  2. 引入了分片(slice)的概念。slice比GOB更加灵活,可以更好地控制视频的比特率。并且每一个slice都有一个唯一的slice_start_code,可以用于错误恢复。因为一个slice的解码不依赖于其他的变长编码,在流媒体传输中如果一个slice的某些比特发生了错误,并不会影响之后slice的解析,并且通过slice_start_code可以实现帧时间的定位。

  3. MPEG-1引入了量化表。在H.261中,DCT之后的量化操作是通过指定量化步长实现的,一个频域矩阵中所有的DCT交流系数都采用同一个步长进行量化,比较粗糙。MPEG-1中参考了JPEG的做法,引入了量化表对DCT之后的系数矩阵进行量化。并且量化表还可以进行放缩,用于控制压缩质量与最终的比特率。值得注意的是,对于帧内编码,量化表中的元素两两不同;而对于帧间编码,即预测残差矩阵的量化,其使用的量化表中只有一个数值,即对于每个位置的DCT系数都采用同一个量化步长。帧内编码和帧间编码所使用的量化表如下图所示:
    在这里插入图片描述

  4. 运动向量精度的提升。像H.263一样,MPEG也允许0.5像素的精度出现。

  5. 更大的运动向量搜索窗口。H.261的运动向量搜索范围为[-15, 15],而MPEG允许的运动向量搜索范围高达-512, 511.5或-1024, 1023。实际上,由于图像分辨率的限制,特别高的运动向量搜索范围一般在实际中不会使用。

  6. 允许比特流的随机访问。MPEG在封装格式中引入了GOP层,GOP是按视频的时间编码的,每个GOP都以一个I帧开头,因此一个GOP的解码不依赖于其他GOP。借助GOP,解码器可以从视频的比特流中任意选一个位置,找到那个位置对应的GOP,并从那个GOP开始解析,从而实现比特流的随机访问(这对应到我们日常看视频就是在拖拽进度条这样一个操作)。

MPEG-1 视频数据流的结构

在这里插入图片描述

如上图所示,MPEG-1的码流被分为6层,我们逐一来看每一层的内容。

  • Sequence layer:这一层以一个sequence header开头,结尾有一个sequence end code,中间是若干个GOP。在sequence header中包含了有关图像的一些信息,如水平尺寸(horizontal_size)、垂直尺寸(vertical_size)、像素高宽比(pixel_aspect_ratio)、帧率(frame_rate)、比特率(bit_rate)、缓冲区大小(buffer_size)、量化矩阵(quantization_matrix)等等。同时,在GOP与GOP之间可能也有optional sequence header,用于表示某些参数的变化。

  • Group of Pictures (GOPs) layer:一个GOP以一个GOP header开头,后面是若干个图像,其中必须要有一个图像是I帧。在GOP header中包含有时间信息,标志了这个GOP距离视频序列开始的时间(时、分、秒)。

  • Picture layer:这里的picture指的其实就是帧图像,就像有三种帧(I帧、P帧、B帧)一样,有三种picture:I-picture、P-picture、B-picture。一个Picture在picture header之后会包含若干个slice。

  • Slice layer:slice的主要作用是为了比特率控制以及错误恢复,每个slice的长度和位置都在slice header中记录。一个slice中在slice header之后就是若干个宏块macroblock。

  • Macroblock layer:一个宏块(16*16)包含了4个Y block(8*8)、1个Cb block(8*8)、1个Cr block(8*8)。

  • Block layer:每个block中是编码后的帧信息,在结尾有block end。如果对应的block是帧内编码,则block中包含通过DPCM编码的直流系数、以及通过VLC编码的交流系数;如果block是帧间编码,则直流系数和交流系数都是VLC编码。

视像数据结构:

在这里插入图片描述

MPEG-1 视频压缩模式

为了保证视频质量不变,而又能够获得比较大的压缩比。MPEG专家组把图像(picture)分为了三种类型:I帧、P帧、B帧,然后采用不同的算法分别对他们进行压缩。

我们展示一下对I帧进行压缩编码的算法图,这也是使用和JPEG类似的压缩算法,来减少空间冗余数据的。

在这里插入图片描述

可以看到图中是将I帧图像数据,以宏块为单位,取出8X8的图块,然后再进行处理的。在MPEG-1中,I帧、P帧、B帧的压缩比,通常为下表:

在这里插入图片描述

可以看到,压缩后的I帧的数据量最大,而B帧的数据量最小。并且平均压缩比为27:1,这也就是使用MPEG-1标准,能获得的压缩比。

MPEG1的视频压缩算法对运动不激烈的视频信号可获得较好的图像质量,但当运动激烈时,图像会产生马赛克现象。

MPEG-1 视频解码框图

在这里插入图片描述

MPEG-1 音频编码模式

MPEG-1Audio具体规定了用于数字存储媒介的高质量音频的编码与解码表示,适用于32kHz、44.1kHz和48kHz取样率。编码系统可以工作在单声道、双声道、立体声和联合立体声四个方式,每通道的数据率为128kb/s。

该标准定义了三个层次(Layer)的编码算法,允许用户根据不同的应用需要采用不同层次的编码系统。

  • 层1(Layer 1):编码简单,用于数字盒式录音磁带。

  • 层2(Layer 2):算法复杂度中等,用于数字音频广播(DAB)和VCD等。

  • 层3(Layer 3):编码复杂,用于互联网上的高质量声音的传输,如MP3音乐,可以压缩10倍。

从层次1到层次3,层次越高压缩性能越好,音质性能逐渐增加,最终能提供极高品质的音频,同时编码/解码器也越复杂。用户可在复杂性和压缩质量之间权衡选择。第1、2层编码方式(简称为MP1、MP2)为子带取样,第3层编码方式(简称为MP3)为变换后的子带取样。

不同层次的主要性能指标下表所示。

在这里插入图片描述

MPEG-1 audio layer 1

所需频宽:384kbps。

压缩率4:1。

特性:编码简单,用于数字盒式录音磁带,2声道,VCD中使用的音频压缩方案就是MPEG-1层Ⅰ。

优点:压缩方式相对时域压缩技术而言要复杂得多,同时编码效率、声音质量也大幅提高,编码延时相应增加。可以达到“完全透明”的声音质量(EBU音质标准)。

缺点:频宽要求较高。

MPEG-1 audio layer 2

所需频宽:256~192kbps。

压缩率:8:1~6:1。

特性:算法复杂度中等,用于数字音频广播(DAB)和VCD等,2声道,而MUSICAM(MP2)由于其适当的复杂程度和优秀的声音质量,在数字演播室、DAB、DVB等数字节目的制作、交换、存储、传送中得到广泛应用。

MPEG-1 audio layer 3

所需频宽:128~112kbps。

压缩率12:1~10:1。

特性:MP3是在综合MUSICAM和ASPEC的优点的基础上提出的混合压缩技术,在当时的技术条件下,MP3的复杂度显得相对较高,编码不利于实时,但由于MP3在低码率条件下高水准的声音质量,使得它成为软解压及网络广播的宠儿。

优点:压缩比高,适合用于互联网上的传播。

缺点:MP3在128K Bit rate及以下时,会出现明显的高频丢失。

MPEG-1 音频编码框图

下图给出了编码器的基本框图,编码器由四个功能单元组成:时-频映射网络,心理声学模块,量化器和编码器,以及帧-封装单元。

在这里插入图片描述

时-频映射网络的功能是将输人音频信号分解成编码使用的若干子带。映射分为三层,分别标为Ⅰ、Ⅱ和Ⅲ,它们的复杂度、时延和主观感觉性能依次递增。l层的算法利用一个带通滤波器集将音频信号分为32个带宽恒定的子带,I层和Ⅲ层中也采用这样的滤波器集。根据前面对不等间隔排列的临界频带的讨论,这种滤波器集的设计应兼顾计算效率和感觉性能。层的算法只在Ⅰ层算法上进行了简单改进,将数据编码为更大的群,从而提高了压缩性能。Ⅲ层的算法则更为周详,因为其设计目标是得到更接近于临界频带划分的频率分解。

心理声学模块是编码器的核心部分。其功能是对输人音频信号的频谐内容进行分析,然后计算出这三层中每层每个子带的信号-屏蔽比。

量化器-编码器根据心理声学模块输出的信息决定如何将可用比特分配给子带信号以进行量化。动态分配比特的目的是使量化噪声的可听性降至最小。

帧-封装单元将量化后的音频样值集合为编码比特流。

在这里插入图片描述

根据上述分析,编码器可进一步细化为上图所示结构,它由红蓝两条线构成。

红线是输入的PCM码流经过多相滤波器组分成32个子带信号,经过块形成后,对每个子带数据进行线性量化,对部分量化级别采用颗粒优化以增大压缩比,最后装帧输出。

蓝线是对输入的PCM码流进行FFT变换,经过心理声学模型去除信号中被掩蔽的部分,提取出比例因子后进行动态比特分配:对人耳听觉敏感的低频成分分配较多比特,对高频噪声分配较少的比特,以增大压缩比。比例因子经过选择后,数据编码装帧输出。

MPEG-1 音频解码框图

下图所示为译码器结构,译码器由三个功能单元组成:帧-解封单元,频率样值重构网络以及频-时映射网络,通过对比可以发现,只有编码器必须采用心理声学模块。

在这里插入图片描述

因为译码器完成的是编码器所进行的信号处理操作的逆过程,即将收到的编码比特流转换为时域音频信号,原理类似,此处不再赘述。

参考

  1. https://news.eda365.com/tech/jsbaike/120011713611313.html
  2. https://zhuanlan.zhihu.com/p/68222970
  3. https://upimg.baike.so.com/doc/7125021-7348317.html
  4. https://baike.baidu.com/item/MPEG-1/214216
  5. https://zhuanlan.zhihu.com/p/577377155
  6. https://blog.csdn.net/houxiaoni01/article/details/99830240
  7. https://blog.csdn.net/cc289123557/article/details/133966121
  8. https://blog.csdn.net/m0_70886513/article/details/135294745
  9. https://blog.csdn.net/qq_52127343/article/details/128223620

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1571247.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大数据实验四-MapReduce编程实践

一.实验内容 MapReduce编程实践: 使用MapReduce实现多个文本文件中WordCount词频统计功能,实验编写Map处理逻辑、编写Reduce处理逻辑、编写main方法。 二.实验目的 1、通过实验掌握基本的MapReduce编程方法。 2、实现统计HDF…

使用阿里云试用Elasticsearch学习:1.2 基础入门——数据输入和输出

什么是文档? 在大多数应用中,多数实体或对象可以被序列化为包含键值对的 JSON 对象。 一个 键 可以是一个字段或字段的名称,一个 值 可以是一个字符串,一个数字,一个布尔值, 另一个对象,一些数组值&#…

Linux+HA高可用24X7的安全保证

一. 介绍作为服务器,需要提供一定的24X7的安全保证,这样可以防止关键节点的宕机引起系统的全面崩溃。利用OpenSource开源软件,完成系统的高可靠双机热备方案。基于linux的 HA软件可靠稳定,比使用商业版本的HA软件降低成…

中国智慧城管哪家做的好?

智慧城市管理综合执法系统建立全市统一的法律法规、裁量基准、执法事项、执法文书和基础信息库,实现从获取线索、立案、调查、处理到结案全过程的信息化和文书制作的智能化。全面支持移动执法办案,提高执法效率。 技术架构: 微服务javasprin…

arm开发板移植工具mkfs.ext4

文章目录 一、前言二、手动安装e2fsprogs1、下载源码包2、解压源码3、配置4、编译5、安装 三、移植四、验证五、总结 一、前言 在buildroot菜单中,可以通过勾选e2fsprogs工具来安装mkfs.ext4工具: Target packages -> Filesystem and flash utilit…

【Python】免费的图片/图标网站

专栏文章索引:Python 有问题可私聊:QQ:3375119339 这里是我收集的几个免费的图片/图标网站: iconfont-阿里巴巴矢量图标库icon(.ico)INCONFINDER(.ico)

力扣刷题 二叉树的迭代遍历

题干 给你二叉树的根节点 root ,返回它节点值的 前中后序 遍历。 示例 1: 输入:root [1,null,2,3] 输出:[1,2,3]示例 2: 输入:root [] 输出:[]示例 3: 输入:root […

智慧农业新篇章:数字乡村引领农业现代化

随着信息技术的飞速发展,数字乡村正成为引领农业现代化的重要力量。智慧农业作为数字乡村的核心内容,以其高效、精准、可持续的特点,为农业现代化开辟了新篇章。本文将从智慧农业的内涵与特点、数字乡村在农业现代化中的引领作用、智慧农业发…

机器学习第33周周报Airformer

文章目录 week33 AirFormer摘要Abstract一、论文的前置知识1. 多头注意力机制(MSA)2. 具有潜变量的变分模型 二、文献阅读1. 题目2. abstract3. 问题与模型阐述3.1 问题定义3.2 模型概述3.3 跨空间MSA(DS-MSA)3.4 时间相关MSA&…

小程序如何设置余额充值和消费功能

小程序中设置余额充值和消费功能非常重要的,通过让客户在小程序中进行余额充值,不仅可以提高用户粘性,还可以促进消费,增加用户忠诚度。以下是如何在小程序中设置余额充值和消费功能的步骤: 1. **设计充值入口**&…

Cisco Nexus 9000v Switch, NX-OS Release 10.4(3)F

Cisco Nexus 9000v Switch, NX-OS Release 10.4(3)F 用于网络原型设计和学习研究的虚拟化数据中心交换机 请访问原文链接:https://sysin.org/blog/cisco-nexus-9000v/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.o…

【软件测试】测试常见知识点汇总

测试常见知识点汇总 一、什么是测试1.1 测试和调试的区别1.2 什么是需求1.2.1 用户需求1.2.2 软件需求 1.3 测试用例要素1.4 软件的生命周期及各阶段概述1.5 开发模型和测试模型(记住特点和适用场景)1.5.1 开发模型1.5.1.1 瀑布模型(自上而下…

微信小程序生命周期管理:从数据初始化到事件绑定

作为一个独立的应用开发平台,微信小程序提供了自己的生命周期机制,与我们熟悉的Vue.js框架有一些差异。掌握小程序生命周期的特点和使用技巧,对于开发高质量的小程序应用至关重要。深入理解和掌握小程序生命周期的使用技巧,将有助于我们构建出更加健壮和可维护的小程序应用。 小…

内网穿透的应用-如何在Android Termux上部署MySQL数据库并实现无公网IP远程访问

文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前言 Android作为移动设备,尽管最初并非设计为服务器,但是随着技术的进步我们可以将Android配置为生产力工具,变成一个随身…

tesseract-ocr一站式安装与使用

目录 前言 安装tesseract-ocr 添加环境变量 1、在path中添加 2、在系統變量中添加 3、验证是否添加成功 添加语言包 更多语言包下载 示例程序 前言 如果你遇到了:make sure the TESSDATA_PREFIX Failed loading language \‘chi_sim 那么就是语言包缺少这个&#xf…

地质地貌卫星影像集锦(三 矿产资源篇)

1. 元古代沉积岩的抬升 这个地区位于Leigh Creek中部,距离澳大利亚南部的阿德莱德约500km,弗林德斯山脉的北面是Gawler克拉通。弗林德斯山脉是由元古代沉积岩抬升后形成的块体,在其之下的是寒武纪的岩石,它座落在距阿德莱德北…

正则表达式浅析

正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很…

内表GROUP BY

内表GROUP BY REPORT z_test_table_lhy. DATA: price TYPE sflight-price. SELECT MIN( price ) AS m,carridINTO DATA(t_temp)FROM sflightGROUP BY carridHAVING MAX( price ) > 10. "Having从句中比较统计结果时,需要将统计函数重写一遍,而不…

python爬虫获取豆瓣前top250的标题(简单)

今天是简略的一篇,简单小实验 import requests from bs4 import BeautifulSoup# 模拟浏览器的构成(请求头) headers {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Ch…

6、【单例模式】确保了一个类在程序运行期间只有一个实例

你好,我是程序员雪球 在软件设计中,单例模式是一种常见的设计模式。它确保了一个类在程序运行期间只有一个实例,并提供了全局访问该实例的方式。单例模式在许多场景中都有广泛的应用,例如共享资源管理、数据库连接、日志记录器等…