编程序是程序的编码重要还是程序解决思路重要

编程序是程序的编码重要还是程序解决思路重要,第1张

都重要

在大多数情况下,当专业的软件开发者必须在编码还是编程之间进行选择时,编程是必经之路。在重要的项目中,在编写第一行代码之前,你需要确定程序的轮廓,并确定需要多少资源。代码完成后,你需要审查、优化并彻底测试它。

编码是解决简单问题的一种方法,例如与单任务程序和不需要大量计划和资源的单页网站有关。 “为了什么编码?”这个问题的另一个答案是,它是初学者的起点。要学习如何构建一个复杂的程序,必须知道如何处理它的每个部分,而这正是了解编码和编程之间的区别。

学习整理的相关章节链接:

基础篇_1音视频学习框架

基础篇_2 颜色空间模型 RBG、YUV、HSV

基础篇_3图像编码之Bmp

基础篇_4音频基础概念

基础篇_5音频数据采集

基础篇_6音频编码PCM

基础篇_7音频编码WAV

基础篇_8音频编码MP3\AAC

mp3编码详细信息参考如下链接

https://wwwjianshucom/p/58df71a19901

AAC是高级音频编码(Advanced Audio Coding)的缩写,出现于1997年,最初是基于MPEG-2的音频编码技术。由Fraunhofer IIS、Dolby Laboratories、AT&T、Sony等公司共同开发,目的是取代MP3格式。2000年,MPEG-4标准出台,AAC重新集成了其它技术(PS,SBR),为区别于传统的MPEG-2 AAC,故含有SBR或PS特性的AAC又称为MPEG-4 AAC。

AAC是新一代的音频有损压缩技术,它通过一些附加的编码技术(比如PS,SBR等),衍生出了LC-AAC,HE-AAC,HE-AACv2三种主要的编码,LC-AAC就是比较传统的AAC,相对而言,主要用于中高码率(>=80Kbps),HE-AAC(相当于AAC+SBR)主要用于中低码(<=80Kbps),而新近推出的HE-AACv2(相当于AAC+SBR+PS)主要用于低码率(<=48Kbps),事实上大部分编码器设成<=48Kbps自动启用PS技术,而>48Kbps就不加PS,就相当于普通的HE-AAC

AAC共有9种规格,以适应不同的场合的需要:

MPEG-2 AAC LC 低复杂度规格(Low Complexity)--比较简单,没有增益控制,但提高了编码效率,在中等码率的编码效率以及音质方面,都能找到平衡点

MPEG-2 AAC Main 主规格

MPEG-2 AAC SSR 可变采样率规格(Scaleable Sample Rate)

MPEG-4 AAC LC 低复杂度规格(Low Complexity)------现在的手机比较常见的MP4文件中的音频部份就包括了该规格音频文件

MPEG-4 AAC Main 主规格 ------包含了除增益控制之外的全部功能,其音质最好

MPEG-4 AAC SSR 可变采样率规格(Scaleable Sample Rate)

MPEG-4 AAC LTP 长时期预测规格(Long Term Predicition)

MPEG-4 AAC LD 低延迟规格(Low Delay)

MPEG-4 AAC HE 高效率规格(High Efficiency)-----这种规格适合用于低码率编码,有

Nero ACC 编码器支持

目前使用最多的是 LC和HE(适合低码率) 。流行的Nero AAC编码程序只支持LC,HE,HEv2这三种规格,编码后的AAC音频,规格显示都是LC。 HE其实就是AAC(LC)+SBR技术,HEv2就是AAC(LC)+SBR+PS技术;

Hev1和HEv2用此图简单表示:

(图中AAC即指的是原来的AAC-LC)

HE:“High Efficiency”(高效性)。 HE-AAC v1(又称AACPlusV1,SBR),用容器的方法实现了AAC(LC)+SBR技术。 SBR其实代表的是Spectral Band Replication(频段复制)。简要叙述一下,音乐的主要频谱集中在低频段,高频段幅度很小,但很重要,决定了音质。如果对整个频段编码,若是为了保护高频就会造成低频段编码过细以致文件巨大;若是保存了低频的主要成分而失去高频成分就会丧失音质。SBR把频谱切割开来,低频单独编码保存主要成分,高频单独放大编码保存音质,“统筹兼顾”了,在减少文件大小的情况下还保存了音质,完美的化解这一矛盾。

HEv2:用容器的方法包含了HE-AAC v1和PS技术。PS指“parametric stereo”(参数立体声)。原来的立体声文件文件大小是一个声道的两倍。但是两个声道的声音存在某种相似性,根据香农信息熵编码定理,相关性应该被去掉才能减小文件大小。所以PS技术存储了一个声道的全部信息,然后,花很少的字节用参数描述另一个声道和它不同的地方

(1)AAC是一种 高压缩比 的音频压缩算法,但它的 压缩比要远超过较老的音频压缩算法,如AC-3、MP3 等。并且其 质量可以同未压缩的CD音质相媲美

(2)同其他类似的音频编码算法一样,AAC也是采用了变换编码算法,但AAC使用了分辨率更高的滤波器组,因此它可以达到更高的压缩比。

(3)AAC使用了 临时噪声重整、后向自适应线性预测、联合立体声技术和量化哈夫曼编码 等最新技术,这些新技术的使用都使压缩比得到进一步的提高。

(4)AAC支持 更多种采样率和比特率、支持1个到48个音轨、支持多达15个低频音轨、具有多种语言的兼容能力、还有多达15个内嵌数据流

(5)AAC支持 更宽的声音频率范围,最高可达到96kHz,最低可达8KHz ,远宽于MP3的16KHz-48kHz的范围。

(6)不同于MP3及WMA, AAC几乎不损失声音频率中的甚高、甚低频率成分 ,并且比WMA在频谱结构上更接近于原始音频,因而声音的保真度更好。专业评测中表明, AAC比WMA声音更清晰,而且更接近原音

(7)AAC采用优化的算法达到了 更高的解码效率 ,解码时只需较少的处理能力。

ADIF Audio Data Interchange Format 音频数据交换格式 。这种格式的特征是 可以确定的找到这个音频数据的开始 ,不需进行在音频数据流中间开始的解码,即 它的解码必须在明确定义的开始处进行。故这种格式常用在磁盘文件中

ADTS Audio Data Transport Stream 音频数据传输流 。这种格式的特征是它 是一个有同步字的比特流,解码可以在这个流中任何位置开始 。它的特征类似于mp3数据流格式。

简单说,ADTS可以在任意帧解码,也就是说它每一帧都有头信息。ADIF只有一个统一的头,所以必须得到所有的数据后解码。且这两种的header的格式也是不同的,目前一般编码后的和抽取出的都是ADTS格式的音频流。两者具体的组织结构如下所示:

AAC的ADIF格式见下图:

AAC的ADTS的一般格式见下图:

图中表示出了ADTS一帧的简明结构,其两边的空白矩形表示一帧前后的数据。

ADIF 的头信息:

ADIF头信息位于AAC文件的起始处,接下来就是连续的 raw data blocks。

组成ADIF头信息的各个域如下所示:

ADTS 的固定头信息:

ADTS的可变头信息:

(1) 帧同步目的在于找出帧头在比特流中的位置 ,13818-7规定,aac ADTS格式的帧头同步字为12比特的“1111 1111 1111”

(2)ADTS的头信息为两部分组成,其一为固定头信息,紧接着是可变头信息。固定头信息中的数据每一帧都相同,而可变头信息则在帧与帧之间可变。

在AAC中,原始数据块的组成可能有六种不同的元素:

SCE: Single Channel Element单通道元素 。单通道元素基本上只由一个ICS组成。一个原始数据块最可能由16个SCE组成。

CPE: Channel Pair Element 双通道元素 ,由两个可能共享边信息的ICS和一些联合立体声编码信息组成。

CCE: Coupling Channel Element 藕合通道元素 。代表一个块的多通道联合立体声信息或者多语种程序的对话信息。

LFE: Low Frequency Element 低频元素 。包含了一个加强低采样频率的通道。

DSE: Data Stream Element 数据流元素 ,包含了一些并不属于音频的附加信息。

PCE: Program Config Element 程序配置元素 。包含了声道的配置信息。它可能出现在ADIF 头部信息中。

FIL: Fill Element 填充元素 。包含了一些扩展信息。如SBR,动态范围控制信息等。

AAC解码流程

[上传失败(image-eaf24c-1543569949388)]

如图:

在主控模块开始运行后,主控模块将AAC比特流的一部分放入输入缓冲区,通过 查找同步字得到一帧的起始 ,找到后,根据ISO/IEC 13818-7所述的语法 开始进行Noisless Decoding(无噪解码),无噪解码实际上就是哈夫曼解码,通过反量化(Dequantize)、联合立体声(Joint Stereo),知觉噪声替换(PNS),瞬时噪声整形(TNS),反离散余弦变换(IMDCT),频段复制 (SBR)这几个模块之后,得出左右声道的PCM码流 ,再由主控模块将其放入输出缓冲区输出到声音播放设备。

技术解析:

1主控模块:

所谓的主控模块,它的主要任务是操作输入输出缓冲区,调用其它各模块协同工作。

其中,输入输出缓冲区均由DSP控制模块提供接口。输出缓冲区中将存放的数据为解码出来的PCM数据,代表了声音的振幅。它由一块固定长度的缓冲区构成,通过调用DSP控制模块的接口函数,得到头指针,在完成输出缓冲区的填充后,调用中断处理输出至I2S接口所连接的音频ADC芯片(立体声音频DAC和DirectDrive耳机放大器)输出模拟声音。

2Noisless Decoding(无噪解码):

无噪编码就是哈夫曼编码,它的作用在于进一步减少尺度因子和量化后频谱的冗余,

即将尺度因子和量化后的频谱信息进行哈夫曼编码。全局增益编码成一个8位的无符号整数,第一个尺度因子与全局增益值进行差分编码后再使用尺度因子编码表进行哈夫曼编码。后续的各尺度因子都与前一个尺度因子进行差分编码。量化频谱的无噪编码有两个频谱系数的划分。其一为4元组和2元组的划分,另一个为节划分。对前一个划分来说,确定了一次哈夫曼表查找出的数值是4个还是2个。对后一个划分来说,确定了应该用哪一个哈夫曼表,一节中含有若干的尺度因子带并且每节只用一个哈夫曼表。

——分段

噪声编码将输入的1024个量化频谱系数分为几个段(section),段内的各点均使用

同一个哈夫曼表,考虑到编码效率,每一段的边界最好同尺度因子带的边界重合。所以每一段必段传送信息应该有:段长度,所在的尺度因子带,使用的哈夫曼表。

——分组和交替

分组是指忽略频谱系数所在窗,将连续的,具有相同尺度因子带的频谱系数分为一组放在

一起,共享一个尺度因子从而得到更好的编码效率。这样做必然会引起交替,即本来是以

c[组][窗][尺度因子带][ 系数索引]为顺序的系数排列,变为将尺度因子带同的系数放在一起: c[组][尺度因子带][窗][ 系数索引]

这样就引起了相同窗的系数的交替。

——大量化值的处理

大量化值在AAC中有两种处理方法:在哈夫曼编码表中使用escape标志或使用脉冲

escape方法。前者跟mp3编码方法相似,在许多大量化值出现时采用专门的哈夫曼表,这个表暗示了它的使用将会在哈夫曼编码后面跟跟一对escape值及对值的符号。在用脉冲escape方法时,大数值被减去一个差值变为小数值,然后使用哈夫曼表编码,后面会跟一个脉冲结构来帮助差值的还原

3尺度因子解码及逆量化

在AAC编码中,逆量化频谱系数是由一个非均匀量化器来实现的,在解码中需进行其逆运算。即保持符号并进行4/3次幂运算。在频域调整量化噪声的基本方法就是用尺度因子来进行噪声整形。尺度因子就是一个用来改变在一个尺度因子带的所有的频谱系数的振幅增益值。使用尺度因子这种机制是为了使用非均匀量化器在频域中改变量化噪声的比特分配。

——尺度因子带(scalefactor-band)

频率线根据人耳的听觉特性被分成多个组,每个组对应若干个尺度因子,这些组就叫做尺度因子带。为了减少信息含有短窗的边信息,连续的短窗可能会被分为一组,即将若干个短窗当成一个窗口一起传送,然后尺度因子将会作用到所有分组后的窗口去。

4联合立体声(Joint Stereo)

联合立体声的是对原来的取样进行的一定的渲染工作,使声音更”好听”些。

5知觉噪声替换(PNS)

知觉噪声替换模块是一种以参数编码的方式模拟噪声的模块。在判别出音频值中的噪

声后,将这些噪声不进行量化编码,而是采用一些参数告诉解码器端这是某种噪声,然后解码器端将会对这些噪声用一些随机的编码来制造出这一类型的噪声。

在具体操作上,PNS模块对每个尺度因子带侦测频率4kHz以下的信号成分。如果这个

信号既不是音调,在时间上也无强烈的能量变动,就被认为是噪声信号。其信号的音调及能量变化都在心理声学模型中算出。

在解码中,如果发现使用了哈夫曼表13(NOISE_HCB),则表明使用了PNS。由于M/S立体声解码与PNS解码互斥,故可以用参数ms_used来表明是否两个声道都用同样的PNS。如果 ms_used参数为1,则两个声道会用同样的随机向量来生成噪声信号。PNS的能量信号用noise_nrg来表示,如果使用了PNS,则能量信号将会代替各自的尺度因子来传送。噪声能量编码同尺度因子一样,采用差分编码的方式。第一个值同样为全局增益值。它同强度立体声位置值及尺度因子交替地放在一起,但对差分解码来说又彼此忽略。即下一个噪声能量值以上一个噪声能量值而不是强度立体声位置或尺度因子为标准差分解码。随机能量将会在一个尺度因子带内产生noise_nrg所计算出的平均能量分布。此项技术只有在MPEG-4 AAC中才会使用。

6瞬时噪声整形(TNS)

这项神奇的技术可以通过在频率域上的预测,来修整时域上的量化噪音的分布。在一

些特殊的语音和剧烈变化信号的量化上,TNS技术对音质的提高贡献巨大!TNS瞬态噪声整形用于控制一个转换窗口内的瞬时噪声形态。它是用一个对单个通道的滤波过程来实现的。传统的变换编码方案常常遇到信号在时域变化非常剧烈的问题,特别是语音信号,这个问题是因为量化后的噪声分布虽然在频率域上得到控制,但在时域上却以一个常数分布在一个转换块内。如果这种块中信号变化得很剧烈却又不转向一个短块去,那这个常数分布的噪声将会被听到。TNS的原理利用了时域和频域的二元性和LPC(线性预测编码)的时频对称性,即在其中的任意一个域上做编码与在另一域上做预测编码等效,也就是说,在一个域内做预测编码可以在另一域内增加其解析度。量化噪声产生是在频域产生的,降低了时域的解析度,故在这里是在频域上做预测编码。在AACplus中,由于基于AAC profile LC,故TNS的滤波器阶数被限制在 12阶以内。

7反离散余弦变换(IMDCT)

将音频数据从频域转换到时域的过程主要是由将频域数据填入一组IMDCT滤波器来实现的。在进行IMDCT变换后,输出数值经过加窗,叠加,最后得到时域数值。

8频段复制(SBR)

简要叙述,音乐的主要频谱集中在低频段,高频段幅度很小,但很重要,决定了

音质。如果对整个频段编码,若是为了保护高频就会造成低频段编码过细以致文件巨大;若是保存了低频的主要成分而失去高频成分就会丧失音质。SBR把频谱切割开来,低频单独编码保存主要成分,高频单独放大编码保存音质,“统筹兼顾”了,在减少文件大小的情况下还保存了

音质,完美的化解这一矛盾。

9参数立体声(PS)

对于之前的立体声文件来说,其文件大小是单声道的两倍,但是两个声道的声音存在

某种相似性,根据香农信息熵编码定理,相关性应该被去掉才能减小文件大小。所以PS技术存储了一个声道的全部信息,之后,用很少的字节当作参数来描述另一个声道和它不同的地方。

1、首先,打开手机酷我音乐“设置”,然后再打开“应用管理”。

2、其次,在“应用管理”页面里,找到酷我音乐应用,点击进入应用进入管理界面。

3、最后,在“应用信息”页面打开酷我音乐的设计编码程序即可。

程序员:

程序员是从事程序开发、程序维护的专业人员。程序员一般需要会做:确认通过审查方案的目标,输入数据,分析师,监事,和客户的输出要求的项目要求。

通常情况下将程序员分为程序设计人员和程序编码人员,软件从业人员分为初级程序员、中级程序员、高级程序员(现为软件设计师)、系统分析员,系统架构师,测试工程师六大类。

程序:

程序是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具。以某些程序设计语言编写,运行于某种目标结构体系上。

程序就如同以英语(程序设计语言)写作的文章,要让一个懂得英语的人(编译器)同时也会阅读这篇文章的人(结构体系)来阅读、理解、标记这篇文章。

扩展资料:

程序员的日常工作:

1、确认通过审查方案的目标,输入数据,分析师,监事,和客户的输出要求的项目要求。

2、安排项目要求在编程序列分析要求;准备工作流程图和使用计算机知识的能力,题材,编程语言和逻辑图。

3、编码工作流程的信息转换成计算机语言的项目要求。

4、通过输入编码信息的计算机程序。

5、确认程序操作进行测试,修改程序序列和/或代码。

6、准备写操作指令供用户参考。

7、保持历史记录,通过记录方案的制定和修订。

参考链接:-程序员

-程序

1问题的定义及规划

此阶段是软件开发与需求放共同讨论,主要确定软件的开发目标及其可行性。

2需求分析

在确定软件开发可行性的情况下,对软件需要实现的各个功能进行详细需求分析。需求分析阶段是一个很重要的阶段,这一阶段做的好,将为整个软件项目的开发打下良好的基础。“唯一不变的是变化本身”,同样软件需求也是在软件爱你开发过程中不断变化和深入的,因此,我们必须定制需求变更计划来应付这种变化,以保护整个项目的正常进行。

3软件设计

此阶段中偶要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计、数据库设计等。软件设计一般分为总体设计和详细设计。还的软件设计将为软件程序编写打下良好的基础。

4程序编码

此阶段是将软件设计的结果转化为计算机可运行的程序代码。在程序编码中必定要制定统一、符合标准的编写规范。以保证程序的可读性、易维护性。提高程序的运行效率。

5软件测试在软件设计完成之后要进行严密的测试,一发现软件在整个软件设计过程中存在的问题并加以纠正。整个测试阶段分为单元测试、组装测试、系统测试三个阶段进行。测试方法主要有白盒测试和黑盒测试。

欢迎分享,转载请注明来源:浪漫分享网

原文地址:https://hunlipic.com/langman/596474.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-05
下一篇2023-07-05

发表评论

登录后才能评论

评论列表(0条)

    保存