视音频压缩编码

简介: 视音频压缩编码

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情


视音频信号数字化后所产生的数据速率相当大,例如一分钟的双声道立体声.采样频率为11.025kHz,8bit量化,其数据速率达176.4kbit/s,存储容量需要1.323MB,而数字化激光唱盘的CD-DA红皮书标准是采用44.1kHz釆样,16bit量化,双声道一分钟其存储容量达10.584MB。

   

视频信息数字化后数据量更大,以分量编码的数字视频信号为例,其数据率高达216Mbit/s,在此情况下,1小时的电视节目需要近80GB的存储容量,要远距离传送这样一路高速率的数字视频信号,通常要占用108〜216MHz的信道带宽,显然这样大的数码率在现有的数字信道中传输或在现有的媒体上存储,其成本是十分昂贵的。因此为了提高信道利用率和在有限的信道容量下传输更多的信息,必须对视音频数据进行压缩。


1. 数据压缩的理论依据

     

在数据压缩技术中Shannon所创立的信息论对数据压缩有着极其重要的指导意义,它一方面给出了数据压缩的理论极限,一方面指明了数据压缩的技术途径。

   

由信息论基础知识可知,信源概率分布越均匀其熵越大;反之,其熵越小。离散无记忆信源只要其概分布不均匀就存在着信息的冗余,因而就存在着数据压缩的可能性。而信源压缩编码的基本途径之一,就是在一定信源概率分布条件下,尽可能使编码平均码长接近于信源的熵,减少冗余信息。

   

 信源往往并不是无记忆的,其前后出现的信源符号常常具有一定的相关性。两信源符号间的相关性越大,冗余也越大,因此.数据压缩的另一个基本途径则是去除信源中各信源符号间的相关性。


2. 限失真压缩编码

 

   由信息论基础知识可知,信源冗余来自信源本身的相关性和信源概率分布的不均匀性。因此,通过去除信源的相关及改变信源概率分布模型,则可达到压缩数据量的目的。限失真压缩编码即是在允许解码后信号有一定失真的情况下,通过去除信源的自相关来达到压缩数据的目的。在允许失真不超过某一限度时,压缩编码的比特率是受限的,存在着一个下限,这个下限由率失真函数来定义。

 

  率失真理论虽然没有给出怎样达到比特率下限的具体方法,但从理论上指明了方向。即在给定信号允许失真度的条件下,为了减少信号传输的比特率,应尽量减小传输信号的方差。目前.在视音频编码中普遍采用的预测编码和变换编码,正是根据这一理论对原始视音频信号进行适当处理’使处理后信号的方差减小,最终达到压缩编码的目的。

3. 无失真压缩编码

   

 预测编码和变换编码都是基于去除样值间的相关性而达到数据压缩的目的。如果信源已经是无记忆的,即各样值间已没有相关性或相关性很小。这时只要各事件出现的概率不相等,该信源就仍然有冗余度存在,就还有进一步进行数据压缩的可能性。无失真压缩编码的基本原理则是去除信源的概率分布不均匀性,使编码后的数据接近其信息炳而不产生失真,因此,这种编码方法又叫炳编码。另外,由于这种编码完全基于信源的统计特性因而也可称其为统计编码。无失真压缩编码的方法主要有:基于信号样值概率分布特性的Huffman编码、算术编码和基于信号样值相关性的游程编码。


(1) Huffman编码

   

变字长编码的最佳编码定理:在变字长编码中,对于岀现概率大的信息符号编以短字长的码,对于概率小的符号编以长字长的码。如果码字长度严格按所对应符号出现概率大小逆顺序排列.则平均码字长度一定小于其他任何符号顺序排列方式。

   

Huffman编码是根据可变长度最佳编码定理,应用Huffman算法而得到的一种编码方法。可以证明,在给定符号集和概率模型时,没有任何其他整数码比Huffman码有更短的平均码长,也即它是一种最优码。

   

 虽然Huffman码是变长的,码流中又没有分隔码字的标识符,但由于它的无歧义性,完全能够正确地恢复原信源所输出的符号序列来。

 

   需要注意的是,由于Huffman构码过程的最基本依据是信源的离散概率,如果信源的实际概率模型与构码时所假设的概率模型有差异,实际的码长将大于预期值,编码效率将下降。


(2) 算术编码

   

 算术编码是另一种利用信源概率分布特性、能够趋近熵极限的编码方法。尽管它也是对出现概率大的符号采用短码,对出现概率小的符号采用长码,但其编码原理与Huffman编码却不相同。而且在信源概率分布比较均匀的情况下其编码效率高于Huffman编码。它和Huffman编码的最大区别在于它不是使用整数码。算术编码的特点在于

   

 ① 在Huffman编码中,后续符号的码字只是简单地附加到已编好的码字串之后,并不改变已有的码字串。而在算术编码中.后续符号的编码有可能因为进位而引起已编好的码字串的改变。

   

② 在Huffman编码中,最短的码字长度为1比特,所以即使对最常出现的符号进行编码也需在已编好的码字串的基础上增加1比特。而在算术编码中,对累计概率为0的符号编码时不增加已编好的码字串的长度。因此,算术编码时只要将出现概率最大的符号置于累计概率为0的位置,便可大大降低码字串长度。

   

 ③ 在算术编码中,随着概率子空间的不断划分,区间长度L越来越小,用来表示它的数字位数越来越长,增加了实现该算法的难度;另外,完成算术编码和解码需进行乘法和除法运算,同样增加了实现该算法的复杂度,进而提高了成本。


(3) 游程编码


       由于视音频信号中各样值间一般都存在相关性,特别是由计算机生成的图像和大部分二值图像,它们往往在某些区域具有相同的像素值。游程编码的主要方法就是在某个特定方向上将样本值相同的若干像素或声音样本用一个游程长度和一个样本值来表示。如沿水平扫描线上的一串m个样值具有相同的数值〃,则只要传输(n,m)即可。游程编码对误码较为敏感,为防止误码扩散应采用行、列同步的方法将差错控制在一行、一列之内。


4. 音频压缩编码技术


   

对于不同类型的音频信号而言,其信号带宽是不同的,如电话音频信号为200Hz~3.4kHz,调幅广播音频信号为50Hz〜7kHz,调频广播音频信号为20Hz〜15kHz,激光唱盘音频信号为10Hz〜20kHz。随着对音频信号音质要求的增加,信号频率范围逐渐增加,要求描述信号的数据量也就随之增加,从而带来处理这些数据时间和传输、存储这些数据的容量增加。


(1)音频信号压缩编码方法

      一般来说,音频信号的压缩编码主要有以下几种主要类型:


① 波形编码

   

波形编码是在信号采样和量化过程中考虑到人的听觉特性,使编码信号尽可能与原输入信号匹配,又能适应人的应用要求,如全频带编码(包括脉冲编码调制PCM,瞬时、准瞬时压扩PCM,自适应差分ADPCM等);子带编码(包括自适应变换编码ATC、心理学模型等);矢量量化。波形编码的特点是在高码率条件下可获得高质量的音频信号,适于高保真度语音和音乐信号的压缩技术。


② 参数编码

   

参数编码是将音频信号以某种模型表示,再抽出合适的模型参数和参考激励信号进行编码;声音重放时,再根据这些参数重建即可,这就是通常讲的声码器(Vocoder)。参数编码压缩比很高,但计算量大,且不适合高保真度要求的场合。用此类方法构成声码器的有:线性预测(LPC)声码器、通道声码器(Channel Vocoder)、共振峰声码器(Format Vocoder)等。


③ 混合编码

   

混合编码是一种吸取波形和参数编码的优点,进行综合的编码方法,如多脉冲线性预测MP-LPC,矢量和激励线性预测VSELP,码本激励线性预测CELP,短延时码本激励线性预测编码LBCELP,长时延线性预测规则码激励RPE-LTP等。


(2)不同质量要求时的音频编码技术选择


① 电话质量的音频压缩编码

     

电话质量语音信号频率规定在300Hz〜3.4kHz,如采用标准的脉冲编码调制PCM.当采样频率为8kHz,8bit量化时,所得数据速率为64kbit/s,即一个数字话路。CCITT制定的PCM标准G.711,速率为64kbit/s,采用非线性量化,其质量相当于12bit线性量化。

 

 电话信号的自适应差分脉冲编码调制ADPCM标准G.721,速率为32kbit/s.这一技术是对信号和它的预测值的差分信号进行量化,同时再根据邻近差分信号的特性自适应改变量化参数.从而提高压缩比,又能保持一定信号质量。因此ADPCM对中等电话质量要求的信号能进行高效编码,而且可以在调幅广播和交互式激光唱盘音频信号压缩中应用。

 

  为了适应低速率语音通信的要求,必须采用参数编码或混合编码技术,如线性预测编码LPC,矢量量化VQ,以及其他的综合分析技术。其中较为典型的码本激励线性预测编码CELP实际上是一个闭环LPC系统,由输入语音信号确定最佳参数,再根据某种最小误差准则从码本中找出最佳激励码本矢量。CELP具有较强的抗干扰能力,在4~16kbit/s传输速率下,即可获得较高质量的语音信号。短时延码本激励线性预测编码LD-CELP的标准G.728,速率16kbit/s,其质量与32kbit/s的G.721标准基本相当。采用长时延线性预测规则码本激励RPE-LTP标准GSM,速率为13kbit/s。


② 调幅广播质量的音频压缩编码

   

 调幅广播质量音频信号的频率在50Hz〜7kHz范围。G.722标准是釆用16kHz釆样,14bit量化,信号数据速率为224kbit/s,采用子带编码方法,将输入音频信号经滤波器分成高子带和低子带两个部分,分别进行ADPCM编码,再混合形成输出码流,224kbit/s可以被压缩成64kbit/s,最后进行数据插入(最高插入速率达16kbit/s),因此利用G.722标准可以在窄带综合服务数据网N-ISDN中的一个B信道上传送调幅广播质量的音频信号。

③ 高保真环绕立体声音频压缩编码

   

高保真环绕立体声音频信号频率范围是50Hz〜20kHz,釆用44.1kHz采样频率,16bit量化进行数字化转换,其数据速率每声道达705kbit/s。国际标准化组织ISO和CCITT联合制定的MPEG标准,成为国际上公认的高保真环绕立体声音频压缩标准。MPEG音频第一和第二层次编码是将输入音频信号进行采样频率为48kHz, 44.1kHz,32kHz的采样,经滤波器组将其分为32个子带,同时利用人耳掩蔽效应,根据音频信号的性质计算各频率分量的人耳掩蔽门限,选择各子带的量化参数,获得高的压缩比。MPEG第三层次是在上述处理后再引入辅助子带.非均匀量化和爛编码技术,再进一步提高压缩比。MPEG音频压缩技术的数据速率为每声道32〜448kbit/s,适合于CD-DA光盘应用。


5. 视频压缩编码

(1)视频信息的冗余

 

  虽然表示图像需要大量的数据,但图像数据是高度相关的。一幅图像内部以及视频序列中相邻图像之间有大量的冗余信息。对于一幅二维图像,我们可以注意到图像中的许多部分的灰度或颜色差别并不是太大,某些区域是均匀着色或高度相关的。例如图像的背景可能是一堵墙,它是均匀上色的或显示出规则的模式。这称为空间相关或空间冗余。对于没有场景切换或镜头快速推拉摇移的视频序列,画面中的背景一般并无变化,只有移动的物体产生画面的差异,因而各帧图像间的差别极小,即视频序列中的图像是高度相关的。这称为时间相关或时间冗余。静止图像压缩的一个目标是在保持重建的图像的质量可以被接受的同时,尽量去除空间冗余信息。对于活动视频压缩,在去掉空间冗余的同时去除时间冗余,可以达到较高的压缩比。


相关文章
|
3月前
|
存储 编解码 算法
图像的压缩算法--尺寸压缩、格式压缩和品质压缩
图像的压缩算法--尺寸压缩、格式压缩和品质压缩
59 0
|
机器学习/深度学习 存储 编解码
Opus从入门到精通(八)Opus编码基础之压缩编码
莫尔斯码就是大家熟悉的电报码,它的发明为人类做出了巨大的贡献.该码采用"."和"-"来表示26个英文字母,这实质上还是二进制码(点为"0",而杠为"1"),但是它没有采用固定字长的编码方式,而是采用了常用字母用短码表示(如E用"."表示,T用"-"表示),不常用字母用长码表示(如Z用"--.."表示,j用"-..-"表示)的变长编码方式.通过对英文单词进行大量统计,找出各字母的概率,最后确定有12个字母出现概率最低,用4bit数字表示,有8个字母出现概率较低,用3bit数字表示;有4个字母出现概率较高,用2bit数字表示;有两个字母出现概率最高,用1bit表示,共26个字母.
515 0
|
存储 编解码 算法
编码压缩介绍
压缩编码介绍,JPEG标准,H.264,AVS,预测,变换,量化,熵编码,环路滤波
120 0
|
Web App开发 编解码 测试技术
HandBrake 开源视频转码器、编码转换器、格式转换器
HandBrake 开源视频转码器、编码转换器、格式转换器 点击下图进入官网下载页面:https://handbrake.fr/downloads.php macOS 下可能会阻止安装! 其实也不是安装,是运行! 需要打开系统偏好设置》安全性与隐私》窗口下方会看到被阻止的程序,点击左下角解锁就可以了。
2466 0
|
数据采集 存储 传感器
【Android RTMP】音频数据采集编码 ( AAC 音频格式解析 | FLV 音频数据标签解析 | AAC 音频数据标签头 | 音频解码配置信息 )(一)
【Android RTMP】音频数据采集编码 ( AAC 音频格式解析 | FLV 音频数据标签解析 | AAC 音频数据标签头 | 音频解码配置信息 )(一)
254 0
【Android RTMP】音频数据采集编码 ( AAC 音频格式解析 | FLV 音频数据标签解析 | AAC 音频数据标签头 | 音频解码配置信息 )(一)
|
数据采集 Android开发 索引
【Android RTMP】音频数据采集编码 ( AAC 音频格式解析 | FLV 音频数据标签解析 | AAC 音频数据标签头 | 音频解码配置信息 )(二)
【Android RTMP】音频数据采集编码 ( AAC 音频格式解析 | FLV 音频数据标签解析 | AAC 音频数据标签头 | 音频解码配置信息 )(二)
542 0
【Android RTMP】音频数据采集编码 ( AAC 音频格式解析 | FLV 音频数据标签解析 | AAC 音频数据标签头 | 音频解码配置信息 )(二)
|
存储 关系型数据库 MySQL
全网最全面、全详细的编码、解码知识!!!
全网最全面、全详细的编码、解码知识!!!
201 0
全网最全面、全详细的编码、解码知识!!!
|
数据采集 传感器 编解码
【Android RTMP】音频数据采集编码 ( FAAC 编码器编码 AAC 音频解码信息 | 封装 RTMP 音频数据头 | 设置 AAC 音频数据类型 | 封装 RTMP 数据包 )
【Android RTMP】音频数据采集编码 ( FAAC 编码器编码 AAC 音频解码信息 | 封装 RTMP 音频数据头 | 设置 AAC 音频数据类型 | 封装 RTMP 数据包 )
235 0
|
Linux
X264编解码器开发: Linux下读取摄像头数据,通过X264压缩编码为X264格式裸流视频文件
X264编解码器开发: Linux下读取摄像头数据,通过X264压缩编码为X264格式裸流视频文件
286 0