MPEG音视频编解码之MP3编解码概述

2 MP3编解码原理

2.1 MP3音频压缩标准概述

MP3全称是动态影像专家压缩标准音频层面3(Moving Picture Experts Group Audio Layer III)。是当今较流行的一种数字音频编码和有损压缩格式,它设计用来大幅度地降低音频数据量,而对于大多数用户来说重放的音质与最初的不压缩音频相比没有明显的下降。它是在1991年由位于德国埃尔朗根的研究组织Fraunhofer-Gesellschaft的一组工程师发明和标准化的。

简单地说,MP3就是一种音频压缩技术,由于这种压缩方式的全称叫MPEG Audio Layer3,所以人们把它简称为MP3。MP3是利用 MPEG Audio Layer 3 的技术,将音乐以1:10 甚至 1:12 的压缩率,压缩成容量较小的file,换句话说,能够在音质丢失很小的情况下把文件压缩到更小的程度。而且还非常好的保持了原来的音质。正是因为MP3体积小,音质高的特点使得MP3格式几乎成为网上音乐的代名词。每分钟音乐的MP3格式只有1MB左右大小,这样每首歌的大小只有3-4兆字节。使用MP3播放器对MP3文件进行实时的解压缩(解码),这样,高品质的MP3音乐就播放出来了。 

MP3是一个数据压缩格式。它丢弃掉脉冲编码调制(PCM)音频数据中对人类听觉不重要的数据,从而达到了小得多的文件大小。

MP3是一种基于频域的子带编码,其基本流程如图2-1所示:

图2-1 MP3压缩算法流程框图【1】

原始的模拟信号经过AD采样器后,转化为PCM样本,作为MP3编码器的数据输入源。整个MP3编码是基于频域的编码,因此必须将原始的PCM做时频转换。由于我们不可能将整个时域上的信号通过一次付立叶变换转换到频域上(音频信号是时变的),因此只能在时域上逐段进行,于是我们将PCM样本分块进行处理。对单声道MPEG-1而言,一帧包含2个gr, MP3编码则是以gr为基本单元的。首先576个PCM样本经过多相分析滤波器组(Polyphase Analysis Filterbank),转换成32个等频宽的子带信号(Subband Signal),然后通过改良离散余弦变换(Modified Discrete CosineTransform,MDCT),将子带时域信号转化为频线值,每个子带18条,一共576条频线。在此过程中,会用到第二心理声学模型提供的窗口类型。对于快变信号做三次连续短窗(12点)的MDCT,以提高信号的时域分辨率和控制前回音;对于慢变信号做一次长窗(36点)的MDCT,以提高信号的频域分辨率。[1]

同时,第二心理声学模型根据左右声道的相关性计算决定用M/S(Middle/Side)还是用L/R(Left/Right)编码方式。然后根据第二心理声学模型提供的PE(perceptual entropy)值分配每帧编码比特数,对频线值进行量化;再将量化结果进行反量化计算量化噪声,看其是否在掩敝曲线以下;否则反复调整比例因子(scalefactor),对量化结果重新量化,直到量化噪声达到最优,退出量化循环,对量化结果进行哈夫曼编码。最后按照MPEG标准规定的数据流格式输出。


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

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

相关文章

Python实现GitBook工具

写在前面 本工具是通过Python脚本实现 GitBook 自动 生成 执行 编译 发布的功能 你可以在这里下载exe 使用 1. exe下载,并移动位置 将exe文件放在你的gitbook文件夹中,或者放在空文件夹中 2. file.md 创建 名为file.md的文件,在你要写book的目录下 注意: 这里file.md文件名…

shell脚本中用到的条件和循环语句

本博文介绍一下shell脚本中常用的条件和循环语句:条件语句:循环语句:示例:if语句:eg1.eg2.2.case语句:简单的case语句:配合循环的case语句:3.for语句:简单的for语句&…

BZOJ 2243 染色(树链剖分好题)

2243: [SDOI2011]染色 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 7971 Solved: 2990[Submit][Status][Discuss] Description 给定一棵有n个节点的无根树和m个操作,操作有2类: 1、将节点a到节点b路径上所有点都染成颜色c; 2、询问…

processing动态代码大全_做一张动态海报需要多少步?

人们习惯性地把程序员跟设计师分成两种不同性质的人,好像程序员就不会有美感,设计师逻辑思维就一定会很弱,但最近几年我们发现越来越多的程序员学设计,设计师学编程的跨界故事。新媒体艺术家,邱伟豪也是其中一员&#…

【ffmpeg for wince】音视频编解码多平台移植(for window/wince)

from: http://www.cnblogs.com/windwithlife/archive/2009/05/31/1492728.html 终于完成了了第二个Client side原型(for Wince),其中花掉我最多时间的就是ffmpeg的对WINCE的移植。其中有大半时间是由于网上的一些不完整及不正确信息所误导,…

python实现猴子爬山算法

猴子爬山一只顽猴在一座有N级台阶的小山上爬山跳跃。上山时需从山脚至山顶往上跳N级台阶&#xff0c;一步可跳1级&#xff0c;或跳3级&#xff0c;求上山有多少种不同的跳法&#xff1f; &#xff08;N<50&#xff09; 问题分析: 每一次都可以选择1,2,3有3种跳法 方法1 直…

指针版 单链表复习

#include <bits/stdc.h> #define P pair<int,int> using namespace std;typedef long long LL;typedef struct LNode{int data;struct LNode *nxt; }LNode,*LinkList;bool Linklist_init(LinkList &root){root new LNode; ///分配头结点&#xff0c;指针域为空…

手写springboot_Spring Boot 入门教程 | 图文讲解

目录一、Spring Boot 是什么二、为什么要使用 Spring Boot三、快速入门3.1 创建 Spring Boot 项目3.2 项目结构3.3 引入 Web 依赖3.4 编写第一个接口3.5 启动程序&#xff0c;验证效果四、总结五、GitHub 示例代码一、Spring Boot 是什么以下截图自 Spring Boot 官方文档&#…

lunix 安装python3

Linux下默认系统自带python2.6的版本&#xff0c;这个版本被系统很多程序所依赖&#xff0c;所以不建议删除&#xff0c;如果使用最新的Python3那么我们知道编译安装源码包和系统默认包之间是没有任何影响的&#xff0c;所以可以安装python3和python2共存 首先去python官网下载…

手机音视频应用开发(专注于Symbian、iPhone、Android等跨平台音视频应用开发方案)

一款好的手机应用&#xff0c; 能让用户在第一分钟就爱上他&#xff0c; 一款烂的手机应用&#xff0c; 能让用户在第一分钟就要卸载它。 好的应用必须的稳定、快速。市场日益激励&#xff0c;一个项目的周期是一个漫长的过程&#xff0c;投入的时间、精力、费用。一笔庞大的预…

Colemak布局的实现 Window+Linux+Android

Colemak布局的实现 WindowLinuxAndroid title: ‘Colemak布局的实现’ subtitle: ‘一个极客的键盘布局’ tags: entertainment solution 前言 大部分同学使用的键盘布局都是QWERTY布局 而科学研究表明,可能这个设计不是最高效率的布局,甚至的有意为了降低打字的效率而研究的…

机器学习之朴素贝叶斯法

转载请注明出处&#xff1a;http://www.cnblogs.com/Peyton-Li/ 朴素贝叶斯法是机器学习模型中一个比较简单的模型&#xff0c;实现简单&#xff0c;比较常用。 是定义在输入空间上的随机向量&#xff0c;是定义在输出空间上的随机变量。是和的联合概率分布。训练数据集由独立同…

如何让梯形变成平行四边形_开放的课堂 创新的天地——平行四边形的面积教学片段与反思...

一、 课题的确定学生在三年级学过长方形、正方形的面积计算&#xff0c;经历过从数方格的办法得出面积计算公式的过程。因此&#xff0c;学生对于面积计算公式的推导有一定的经验和知识基础。基于上述考虑&#xff0c;我想完全放手让学生去研究如何计算平行四边形的面积。这对学…

bzoj1670【Usaco2006 Oct】Building the Moat 护城河的挖掘

1670: [Usaco2006 Oct]Building the Moat护城河的挖掘 Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 387 Solved: 288[Submit][Status][Discuss]Description 为了防止口渴的食蚁兽进入他的农场&#xff0c;Farmer John决定在他的农场周围挖一条护城河。农场里一共同拥有N(8…

音视频编解码的一些源代码

音视频编解码的一些源代码 &#xff08;转&#xff09;资料名称&#xff1a;音视频编解码的一些源代码 资料成文时间&#xff1a;不详 语言&#xff1a;英文 页数&#xff1a;很多 何人所著&#xff08;来源&#xff09;&#xff1a; 文件格式&#xff1a;原代码 开发工具:vc 说…

Vue之组件之间的数据传递

Vue的组件作用域都是孤立的&#xff0c;不允许在子组件的模板内直接引用父组件的数据&#xff0c;必须使用特定的方法才能实现组件之间的数据传递。 下列为在vue-cli创建项目中的操作 一父组件向子组件传递数据 在Vue中&#xff0c;用props向子组件传递数据。 子组件部分&#…

偶然发现一个大佬写的 React 脚手架,叫Moderate, 用起来很方便

发现一个大佬写的 React 脚手架&#xff0c;叫Moderate, 用起来很方便 Moderate&#xff0c;意思为适中的&#xff0c;适度的&#xff0c;用这个作为代号&#xff0c;主要取决于他的本名“中用”&#xff0c;其一以贯之的想法就是中庸&#xff0c;秉承着以人为本的态度&#xf…

案例 自动办公_1300张办公系列前台参考图,请您查收!

设计情报局室内设计师的灵感聚集地关注一个有格调的空间必定有一处高颜值的前台漂亮的前台很重要...是空间给人的第一印象一个独一无二的前台设计还可以提升整个空间的气质与逼格连个漂亮的前台都没有作为颜控界扛把子的设计师们还怎么混&#xff1f;SO今天小编给大家带来一份《…

iframe里面的元素触发父窗口元素事件的jquery代码 转

例如父窗口定义了一个事件。 top: $(dom1).bind(topEvent, function(){}); 那么iframe里面的元素怎样触发父窗口dom1的事件呢&#xff1f;这样吗&#xff1f; $(dom1, parent.document).trigger(topEvent); 看似正确&#xff0c;实则误导人。 因为父窗口的jquery对象与iframe里…

mplayer 所支持的音视频编解码

这里我把mplayer 所支持的音视频编解码都罗列出来&#xff0c;方便大家查阅&#xff1b;-----------------------------------------------------------------------------------------------Video codecs:Working video codecscodec namefourcccodecfileoutcommentsFFmpeg Zip…