Android AudioRecord 通过 RTP 发送

标签 android rtp pcm audiorecord android-audiorecord

背景

我正在创建一个 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/

相关文章:

android - 如果单击通知时 Activity 已打开,则不要打开 Activity

android - 如何提高 GridView 渲染许多大图像的性能(首次加载时间、滚动平滑度)?

c# - 录制编码播放并保存一个 wav 文件

java - 捕获播放实时音频流的缓冲

android - 如何在 android 中使用基本适配器时过滤列表项?

android - 避免 EditText TextWatcher 在每次字符更改时触发事件

c - 在 libav 中读取 dumepd RTP 流

iphone - AudioConverterConvertBuffer 问题与 insz 错误

c# - 将 PCM 转换为 MP3/OGG

silverlight - 如何在 Silverlight 4 中可视化麦克风声音/压力级别?