Android AudioRecord отправлять через RTP - PullRequest
1 голос
/ 10 ноября 2011

Фон

Я создаю приложение VoIP.Я знаю, что их уже много, но у меня есть свои причины.Из-за коммерческих последствий я не могу просто раскошелиться на SipDroid, хотя это качественное приложение.Это приложение предназначено для Gingerbread 10-го уровня 2.3.3.

Задача

Я создал простое действие, которое создает экземпляр 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 44 кГц 16-битный моно byte[] в G711u / byte[] ??

Ответы [ 2 ]

1 голос
/ 21 февраля 2012

AudioGroup доступна внутри.Вот что использует Native SipAudioCall.Есть способ использовать внутренний API.Зная, что класс будет доступен в API 12. Вы должны использовать его.

1 голос
/ 10 ноября 2011

Попробуйте использовать AudioStram вместо этого. Установите кодек с помощью setCodec(AudioCodec) и получите звук с помощью AudioGroup.

...