Android系统音频PCM波形图绘制算法与实现

时间:2022-08-19 09:45:36

Android系统音频PCM波形图绘制算法与实现

摘要:Android系统中编写视频音频软件,常需要显示音频波形图以实现手动、自动断句或当前播放位置定位等功能。该文介绍在Android系统中绘制音频波形图的原理、绘制算法与实现方式,结合Android系统多点触摸实现波形图的放大缩小功能。

关键词:Android PCM 音频 播放器

中图分类号:TN912 文献标识码:A 文章编号:1007-9416(2013)06-0142-02

1 Android系统音频处理

Android系统音频绘制波形图,需要得到音频的原始采样数据(PCM数据),大部分网络提供的音频都是经过压缩编码之后的数据(MP3、AU等)。Android中的音频处理主要使用两个类MediaPlayer和SoundPool,MediaPlayer类提供了播放、暂停、停止和重复播放等方法,SoundPool可以播一些短的反应速度要求高的声音, 比如游戏中的爆破声,这两个类缺点是无法控制底层音视频解码过程。自Android 4.1版本,增加MediaCodec类,支持从Native层直接获得编解码数据。为了兼容更多Android版本,需要使用NDK方式移植音频解码库,常用开源库有Libmad、FFmpeg。

2 PCM简介

采样频率:即取样频率,指每秒钟取得声音样本的次数。采样频率越高,声音的质量越好,声音的还原也就越真实。由于人耳的分辨率很有限,太高的频率并不能分辨出来。在16位声卡中有22KHz、44KHz等几级,其中,22KHz相当于普通FM广播的音质,44KHz已相当于CD音质了,目前的常用采样频率都不超过48KHz。

采样位数:即采样值或取样值(就是将采样样本幅度量化)。它是用来衡量声音波动变化的一个参数。它的数值越大,分辨率也就越高,所发出声音的能力越强。

声道数:有单声道和立体声之分,单声道的声音只能使用一个扬声器发声(有的也处理成两个扬声器出同一个声道的声音),立体声的PCM可以使两个扬声器都发声(一般左右声道有分工),更能感受到空间效果。

3 PCM绘图算法

3.1 Android屏幕坐标系与Canvas坐标系

5 触屏缩放算法

5.1 Android触屏处理

5.2 算法原理

6 结语

本文介绍了Android系统平台绘制音频波形图的算法、实现代码,同时给出了控制PCM波形图在时间轴放大缩小的算法描述,可以很好的应用于视频音频播放器软件的制作中,也可以用于音频视频编辑软件的制作中。

参考文献

[1]于永彦.多媒体开发与编程.北京大学出版社,2011.

[2]艾佛瑞.Android多媒体开发高级编程.清华大学出版社,2012.

[3]李宁.Android应用开发实战.机械工业出版社,2012.

[4]王石磊.Android多媒体应用开发实战详解.人民邮电出版社,2012.

上一篇:基于FastICA的盲源分离算法研究 下一篇:云南省交通运输行业数据中心管理平台建设思路