1

背景

我正在创建一个 VoIP 应用程序。我知道已经有很多人出来了,但我有我的理由。由于商业影响,我不能只分叉 SipDroid,尽管它是一个高质量的应用程序。此应用程序针对 10 级姜饼 2.3.3。

问题

我创建了一个简单的 Activity,它创建了一个 AudioRecord 实例,然后开始一个循环:

int timestamp = 0;
int seqNr = 12;
while(true) {
    byte[] buffer = new byte[bufferSize];

    int num = recorder.read(buffer, 0, bufferSize);
    try {
        byte[] pcm = new byte[bufferSize];
        //
        // presumably here I convert the byte[] from PCM into G711??
        //
        RTPStream.Write(pcm,seqNr,timestamp);
        timestamp += num;
        seqNr++;
    } catch (IOException e) {
        e.printStackTrace();
    }
}

问题

如何将 PCM 44KHz 16bit Monobyte[]变成 G711u/abyte[]的?

4

2 回答 2

1

尝试AudioStram改用。通过 设置编解码器setCodec(AudioCodec)并通过 获取音频AudioGroup

于 2011-11-10T15:31:57.157 回答
1

AudioGroup 在内部可用。这就是 Native SipAudioCall 所使用的。有一种使用内部 API 的方法。知道该类将在 API 12 中可用。您应该使用它。

于 2012-02-20T22:43:35.457 回答