JavaSound 体系结构 17
3 音频录制与播放--JavaSound Jav aSou nd 是一个小巧的低层API,支持数字音频和MIDI 数据的记录/回放
在JDK 1
0之前,Jav aSou nd 是一个标准的Jav a 扩展API,但从Jav a 2的1
0版开始,Jav aSou nd 就被包含到JDK 之中
由于Jav a 有着跨平台(操作系统、硬件平台)的特点,基于Jav aSou nd的音频处 理程序(包括本文的程序)能够在任何实现了 Jav a 1
3或更高版本的系统上运行,无须加装任何支持软件
接下来我们将首先讲解 Jav aSou nd 的体系结构、音频输入/输出原理,然后讲解音频各种处理的方法
音频的数据格式
最后通过两个实例程序演练 Jav aSou nd
MP3音乐播放器
1 JavaSound 体系结构 使用 Jav aSou nd API,可以实现各种基于声音的应用,例如声音录制、音乐播放、网络电话、音乐编辑等
Jav aSou nd API 又以各种解码和合成器 SPI(Serv ice Prov ider Interface ,服务提供者接口)为基础,实现各种音乐格式的解码与转码
它们之间的关系如图17-5所示
图17-5 Jav aSou nd 体系结构 SPI 的作用是以插件(Plu g-In)的形式提供自定义的扩展模块,我们只要提供与SPI 兼容的插件扩展模块,就可以在不改变 API 的情况下扩展 音频处理程序的能力
例如,假设有一个只能播放WAV 文件的程序,我们只要增加一个支持MP3文件解码的插件模块,就可以在不改动播放程序的任何一行代码 的前提下,为这个播放程序添加播放MP3的能力
在后文的MP3音乐播放器程序中我们将演示该模块的