我已经在互联网上搜索了一个多星期,现在正在寻找一种在 Android SDK 中操作音频文件的好方法。我的目标是对音频应用特殊效果。有人可以向我指出可以帮助我解决此问题的资源吗?我不得不求助于 StackOverflow,因为它是我所知道的唯一可靠的答案。
问问题
1771 次
2 回答
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 位立体声示例中)。
如果您想读取现有存储的文件(例如从 sdcard 中)并处理音频,请查看java.io.FileInputStream
. 当然,如果现有文件的格式不是线性 PCM(例如 MP3),那么您可能希望在应用任何 DSP 类型的操作之前将其解码为线性 PCM。 点击此处查看将文件读入字节数组的示例。 单击此处获取读取 MP3 文件并获取解码的原始 PCM 数据的示例的链接。
于 2012-04-11T22:22:08.077 回答
0
Ringdroid是开源的,值得一看。不确定这是否符合您的要求。
于 2012-04-11T21:44:12.150 回答