Android录音,PCM音频数据打包成AAC

  之前做TUTK音视频流的拉流APP时踩了很多坑,曾经因为编解码问题熬了好几次夜,网上的资料也很有限,自己一点点拼凑来的,在这里Mark一下曾经走过的路。

android的音频采集,我用的是androidRecord,设置参数然后按照官方方法调用就行,没什么问题。上代码

public  AudioRecord audioRecord;

private int SAMPLE_RATE = 16000; //采样率 8K或16K
private static final int CHANNEL_CONFIG = AudioFormat.CHANNEL_IN_MONO; //音频通道(单声道)
private static final int AUDIO_FORMAT = AudioFormat.ENCODING_PCM_16BIT; //音频格式
private static final int AUDIO_SOURCE = MediaRecorder.AudioSource.MIC;  //音频源(麦克风)
int bufferSizeInBytes = AudioRecord.getMinBufferSize(SAMPLE_RATE, CHANNEL_CONFIG, AUDIO_FORMAT);

audioRecord = new AudioRecord(
                        AUDIO_SOURCE,   //音频源
                        SAMPLE_RATE,    //采样率
                        CHANNEL_CONFIG,  //音频通道
                        AUDIO_FORMAT,    //音频格式\采样精度
                        bufferSizeInBytes * 4 //缓冲区
               );

这里是初始化androidRecord,缓冲区最好设置为2倍以上的大小,防止录制出来的音频数据播放时卡顿等问题,这里主要要注意采样率和音频通道,有可能会因为音频通道设置不正确造成音频播放异常(我曾经出现过)。

如果需要AEC回音消除可以修改上面的音频源参数   MediaRecorder.AudioSource.VOICE_COMMUNICATION,使用android自带的回音消除,具体效果我没有单独验证过,因为我的APP是和IPC一块使用的,IPC和APP同时使用AEC的话全双工通信基本没有回音,效果OK。

private static AcousticEchoCanceler canceler;//回声消除

			   /**
     * 添加AEC回声消除
     *
     * @return
     */
    public static boolean chkNewDev() {
        return android.os.Build
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值