2013-03-24 48 views
0

我需要做一些EQing并为.wav文件应用数字效果。有什么方法可以从下面的“缓冲区”中提取单个PCM采样值来执行一些EQ /处理? AudioTrack是否正确地做到这一点?使用AudioTrack来EQ .WAV文件?

private void playSound() { 


audioTrack.play(); 
double input = 0; 
int bufferSize = 512; 
byte[] buffer = new byte[bufferSize]; 
InputStream inputStream = getResources().openRawResource(R.raw.wave); 

    try { 
     while((input = inputStream.read(buffer)) != -1) 
     audioTrack.write(buffer, 0, input); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
+0

你想在回放上做EQ吗,还是你想把均衡后的音频写回文件? – Michael 2013-03-24 15:33:36

+0

播放。你怎么看? – chilipepper 2013-03-24 21:32:35

回答

1

您可以将一个Equalizer AudioEffect您AudioTrack的audio session开始API 9级(姜饼)。

另一种替代方法是在将应用程序中的PCM数据写入音轨之前处理它。出于性能原因,这可能是您希望在本机代码而不是Java中执行的操作。
实现您自己的均衡器效果的理论有点宽泛,适合StackOverflow中的Q & A格式,因此如果这是您想要采用的路线,则必须在其他位置搜索该信息。