多媒体架构----Audio介绍_audio架构-程序员宅基地

前言:

本篇blog主要从一下几个方面对Audio基础介绍:


一、Audio Overview



二、Audio编码过程



三、Audio编码分类

无压缩:

pcm

音乐编码:

有损:mp3 aac wma ogg

无损:wav flac alac lpac

编码:

AMR-WB, AMR-NB, GSM, LPC, SPEEX, CELP,G.7xx, ADPCM…


四、Audio基础知识

1.声音是由机械振动产生的
2.振动频率须20~20000 Hz之间才能形成可闻声
3.声音须在媒质中才能传播——以声波的方式传播


我们这里涉及的音频,一般就是指人耳可以听到的声音频率,在20Hz~20kHz之间的声波称为音频。

样本(Sample)
被采样的原始资料,如一段连续的声波波形。


采样频率(Sampling Rate)
采样频率,也称为采样速度或者采样率,定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。采样频率的倒数是采样周期或者叫作采样时间,它是采样之间的时间间隔。通俗的讲采样频率是指计算机每秒钟采集多少个声音样本,是描述声音文件的音质、音调,衡量声卡、声音文件的质量标准。


采样深度(Bit Depth)
采样深度可以理解为采集卡处理声音的解析度。这个数值越大,解析度就越高,录制和回放的声音就越真实。我们首先要知道:电脑中的声音文件是用数字0和1来表示的。连续的模拟信号按一定的采样频率经数码脉冲取样后,每一个离散的脉冲信号被以一定的量化精度量化成一串二进制编码流,这串编码流的位数即为采样深度,也称为量化精度。

Nyquist-Shannon采样定律
在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中最高频率fmax的2倍时(fs.max>2fmax),采样之后的数字信号完整地保留了原始信号中的信息。


声道(Sound Channel) 
是指声音在录制或播放时在不同空间位置采集或回放的相互独立的音频信号,所以声道数也就是声音录制时的音源数量或回放时相应的扬声器数量。


五、Audio模块需要重点解决什么问题

Playback
Recording
Device control
Volume control


六、Linux中Audio框架

OSS(Open Sound System)
早期Linux版本采用的是OSS框架,它也是Unix以及类Unix系统中广泛使用的一种音频体系。
由于缺乏对最新内核特性的支持等原因,已被Linux内核放弃。
详细信息可以参考http://www.opensound.com/


ALSA(Advanced Linux Sound Architecture)
Linux社区为取代OSS提出的一种新框架。
在Kernel 2.5版本中正式引入。
ALSA有如下特性:
高效地支持大多数类型的Audio Interface
高度模块化的声音驱动
线程安全设计
在用户空间提供了alsa-lib来简化应用程序的编写
与OSS API保持兼容


Android中Audio框架




•Audioservice
–由system server启动,被service manager管理
–监听HDMI, Bluetooth等设备相关变化事件,通知audio system
•AudioFlinger
–将多路audio stream mix为单路PCM audio输出到输出设备上
–应用音量设置到stream上
•AudioPolicy Manager
–定义多路audio并发的用户场景的规则
–定义audio 输入输出设备的策略
–管理各种各样的输入输出接口和设备
–选择和定义正确的路由规则
–管理每个stream音量设置/mute设置

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weijory/article/details/62424433

智能推荐

CVPR 2020 | 将深度学习算法应用于移动端最新研究汇总-程序员宅基地

文章浏览阅读591次。点击上方“3D视觉工坊”,选择“星标”干货第一时间送达作者:Derrick Mwiti编译:ronghuaiyang导读边缘设备上的机器学习是未来的一大方向。在最近结束的2020年CVP..._深度学习算法部署在相机系统上

关于安装pytorch以及transforms的版本问题_torch 1.13.0对应的transformers-程序员宅基地

文章浏览阅读1.1w次,点赞5次,收藏20次。win10-CUDA10.0: python3.6 + torch1.4 + torchvision0.5.0 + transforms成功安装问题描述:&#8195首先,我刚开始使用的是,python3.5,安装了torch1.1、torchvision0.3.0,然后transforms死活装不上,一直报错。找了很久,终于在某一个角落看到可能是python版本问题,然后屁颠屁颠跑去..._torch 1.13.0对应的transformers

Spring Cloud Gateway--支持https_spring cloud gateway ssl-程序员宅基地

文章浏览阅读4.6k次,点赞2次,收藏6次。https转http其他网址SpringCloud Gateway Https设置 以Http 转发 路由 给后台微服务_jingle_1995的博客-程序员宅基地http转https其他网址Spring Cloud Gateway同时监听HTTP和HTTPS(http自动转发https端口)_jingle_1995的博客-程序员宅基地..._spring cloud gateway ssl

j-dict-select-tag设置默认值-程序员宅基地

文章浏览阅读3.8k次。j-dict-select-tagdictCode 设置默认值后台设置的数据字典。initialValue 设置默认字典值。_j-dict-select-tag设置默认值

Mac环境配置MySQL(详细)_mysql mac-程序员宅基地

文章浏览阅读4.2w次,点赞67次,收藏322次。非常详细_mysql mac

ubuntu 18.04 识别不到有线网卡_ubuntu找不到网卡-程序员宅基地

文章浏览阅读9.9k次,点赞9次,收藏57次。ubuntu 识别不到有线网卡_ubuntu找不到网卡

随便推点

论文简述 | EAO-SLAM:基于集成数据关联的单目半稠密物体级SLAM-程序员宅基地

文章浏览阅读475次。点击上方“3D视觉工坊”,选择“星标”干货第一时间送达1摘要对象级数据关联和姿态估计在语义SLAM中起着重要作用,但由于缺乏鲁棒和精确的算法,这一问题一直没有得到解决.在这项工作中,我们..._半稠密地图

7-zip图标_如何用外观更好的图标替换7-Zip的丑图标-程序员宅基地

文章浏览阅读7.6k次。7-zip图标7-Zip is a fantastic Windows program for advanced file zipping, whether you’re password-protecting your archives or just trying to compress them down even smaller. There’s just one problem: its..._7z 图标

编程游戏:划拳机器人比赛-{ 咱们园子是否应该设立一个算法挑战/编程竞赛的平台? }...-程序员宅基地

文章浏览阅读115次。网友王集鹄组织了一个编程比赛:划拳机器人比赛。类似“Robocode” 的游戏。早先Microsoft就推出过一款名为Terrarium的code game,其实这种游戏已经有相当久的历史了,很多人都将其看成是那些hacker们的游戏。-------比赛相关帖子如下: 【编程游戏】编写一个会划拳的机器人参加擂台赛,规则内详。 http://topic.csdn.net/u/20..._猜拳机器人博弈算法

无涯教程-Dart - isEmpty函数_dart数组.isempty-程序员宅基地

文章浏览阅读29次。如果集合没有元素,则返回true。_dart数组.isempty

LODOP字体不识别 英文字母连起来 引号不正常-程序员宅基地

文章浏览阅读461次。打印超文本的时候,有时候会发现html中设置的css样式显示不正常,字体根本不是设置的字体,这种情况有可能是:1.该操作系统没有安装自己指定的那种字体,那么没有安装自然就不能显示设置的字体。2.该操作系统已经安装了该字体,但是在css样式中指定字体的时候,用的不是字体实名,而是字体别名,因为字体别名属于web领域的行业习惯,不属于国际规范,事实上非常乱,lodop出于性能考虑,所以lodop没有把..._lodop 重叠

is incompatible with i386:x86-64 output报错-程序员宅基地

文章浏览阅读3.1k次。在[一个操作系统的实现]书中,第五章,开始编译elf文件格式的操作系统内核。将hello.asm编译为hello.o,再编译为可执行文件编译hello.o时,nasm报错is incompatible with i386:x86-64 output。原因是原实验是在32位操作系统下做的,使用的库也是32位的,而现在使用的64位操作系统。解决方法:修改上述两步编译..._is incompatible with i386:x86-64 output