Android音视频开发-音频篇-音频的原理
致知在格物,物格而后知至。所谓致知在格物者,言欲致吾之知,在即物而穷其理也
意思讲的是要探究事物的原理,从而获得智慧。 写代码也是如此,只有了解其中的原理,才能运用自如
所以我们要想学好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音视频开发-音频篇-音频的原理相关推荐
- android音频开发6,Android 音视频开发(一) : 通过三种方式绘制图片
想要逐步入门音视频开发,就需要一步步的去学习整理,并积累.本文是音视频开发积累的第一篇. 对应的要学习的内容是:在 Android 平台绘制一张图片,使用至少 3 种不同的 API,ImageView ...
- Android音视频开发之音频录制和播放
Android音视频开发之音频录制和播放 1.封装音频录制工具类: public class RecorderAudioManagerUtils {private static volatile Re ...
- Android 音视频开发(二):使用 AudioRecord 采集音频PCM并保存到文件(学习笔记)
关于 AudioRecord Android SDK 提供了两套音频采集的API,分别是:MediaRecorder 和 AudioRecord,前者是一个更加上层一点的API,它可以直接把手机麦克风 ...
- Android音视频开发,详说PCM音频重采样、PCM编码
直播伴音,两种数据能否合在一起?不能叠加在一起 会有噪音 合并以后 再去编码推流 直播的例子 客户端播放器,可以开启多个播放器 对于我们重采样 很多时候就是为了统一格式,就是为了要合并这个流,去推送, ...
- Android 音视频开发(一):PCM 格式音频的播放与采集
什么是 PCM 格式 声音从模拟信号转化为数字信号的技术,经过采样.量化.编码三个过程将模拟信号数字化. 采样 顾名思义,对模拟信号采集样本,该过程是从时间上对信号进行数字化,例如每秒采集 44100 ...
- Android 音视频开发(一) -- 使用AudioRecord 录制PCM(录音);AudioTrack播放音频
前言,音视频这块,确实比较难入门,本着学习的态度,我这边也跟着 Android 音视频开发入门指南 打怪升级,留下个脚印,大家共勉. 音视频 系列文章 Android 音视频开发(一) – 使用Aud ...
- 【Android音视频开发】音频编码原理
文章变更表 文章版本号 变更内容 变更日期 备注 0.0.1 创建 2022/9/29 初版 0.0.2 补充编码原理和音频格式等内容 2022/9/30 1. 前言 在[Android音视频开发] ...
- android音视频【十】音频mp3剪切
人间观察 为了等你,我错过了等我的人. 介绍 Android中在一些短视频的制作app软件上,会有给视频增加背景音乐的功能,而背景音乐/歌曲(一般是mp3)是从服务器上下载后,然后本地解码,往往用户会 ...
- 【Android 音视频开发打怪升级:FFmpeg音视频编解码篇】一、FFmpeg so库编译
转自:https://juejin.im/post/5e130df55188253a8b42ebac 目录 一.Android音视频硬解码篇: 1,音视频基础知识 2,音视频硬解码流程:封装基础解码框 ...
- android硬编码封装mp4,【Android 音视频开发打怪升级:音视频硬解码篇】四、音视频解封和封装:生成一个MP4...
[声 明] 首先,这一系列文章均基于自己的理解和实践,可能有不对的地方,欢迎大家指正. 其次,这是一个入门系列,涉及的知识也仅限于够用,深入的知识网上也有许许多多的博文供大家学习了. 最后,写文章过程 ...
最新文章
- join......on 后面的and 和where的区别
- rss C语言,Android内存:VSS/RSS/PSS/USS介绍
- mysql截取longblob类型字段内一小块数据的方法
- Linux 中vim编辑器学习笔记
- WebSphere中连接池的配置
- java破坏双亲委派_java的类加载机制-双亲委派,破坏双亲委派
- Jquery的validate表单验证
- CE教程:植物大战僵尸(金币数值修改)
- 软件测试记录表模版,简单软件测试报告模板.doc
- h5页面 请在微信客户端打开链接_电脑版微信网页授权提示请在微信客户端打开链接?...
- 51单片机英文缩写全称
- flex TLF 文本流编辑器
- 站在两个世界的边缘——知无崖
- 基于OpenCASCADE自制三维建模软件(三)搭建开发环境
- Windows10 无法正常搜狗和搜狗输入法
- baidumaptrace.php,GitHub - SignalLine/BaiduMapTrace: 百度地图运动轨迹纠偏、去噪、绑路之百度鹰眼sdk服务...
- his使用-重置密码
- 局域网内简易网站的发布
- 【转载】按键精灵对安卓APP进行自动化界面点击测试
- 基于python 的股票行情查询系统开发(一)