Android音视频开发-音频篇-音频的原理

白话Android音频系统原理 白话Android音频系统原理一、基本原理二、详细逻辑三、播放流程 一、基本原理 谁来处理(录音和播放)? AudioFlinger! 怎么处理?AudioPolicyService ! 什么是output?为了便于管理, 把一个设备上具有相同参数的一组device称为output。它描述一些实际支持的设备(有实际硬件)一个output对应一个线程thread。 二、详细逻辑 从frameworks/av/media/audioserver/main_audioserver.cpp开始,初始化Audi 阅读详情
致知在格物,物格而后知至。所谓致知在格物者,言欲致吾之知,在即物而穷其理也                                                                                                                       

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

所以我们要想学好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 音频篇 (一):音频采集 本人比较详细的讲解了 AudioRecord 的运行机制以及使用方面的介绍,下面是 github 上的示例代码链接。如果您觉得以上内容对您有所帮助的话,可以关注下我们运营的公众号,会定期的推送 音视频技术、移动端技术 为主轴的 科普类、基础知识类、行业资讯类等相关文章。在这里插入图片描述AudioRecord 状态。 阅读详情

相关推荐

Android 音频开发(一) 基础入门篇

今天主要讲解下Android音频开发的入门知识,希望对想入门却不知如何下手的朋友有所帮助,同时希望能得到高手的指点和帮助。 深入细化基础技能知识点 大致细化如下10个知识点。 音频开发的主要应用有哪些(应用场景有哪些)? 音频开发的具体内容有哪些? 开发音频应用的难点有哪些? 音频开发必备基础概念有哪些? 常见的音频编码方式有几种? 常见的音频压缩格式有几种? Adndroid VoIP相关的开源应用有哪些 ? 常见的音频算法处理的开源库有哪些 ? Android提供了哪些音频开发相关的API? 10.音

hirezy 5751

音频基础知识及编码原理

一、基本概念 1 比特率:表示经过编码(压缩)后的音频数据每秒钟需要用多少个比特来表示,单位常为kbps。 2 响度和强度:声音的主观属性响度表示的是一个声音听来有多响的程度。响度主要随声音的强度而变化,但也受频率的影响。总的说,中频纯音听来比低频和高频纯音响一些。 3 采样和采样率:采样是把连续的时间信号,变成离散的数字信号。采样率是指每秒钟采集多少个样本。 Nyquist采样定律:采样率大于或等于连续信号最高频率分量的2倍时,采样信号可以用来完美重构原始连续信号。 二、常见音频格式 1

水龙吟的备忘录 1万+

音视频播放器工作原理

参考博客: 视频播放器的基本原理 播放器基本原理(播放四步法) 【Android 音视频开发打怪升级:音视频硬解码篇】一、音视频基础知识 播放器播放流程 网络文件:解协议,解封装,解码音视频,音视频同步;本地文件则没有解协议。 解协议:将Http等流媒体协议传输的文件解析为标准的封装格式数据。如将RTMP协议传输的数据,经过解析操作后输出为FLV格式的数据。 解封装(解复用):将输入的封装格式的数据,分离为音频流压缩编码数据和视频流压缩编码数据,即:分离信道。 解码:将视频/音频压缩编码数据,解码成为非压

qq_45254908的博客 2606

音频采集原理

从上面的介绍我们可以知道,声音的本质是震动,人类的耳蜗可以将这种震动转化为生物信号。所采的样本是用二进制来表示的,表示所用二进制的位数就可以决定采样的精度。例如只用一位二进制来表示那么所采的数据只能是0或1,用两位二进制数来表示那么所采的数据就是00、01、10、11,那么也就是说采样的数据所用二进制的位数越多其表示的数据就越精确。1s采样多少次就是音频的采样率,人耳能听到的频率是在20Hz-20000Hz之间,根据采样定理只需要用400000Hz的采样频率就可以从采样样本中重建原来的连续信号。

嘿嘿の博客 4426

Android音视频处理技术:音频混音与播放

作者:禅与计算机程序设计艺术 1.简介 在现代生活中,我们都会听到各种各样的声音。但是有的声音会相互抵消影响我们的正常生活,而有的声音则会增加我们的情绪快乐。人类为了能够真正体验到声音带来的快感,需要将不同类型的声音合并,再将它们再传达给大脑。音频混音与播放就是一种音频处理技术,它可以让用户自定义声音的

AI天才研究院 3730

DS18B20温度传感器项目实战:从驱动编写到LCD显示,打造你的第一个温控系统

本文详细介绍了如何使用DS18B20温度传感器和LCD1602显示屏构建一个完整的温控系统。从硬件连接、OneWire协议实现到温度数据采集与LCD显示,全面解析了系统整合与工程化实现的关键步骤,帮助开发者快速掌握嵌入式温度监测系统的开发技巧。

weixin_42525328的博客 349

手机通信基本原理

1 音频信号为什么不能直接传送,而要借助载波无线电波信号? 答:根据天线理论:天线长度=四分之一r(波长),而音频信号的波长的范围是15km-20000km,直接发射音频信号需要上千公里的天线,所以不现实;而无线电波的波长大于2mm   2 为什么不用红外线紫外线灯电磁波,而要用无线电波呢? 答:红外线等的波长太短,离子型表现更强,绕射能力比较差,穿透能力也差,遇到遮挡就没有了信号

jintianhaizaima的专栏 3097

Unity3D实战:用EasyAR4.0稀疏空间地图打造AR导航应用(附完整代码)

本文详细介绍了如何使用Unity3D和EasyAR4.0的SparseSpatialMap功能构建AR导航应用。通过稀疏空间地图技术,开发者可以创建室内导航系统,解决传统GPS在室内环境中的局限性。文章包含完整代码示例,涵盖环境配置、地图构建、导航实现及性能优化等关键步骤,助力开发者快速掌握AR导航开发技巧。

t8u9v0的博客 1197

声音是如何产生的

RTMP中一般音频采用aac编码,采样率为44100HZ, 每帧1024采样,帧率43,23.2ms一帧RTC中一般音频采用opus编码,采样率为48000HZ,每帧480采样,帧率100,10ms一帧。

ThinPikachu的博客 1994

手把手教你用野火FPGA开发板资料包安装ModelSim 10.5se(附破解教程)

本文提供了一份详细的指南,手把手教你为野火FPGA开发板安装和配置ModelSim 10.5se仿真工具。内容涵盖从前期准备、软件安装、许可证激活(学习用途)到环境验证的全过程,并简要介绍了如何与Xilinx Vivado开发套件集成,帮助初学者快速搭建稳定的FPGA仿真环境。

lstm7chronicler的博客 250

Type-C快充移动电源芯片避坑指南:IP5356配置全流程(支持PD3.0)

本文详细解析了英集芯IP5356芯片在Type-C快充移动电源中的应用,提供了从芯片选型、原理图设计、PCB布局到PD协议调试的全流程实战指南。文章重点剖析了如何避免散热、EMI及协议握手等常见设计陷阱,并分享了量产前的关键测试验证方法,旨在帮助硬件开发者高效打造稳定可靠的快充产品。

weixin_29235525的博客 849

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

接触Android音视频这一块已经有一段时间了,跟普通的应用层开发相比,的确更花费精力。期间为了学习音视频的录制,编码,处理也看过大大小小的几十个项目。总体感觉就是知识比较零散,对刚入门的朋友比较不友好。所以才萌生了写这个Android音视频系统文章的想法,虽然给自己挖了一个深坑,但是相信坚持下来必定能很好的提升自己。另一方面,系统的学习效果肯定要远好于零零散散的补充知识 先来看我自己总结的一个...

coding_man_xie的博客 3613

【UE5】【蓝图】 LevelSequence 动画播放与暂停

最近有些工作,在研究UE5 蓝图的LevelSequence,来制作一些简单动画。做个笔记,记录一下动画更换绑定actor的操作,以及动画播放后如何暂停和继续。

UE5开发备忘录 1万+

安卓音视频整理(一)——音频模块

这是关于安卓音视频的一个系列文章,大家可以从这里随意跳跃: 0.安卓音视频整理 1.安卓音视频整理(一)—— 音频模块 2.安卓音视频整理(二)—— 音视频编解码 3.安卓音视频整理(三)—— 图像模块 4.安卓音视频整理(四)—— 音视频播放器 5.安卓音视频整理(五)—— MediaSDK的封装 摘要:音频模块我将主要分 音频文件、音频录制、音频播放三大部分来叙述。音频文件将会重点描述音频的格式及编码;音频录制将介绍安卓中所有的可以录制音频的API;音频播放将介绍如何对音频文件进行播放。 1.音频文

york2017的博客 1828

【AI面试】 Python 的装饰器

Python装饰器是一种高阶函数,用于在不修改原函数代码的情况下增强其功能。它通过@语法糖接收目标函数作为参数,并返回一个包含额外逻辑(如日志、缓存、权限验证等)的新函数。装饰器的核心价值在于代码复用和解耦,符合开闭原则,典型应用包括性能分析、权限控制等场景。例如,@timer_decorator可自动为函数添加耗时统计功能。本质上,@decorator等价于func = decorator(func),实际调用的是装饰器返回的包装函数。进阶技巧包括使用@functools.wraps保留原函数元信息。装饰

钱多多先森 184

自然语言处理6 -- 情感分析

1 概述 情感分析是自然语言处理中常见的场景,比如淘宝商品评价,饿了么外卖评价等,对于指导产品更新迭代具有关键性作用。通过情感分析,可以挖掘产品在各个维度的优劣,从而明确如何改进产品。比如对外卖评价,可以分析菜品口味、送达时间、送餐态度、菜品丰富度等多个维度的用户情感指数,从而从各个维度上改进外卖服务。 情感分析可以采用基于情感词典的传统方法,也可以采用基于深度学习的方法,下面详细讲解 ...

谢杨易的博客 5万+

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

在【Android音视频开发】 这一系列文章的开头,介绍一下音视频编码的原理是很有必要的,有利于对后续出现的概念的理解。此处先讲音频,视频编码的原理将在另一篇文章中讲述。

欢迎进入JesseAndroid的博客 2582

基于STM32的六足机器人控制系统设计(项目资料ID:27)

六足机器人控制系统综合分析其结构、步态与控制算法,融合云端服务、Wi-Fi、蓝牙、语音识别及手势识别等多种技术,设计了多元化控制模式,并针对不同应用场景提出了差异化的构建方案。系统硬件采用分层设计,分为主控板与舵机控制板:主控板以 STM32F103VET6 为核心,负责各类控制模式的数据处理与状态显示;舵机控制板采用 STM32F103R8T6,专注于舵机角度的精确控制,两板通过串口实现数据交互。

以培养嵌入式工程师为己任 1万+

安卓音视频整理

这是关于安卓音视频的一个系列文章,大家可以从这里随意跳跃: 0.安卓音视频整理 1.安卓音视频整理(一)—— 音频模块 2.安卓音视频整理(二)—— 音视频编解码 3.安卓音视频整理(三)—— 图像模块 4.安卓音视频整理(四)—— 音视频播放器 5.安卓音视频整理(五)—— MediaSDK的封装 摘要:今天开始,我将会整理一下我在音视频开发中的一些知识积累,主要会包括 基础概念、音频模块、图像模块、音视频编解码、音视频播放器、MediaSDK的封装 这些内容。 本系列文章将会重点围绕上图的内

york2017的博客 747

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

android音视频点/直播模块开发

前言随着音视频领域的火热,在很多领域(教育,游戏,娱乐,体育,跑步,餐饮,音乐等)尝试做音视频直播/点播功能,那么作为开发一个小白,如何快速学习音视频基础知识,了解音视频编解码的传输协议,编解码方式,以及如何技术选型,如何解决遇到的坑,本文抛砖引玉,欢迎大咖交流。一. 音视频的基础知识1.1 基本概念视频是什么静止的画面叫图像(picture)。连续的图像变化每秒超过24帧(frame)画面以上时,

yabin的专栏 2万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【Android 音视频开发打怪升级:音视频硬解码篇】一、音视频基础知识

作为开篇的文章,我们先来看看音视频由什么构成的,以及一些常见的术语和概念。

开发的猫的博客 2009

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Android音频系列(03)-音频播放录制应用开发

摘要:本文介绍了Android系统中音频播放和录制的实现方式。播放部分分为纯音频播放(使用AudioTrack处理PCM原始数据)和多媒体播放(使用MediaPlayer处理压缩格式);录制部分包括音频录制(使用AudioRecord获取PCM数据)和多媒体录制(使用MediaRecorder生成压缩文件)。文章通过代码示例展示了各API的基本使用方法,并指出MediaPlayer底层会调用AudioTrack进行音频输出。两种方案分别适用于低延迟场景和便捷的多媒体文件处理需求。

Minilinux2018的博客 1779

音视频开发1 学习路线

把音视频工作方向总结为9个(可能不够准确,仅是个人观点):直播、传输、算法、视频播放器、流媒体后端、短视频、音频播放、视频编辑、图像处理。常用的视频封装格式有:mp4、mov、mkv、webm、flv、avi、ts、mpg、wmv等。常用的音频编码协议有:MP3、AAC、OPUS、FLAC、AC3、EAC3、AMR_NB、PCM_S16LE。视频包括:帧率、码率、分辨率、像素格式、色彩空间、I帧P帧B帧、DTS与PTS、YUV与RGB、位深与色域、视频编码格式、视频封装格式。

hunandede的博客 1876

Android程序员掌握音视频开发,再冷的寒冬也不怕

前言 相信绝大部分的Android开发者多多少都有关注过这些问题,Android凉肯定是凉不了的,只是招聘要求越来越高了,面试造火箭工作拧螺丝只是多少有点卷。那大家有没有想过发展一下音视频开发领域呢? 掌握音视频开发技术能给带来那些好处? 高薪: 音视频开发的工资相比同级别的开发薪资普遍高出30%。主要分布在20k-35k之间,而且很重要的一点是不卷啊。音视频开发薪资这么高主要就是因为音视频技术人才非常稀缺,人才的稀缺也注定内卷不起来。 就业: 短视频类(X音、X手等等。主要就是声音变化和美颜,表情特效等)

m0_64365896的博客 6493

Android音视频开发框架(上)

目前分析了Android音视频创建,编码,存储,可以说我们粗略的讲完了音视频的上半程;还剩下读取,解码,播放,由于篇幅所限决定分为两篇叙述较好。

嘴巴吃糖了 1439

从开发小白到音视频专家

这是由一篇我的演讲稿整理出来的文章,目标读者是对音视频开发感兴趣但是又不知道如何下手的初学者们,希望把我的经验分享出来,对大家有所帮助。 1. 成长的烦恼 经常收到一些网友的来信或者留言,反馈如下这样的困惑: “我是一名应届毕业生,该如何快速地成长起来”“我只懂 C/C++,是学 Android 开发有前途,还是 iOS 开发有前途?”“我是一名 Android/iOS 开发,已经可以独立完成一...

weixin_34390996的博客 6185
上一篇: Android音视频架构-学习路线规划
下一篇: MediaRecorder录制音频
CodeForFreeX
博客等级 码龄12年 43粉丝 25原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值