Android AudioRecord通过RTP发送

时间:2011-11-10 15:10:43

标签: android rtp pcm audiorecord android-audiorecord

背景

我正在创建一个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 16位单声道byte[]转换为G711u / a byte[]

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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