背景
我正在创建一个 VoIP 应用程序。我知道已经有很多了,但我有我的理由。由于商业影响,我不能只 fork SipDroid,尽管它是一个高质量的应用程序。此应用程序针对 10 级 Gingerbread 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 单声道 byte[]
转换为 G711u/a byte[]
?
最佳答案
AudioGroup 在内部可用。这就是 Native SipAudioCall 所使用的。有一种方法可以使用内部 API。知道该类将在 API 12 中可用。您应该使用它。
关于Android AudioRecord 通过 RTP 发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8081687/