1

我已经在互联网上搜索了一个多星期,现在正在寻找一种在 Android SDK 中操作音频文件的好方法。我的目标是对音频应用特殊效果。有人可以向我指出可以帮助我解决此问题的资源吗?我不得不求助于 StackOverflow,因为它是我所知道的唯一可靠的答案。

4

2 回答 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 回答