Android 音频
文章平均质量分 90
Android 音频使用,及源码分析
VNanyesheshou
Android音视频开发
展开
-
Android 音频源码分析——音量调节流程
源码分析基于android9.0一、声音类型对于大多数手机用户来说,操作手机音量按键可以看到,声音类型分为四种:媒体、铃声、闹钟、通话,但是其系统内部则分为十几种类型。声⾳类型用来区分不同播放用途及播放设备,包含11中类型定义在 frameworks/base/media/java/android/media/AudioSystem.java中/** Used to identify the default audio stream volume */public static final in原创 2021-05-26 12:03:14 · 3148 阅读 · 9 评论 -
Android 音频源码分析——音频设备切换(插入耳机)
源码分析基于android9.0通常带线耳机分类模拟耳机平时常用的3.5mm或6.3mm接口耳机,接收模拟信号(音频数据需要先处理,转码成pcm格式)Android中模拟耳机由WiredAccessoryManager获取上报的事件,调用AudioService.setWiredDeviceConnectionState传递信息给AudioService,更新设备信息。数字耳机例如USB Type-c耳机,接收数字信号(音频数据不需要解码成pcm,由耳机进行转换)Android中由UsbAl原创 2021-05-24 22:25:37 · 5350 阅读 · 5 评论 -
Android 音频源码分析——Thread Track分析
基于Andorid9.0源码分析下AudioRecord、AudioTrack对应 audioserver中的关键类。一.ThreadBaseThreadBase,线程类对音频数据处理(混音、音效),从Hal层读数据、写数据分析AudioRecord和AudioTrack源码,发现有多种Thread,都继承ThreadBase。其结构如下图RecordThread:录音线程PlaybackThread:播放线程,包括多个子类,对应不同的播放模式;MixerThread:混音线程Du原创 2021-04-15 15:52:42 · 1125 阅读 · 0 评论 -
Android 音频源码分析——AudioTrack设备选择
Android 音频源码分析——AndroidRecord录音(一)Android 音频源码分析——AndroidRecord录音(二)Android 音频源码分析——AndroidRecord音频数据传输流程Android 音频源码分析——audioserver启动Android 音频源码分析——AudioFlingerAndroid 音频源码分析——AudioTrack设备选择基于Andorid9.0源码以AudioTrack为例,梳理下输出设备选择流程。音频设备选择的影响因素:Au原创 2021-04-13 11:44:08 · 3391 阅读 · 5 评论 -
Android 音频源码分析——AudioFlinger
Android 音频源码分析——AndroidRecord录音(一)Android 音频源码分析——AndroidRecord录音(二)Android 音频源码分析——AndroidRecord音频数据传输流程Android 音频源码分析——audioserver启动Android 音频源码分析——AudioFlinger混音:把多种来源的声音,整合至一个立体音轨或单音轨中。AudioFlinger和AudioPolicyService是音频中的两大服务,这里先整理下AudioFlinger。原创 2021-04-07 18:46:57 · 2511 阅读 · 3 评论 -
Android 音频源码分析——aduio_policy_configuration.xml
aduio_policy_configuration.xml内容分为三大模块:全局配置;modules模块;volume section;1. globalConfiguration<globalConfiguration speaker_drc_enabled="true"/>speaker_drc_enabled值为ture时:在DEVICE_CATEGORY_SPEAKER路径上使用DRC增强柔和声音的设备,用于相应地调整音量曲线。2. modules模块module原创 2021-03-15 18:32:35 · 1358 阅读 · 0 评论 -
Android 音频源码分析——audioserver启动
该源码分析基于android9.0 Android音频系统中,有两大service:AudioFlinger和AudioPolicy,这两个服务都运行在audioservr进程中。这里来整理以下audioserver启动流程。一、 加载audioserver.rcAndroid系统启动:加载引导程序-》引导程序-》Linux内核启动-》启动init进程-》zygote进程-》SystemServer-》Launcher。init进程对应main函数system/core/init/init.cpp原创 2021-03-13 21:50:01 · 6157 阅读 · 8 评论 -
Android 音频开发——AudioTrack播放
AudioTrack类用来管理、播放单个音频资源,它只能播放PCM数据,其他音频格式(aac、amr、opus、flac等)需要经过解码成PCM才能使用。运行模式AudioTrack可以运行两种模式:流模式静态模式流模式 可以将连续的数据流写入AudioTrack,进行播放。播放音频数据块时,这种模式最有用。如:声音持续的时间太长,无法容纳在内存中;由于音频数据的特性(太大的采样率,每个采样的比特数…)而太大而无法容纳在内存中;在播放先前排队的音频时收到或生成的声音。静态模式原创 2021-03-12 22:54:39 · 6018 阅读 · 13 评论 -
音频——从入门到放弃
声音 是由物体振动产生的声波,通过介质(空气或固体、液体)传播并能被人或动物听觉器官所感知的波动现象。最初发出振动(震动)的物体叫声源。声音以波的形式振动(震动)传播。声音是声波通过任何介质传播形成的运动。 人的耳朵可以听到20 ~ 20000HZ的声音,最敏感的是200~800HZ之间的声音。声音在不同介质中传播速度一般是固体>液体>气体,声的传播速度与介质的种类和介质的温度有关。1 声音特性响度(loudness):俗称音量,主观上感觉声音的大小,由“振幅” 和人离声源的距离决定原创 2021-03-12 09:45:10 · 532 阅读 · 0 评论 -
音频编码格式——AAC简介
AAC (Advanced Audio Coding),高级音频编码。基于1997年,目的是为了取代MP3格式。优点:相较于mp3,AAC格式的音质更佳,文件更小。缺点:AAC属于有损压缩的格式,与时下流行的APE、FLAC等无损格式相比音质存在“本质上”的差距。加之,传输速度更快的USB3.0和16G以上大容量MP3正在加速普及,也使得AAC头上“小巧”的光环不复存在。AAC规格常见的AAC规格:LC-AAC(最基本的)HE-AAC(AACPlus v1)HE-AAC v2(AACPl原创 2021-03-08 22:14:42 · 12038 阅读 · 0 评论 -
Android 音频开发——AudioRecord录音
Android 音频——PCM转WAV AudioRecord类管理Java应用程序的音频资源,以录制音频数据。 这一篇文章主要记录下AudioRecord使用方法,通过AudioRecord录制音频数据,并封装成WAV格式数据。使⽤AudioRecord的录音流程,分为以下⼏步获取 创建AudioRecord 所需的buffer size 大小;创建AudioRecord调⽤AudioRecord.startRecording开始录音。读取录制的音频数据AudioRecord.read(d原创 2021-03-08 15:59:28 · 2006 阅读 · 2 评论 -
Android 音频源码分析——AndroidRecord音频数据传输流程
Android 音频源码分析——AndroidRecord录音(一)Android 音频源码分析——AndroidRecord录音(二)这篇主要分析一下AudioRecord录音过程中的 数据传输流程。流程图:部分数据传输的流程已在前两篇文章中分析了。这里主要分析一下:AudioFlinger 从Hal 读取数据。AudioRecord从AudioFlinger获取数据。AudioFlingerAudioFlinger服务通过RecordThread读取数据。直接来看RecordT原创 2021-03-05 22:10:12 · 3497 阅读 · 3 评论 -
Android 音频架构
Android 音频架构定义了音频功能的实现方式,并指出实现中所涉及的相关源代码。应用框架应用框架包含应用代码,该代码可使用 android.media API 与音频硬件进行交互。在内部,此代码会调用相应的 JNI 粘合类,以访问与音频硬件交互的原生代码。源代码目录:frameworks/base/media/java/android/media/JNI与 android.media 关联的 JNI 代码可调用较低级别的原生代码,以访问音频硬件。JNI 位于 frameworks/base/原创 2021-03-01 22:29:03 · 1477 阅读 · 4 评论 -
Android 音频源码分析——AndroidRecord录音(二)
接着上一篇继续分析AndroidRecord 源码1 AudioRecord.readAudioRecord read 函数有多个。audioData格式不同.readMode READ_BLOCKING阻塞读数据, READ_NON_BLOCKING 非阻塞读,立刻返回。public int read(@NonNull byte[] audioData, int offsetInBytes, int sizeInBytes)public int read(@NonNull byte[] a原创 2021-03-01 22:45:00 · 2004 阅读 · 2 评论 -
Android 音频源码分析——AndroidRecord录音(一)
Android 源码版本:9.0java代码路径:frameworks/base/media/java/android/media/jni代码路径:frameworks/base/core/jni/C++代码路径:frameworks/av/media/libaudioclient/1.主要函数主要函数//静态方法AudioRecord.getMinBufferSize(sampleRate, channel, audioFormat)2.getMinBufferSizeAudioRe原创 2021-02-27 21:36:50 · 5765 阅读 · 9 评论 -
Android 音频——PCM转WAV
AudioRecord 录制音频PCM 数据转WAVPCM 简介PCM(Puls Code Modulation)脉冲编码调制是数字通信的编码方式之一。主要过程是将话音、图像等模拟信号每隔一定时间进行取样,使其离散化,同时将抽样值按分层单位四舍五入取整量化,同时将抽样值按一组二进制码来表示抽样脉冲的幅值。PCM录音就是将声音的模拟信号表示成0,1标识的数字信号,未经任何编码和压缩处理,所以可以认为PCM是未经压缩的音频原始格式。PCM格式文件中不包含头部信息,播放器无法知道采样率,声道数,采样位数,音频原创 2021-02-22 20:47:00 · 1473 阅读 · 1 评论