首先,可以去国外网站下载一个开源的软件包,该包内将java的一系列音频API进行了封装,方便我们使用,省去了自己写一堆初始代码的麻烦。该包的名字为am-src,网上搜一下肯定能找到的。我使用了这个包里名为AMAudioFormat,AudioCapture和AudioPlayStream三个文件。这三个文件分别实现了音频格式定义、音频获取和音频播放三个功能。
在AMAudioFormat中定义了用于GSM、FM等的四种音频格式,这里使用GSM。为了使用GSM音频,还需要下载名为tritonus_share和tritonus_gsm的jar包,并将其添加在你的工程库中。下面对三个java文件进行一下简单的解释。
AMAudioFormat内定义了音频的一系列参数,在使用过程中若你直接调用AudioCapture则不需过多关心此类,这里不详述,可自行阅读源代码。
AudioCapture定义了获取某种音频格式的方法,在对其实例化时需传递音频格式参数(AMAudioFormat中定义有的类型)。该类中的getAudioInputStream()和open()函数用于获取音频流和打开音频流,是程序中需要调用到的操作。在新建了一个实例后,调用open()操作,然后利用getAudioInputStream()返回的AudioInputStream就可进行音频的获取了。
AudioPlayStream与AudioCapture类似,这里不再详述。
由于是要对音频进行组播,所以需要将音频截获为一个一个的数据包,可以利用AudioInputStream的read()操作来实现。下面给出一个简单的获取并发送的例子。















下面是一个接收到组播音频后播放的例子。















以上是极为简单的例子,是在我自己程序上摘录修改的,未经测试,可能会有错误。
另:由于使用的是开源代码,所以使用中请您遵守相关的协议。协议在源码包中有所说明。