背景
我正在创建一个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[]
?
答案 0 :(得分:1)
请尝试使用AudioStram
。通过setCodec(AudioCodec)
设置编解码器,并通过AudioGroup
获取音频。
答案 1 :(得分:1)
AudioGroup在内部可用。这就是Native SipAudioCall正在使用的。有一种方法可以使用内部API。知道该类将在API 12中可用。您应该使用它。