我已经在互联网上搜索了一个多星期,现在正在寻找一种在Android SDK中操纵音频文件的好方法。我的目标是对音频应用特殊效果。有人可以指点我一个可以帮助我的资源吗?我不得不求助于StackOverflow,因为它是我所知道的唯一可靠的答案。
答案 0 :(得分:1)
我假设您想要通过某种DSP技术以数字方式操作音频文件,即字节级别?
如果您想实时操作(即从微信中),请查看android.media.AudioRecord.AudioRecord
。例如:
audioRecord = new AudioRecord(
MediaRecorder.AudioSource.MIC,
8000,
AudioFormat.CHANNEL_IN_STEREO,
AudioFormat.ENCODING_PCM_16BIT,
AudioTrack.getMinBufferSize(
8000,
AudioFormat.CHANNEL_IN_STEREO,
AudioFormat.ENCODING_PCM_16BIT)*20);
audioRecord.startRecording();
byte[] readBuffer = new byte[640];
int nbytes = audioRecord.read(readBuffer.getData(),0,readBuffer.length);
这将使您可以访问原始音频数据(在上面的示例中,线性PCM 16位立体声)。
如果您想阅读现有的存储文件(例如来自SD卡)并操纵音频,请查看java.io.FileInputStream
。当然,如果现有文件的格式不是Linear PCM(例如MP3),那么在应用任何DSP类型操作之前,您可能希望将其解码为Linear PCM。 Cick here表示将文件读入字节数组的示例。 Click here表示读取MP3文件并获取解码的原始PCM数据的示例的链接。
答案 1 :(得分:0)
Ringdroid是开源的,值得关注。不确定这是否符合您的要求。