致知在格物,物格而后知至。所谓致知在格物者,言欲致吾之知,在即物而穷其理也

意思讲的是要探究事物的原理,从而获得智慧。 写代码也是如此,只有了解其中的原理,才能运用自如

所以我们要想学好Android的音视频开发,必须先了解什么是音视频,音视频的构造,在计算机中是怎样表示的等基本原理。

Android音视频架构-学习路线规划

本文就是为大家讲解音频的原理,先看本文的主要内容

一. 声音是什么

1. 声音的概念:物体振动产生的声波,可以用波形图来表示声音

2. 声音的三要素:分别为音调,音量和音色。

音调高的表现是声音尖锐,音调低的表现是低沉。

音量高的表现是声音响度大,音量小的表现是声音响度小

音色指声音品质和声波的频谱分布有关,再细点就是和产生振动或者传递振动的物体的谐振有关, 比如说和物体的形状,体积,密度,温度,湿度,晶格取向等均有关系

在相同的时间段内,音调高的声波的个数多,音量高的波形振幅大,后面我们对音频进行变调处理时和音量调节也是通过这个原理来的

二. 声音是怎么转为音频的

通过麦克风等设备将声音信号转为电信号,在通过进一步处理为计算式可识别的数字信号,最后编码为可播放的音频文件。

我们不必去细究每一个点,但是其中有几个关键的概念我们要知道,就是采用率,量化位数,声道数。这几个也是我们后面音频录制编码或者解码时需要处理的东西

1. 音频的量化与编码

采样率:因为我们不可能采集到连续的声音,所以这时候就有采样率的概念,即1s中内采样的次数(采样是等时间间隔的),也就是说一秒中内我们记录多少个声音数据。采用率越高,对声音的还原程度就越高,采样频率一般为8kHz(电话音质),16kHz, 32klHz, 44.1kHz(CD音质),48kHz(录音室音质)

量化位数:指的是一个采样要用多少bit来存放,常用的是16bit。量化位数越高也就代表能表达的声音范围多大。

声道数:分单声道,双声道,多声道

这里引出码率的概念,可以简单理解为音频文件的大小,一个未压缩的音频流(PCM)码率计算公式为

码率 = 采用率 * 量化位数 * 声道数

我们可以来算一下, 采用率44.1k(cd音质),量化位数16bit, 双声道的 5分钟的音频大小是多少

44.1k * 16 * 2 * 5 * 60  ≈ 50M

显然我们平时见的音频文件并没有这么大,接下来我们就要引出下面的内容,音频的压缩

2. 音频的压缩

音频的压缩主要有两种,无损压缩与有损压缩

无损压缩:压缩后可复原回原始数据

有损压缩:压缩后无法复原回原始数据

压缩的原理:

(1)   去除冗余: 人类可识别的的声音频率是20Hz 到 20k Hz,所以根据这个原理,可将音频不在该频率段内的数据去除

(2)频谱掩蔽效应:一个频率的声音能量小于某个阈值之后,人耳就会听不到,这个阈值称为最小可闻阈。当有另外能量较大的声音出现的时候,该声音频率附近的阈值会提高很多,即所谓的掩蔽效应

(3)时域掩蔽效应:当强音信号和弱音信号同时出现时,还存在时域掩蔽效应。即两者发生时间很接近的时候,也会发生掩蔽效应

当然,这些我们只要了解就可以,不是我们的重点研究内容。

根据这些压缩原理,现在已经诞生了很多音频的编解码器

可以先简单了解下有哪几种编码后对应的格式:

  • 无损格式,例如WAV,FLAC,APE,ALAC,WavPack(WV)
  • 有损格式,例如MP3,AAC,Ogg Vorbis,Opus.

目前音频最广泛应用的是MP3格式,而AAC因为其压缩比较高,音质也较好而广泛用于泛娱乐化直播等场景中

接下来的文章我会结合相应的项目来重点介绍一些常用的编码格式

Android音视频开发-音频篇-音频的原理相关推荐

  1. android音频开发6,Android 音视频开发(一) : 通过三种方式绘制图片

    想要逐步入门音视频开发,就需要一步步的去学习整理,并积累.本文是音视频开发积累的第一篇. 对应的要学习的内容是:在 Android 平台绘制一张图片,使用至少 3 种不同的 API,ImageView ...

  2. Android音视频开发之音频录制和播放

    Android音视频开发之音频录制和播放 1.封装音频录制工具类: public class RecorderAudioManagerUtils {private static volatile Re ...

  3. Android 音视频开发(二):使用 AudioRecord 采集音频PCM并保存到文件(学习笔记)

    关于 AudioRecord Android SDK 提供了两套音频采集的API,分别是:MediaRecorder 和 AudioRecord,前者是一个更加上层一点的API,它可以直接把手机麦克风 ...

  4. Android音视频开发,详说PCM音频重采样、PCM编码

    直播伴音,两种数据能否合在一起?不能叠加在一起 会有噪音 合并以后 再去编码推流 直播的例子 客户端播放器,可以开启多个播放器 对于我们重采样 很多时候就是为了统一格式,就是为了要合并这个流,去推送, ...

  5. Android 音视频开发(一):PCM 格式音频的播放与采集

    什么是 PCM 格式 声音从模拟信号转化为数字信号的技术,经过采样.量化.编码三个过程将模拟信号数字化. 采样 顾名思义,对模拟信号采集样本,该过程是从时间上对信号进行数字化,例如每秒采集 44100 ...

  6. Android 音视频开发(一) -- 使用AudioRecord 录制PCM(录音);AudioTrack播放音频

    前言,音视频这块,确实比较难入门,本着学习的态度,我这边也跟着 Android 音视频开发入门指南 打怪升级,留下个脚印,大家共勉. 音视频 系列文章 Android 音视频开发(一) – 使用Aud ...

  7. 【Android音视频开发】音频编码原理

    文章变更表 文章版本号 变更内容 变更日期 备注 0.0.1 创建 2022/9/29 初版 0.0.2 补充编码原理和音频格式等内容 2022/9/30 1. 前言 在[Android音视频开发] ...

  8. android音视频【十】音频mp3剪切

    人间观察 为了等你,我错过了等我的人. 介绍 Android中在一些短视频的制作app软件上,会有给视频增加背景音乐的功能,而背景音乐/歌曲(一般是mp3)是从服务器上下载后,然后本地解码,往往用户会 ...

  9. 【Android 音视频开发打怪升级:FFmpeg音视频编解码篇】一、FFmpeg so库编译

    转自:https://juejin.im/post/5e130df55188253a8b42ebac 目录 一.Android音视频硬解码篇: 1,音视频基础知识 2,音视频硬解码流程:封装基础解码框 ...

  10. android硬编码封装mp4,【Android 音视频开发打怪升级:音视频硬解码篇】四、音视频解封和封装:生成一个MP4...

    [声 明] 首先,这一系列文章均基于自己的理解和实践,可能有不对的地方,欢迎大家指正. 其次,这是一个入门系列,涉及的知识也仅限于够用,深入的知识网上也有许许多多的博文供大家学习了. 最后,写文章过程 ...

最新文章

  1. join......on 后面的and 和where的区别
  2. rss C语言,Android内存:VSS/RSS/PSS/USS介绍
  3. mysql截取longblob类型字段内一小块数据的方法
  4. Linux 中vim编辑器学习笔记
  5. WebSphere中连接池的配置
  6. java破坏双亲委派_java的类加载机制-双亲委派,破坏双亲委派
  7. Jquery的validate表单验证
  8. CE教程:植物大战僵尸(金币数值修改)
  9. 软件测试记录表模版,简单软件测试报告模板.doc
  10. h5页面 请在微信客户端打开链接_电脑版微信网页授权提示请在微信客户端打开链接?...
  11. 51单片机英文缩写全称
  12. flex TLF 文本流编辑器
  13. 站在两个世界的边缘——知无崖
  14. 基于OpenCASCADE自制三维建模软件(三)搭建开发环境
  15. Windows10 无法正常搜狗和搜狗输入法
  16. baidumaptrace.php,GitHub - SignalLine/BaiduMapTrace: 百度地图运动轨迹纠偏、去噪、绑路之百度鹰眼sdk服务...
  17. his使用-重置密码
  18. 局域网内简易网站的发布
  19. 【转载】按键精灵对安卓APP进行自动化界面点击测试
  20. 基于python 的股票行情查询系统开发(一)

热门文章

  1. 在线学习系统,实现企业高效培训学习
  2. 基于大数据的股票数据可视化分析与预测系统
  3. 十二生肖被戏称为“十二缺”,指的是这十二种动物各自都缺少一样东西
  4. 任天堂底座方案,支持按键切换TV模式!
  5. 《操作系统》第八章习题加解析
  6. matlab中的fix()的用法
  7. python光标变粗_PyCharm光标变粗的解决办法
  8. VARIANT 数据类型
  9. 前端基础入门之背景background-image 、 雪碧图与渐变
  10. 谈“堆栈”与“队列”的认识