通过NDK更改Android中的音高和速度

时间:2015-08-01 06:33:12

标签: android android-ndk pcm

我已经通过NDK(mpg123)解码了PCM,我想动态地改变音高和速度......但是我怎么能分别在速度和音高上工作..我所能做的就是改变音频中的采样率 - 跟踪...我也实现了Sonic-NDK,在原始文件夹中有一个.bin文件正在播放,现在我正在播放.wav到sonic-NDK,然后有Sonic需要提供PCM的东西所以我通过mpg123转换为pcm并动态喂它..但整个过程不够快,我听到循环中的差距..代码是:

void recursive() {
        buffer = new short[minBufferSize];
        err = NativeWrapper.decodeMP3(minBufferSize * 2, buffer);
        byte[] bufferbyte = ShortToByte_Twiddle_Method(buffer);
        sonic.putBytes(bufferbyte, bufferbyte.length);
        int available = sonic.availableBytes();
        modifiedSamples = new byte[available ];
        sonic.receiveBytes(modifiedSamples, available);
        track.write(modifiedSamples, 0, available); // Write
        if (err != MPG123_DONE) {
            recursive();
        }
    }

所以现在我有两个问题:

  1. 我怎样才能消除块中的间隙和噪音(下面的代码)
  2. 有没有其他方法可以动态地实现音高和速度的操作,还有其他任何库或其他东西,或者我应该做什么。

0 个答案:

没有答案