好久没写文章了,其实是想记录一下自己在Android开发的成长历程。谈到音视频这块,对于新手来说刚接触到这一块,那是非常非常的恶心~我自己弄这一块也是从头开始,在 网上也翻阅了无数的资料、浏览了无数的博客,尝试了多种方法,网上大致方法是采用第三方的,如webRtc、speex等。甚至花钱买积分去下demo,也发现了好多demo就是    骗积分的,呵呵~好气~ 不谈了。成长的过程也是比较艰辛的,最后也还是自己解决了这个问题~~也希望这篇文章能帮助处在当时的我的一样的情况下

1.Android声音录制

1. Android中使用AudioRecord录制声音,在Android中录制声音需要相应的权限,注意动态申请权限的问题(6.0以上)。

//处理权限申请回调

@Override

public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {

Log.v(TAG, "处理权限申请回调");

PermissionUtils.requestPermissionsResult(ActivityCameraLiveView.this, requestCode, permissions, grantResults, mPermissionGrant);

}

private PermissionUtils.PermissionGrant mPermissionGrant = new PermissionUtils.PermissionGrant() {

@Override

public void onPermissionGranted(int requestCode) {

switch (requestCode) {

case PermissionUtils.CODE_RECORD_AUDIO:

Log.v(TAG, "PermissionGrant: CODE_RECORD_AUDIO audio = true");

audio = true;

break;

case PermissionUtils.CODE_READ_EXTERNAL_STORAGE:

WRITE_EXTERNAL_STORAGE_PERMISSION = true;

Log.v(TAG, "PermissionGrant: WRITE_EXTERNAL_STORAGE_PERMISSION = true");

break;

case PermissionUtils.CODE_STOP_CAMERA:

Log.v(TAG, "PermissionUtils.CODE_STOP_CAMERA");

break;

case PermissionUtils.CODE_WRITE_EXTERNAL_STORAGE:

break;

case PermissionUtils.CODE_ACCESS_COARSE_LOCATION:

break;

}

}

};

2.对AudioRecord进行录音前需要对采样率进行设置

nMinBufSize = AudioRecord.getMinBufferSize(8000,

AudioFormat.CHANNEL_IN_MONO,

AudioFormat.ENCODING_PCM_16BIT);

2.Android回声消除

网上回音消除方式大概有两种 :1.通过安卓自带的 VOICE_COMMUNICATION模式进行录音,自动消除回音。2.使用第三方库进行消除(webRtc、Speex..),消除回音。

用第三方的话,比较麻烦,而且不好实现,用起来效果不是很明显,试了一下Speex的,感觉手机端与手机端语音还可以,但是如果是手机端(APP)和硬件语音的话,就要考虑到码流格式的问题,因为我们公司采用的是G711格式的音频流,所以就必须要先转pcm格式然后再转speex格式,最后转711格式的。实在不行,还有一种就是在录音的时候强制关闭扬声器,在录音的时候就只录到手机的声音隔断了扬声器的声音,不过效果不是很明显,还是会有滋滋的噪声。

关闭扬声器

audioManager = (AudioManager) mcontext.getSystemService(Context.AUDIO_SERVICE);

audioManager.setSpeakerphoneOn(false);

audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, 0,

AudioManager.STREAM_VOICE_CALL);

audioManager.setMode(AudioManager.MODE_IN_CALL);

这里我推荐第一种方法,不仅考虑到了手机机型的适配,还比较简单就改变一个参数:

audioRecord = new AudioRecord(MediaRecorder.AudioSource.VOICE_COMMUNICATION, 8000,

AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, nMinBufSize);

audioRecord.startRecording();

写到这里基本上回声和噪声就没有了~

http://blog.csdn.net/wl532882877/article/details/78296662?locationNum=5&fps=1

android音频杂音问题_Android 音视频去回声、降噪(Android音频采集及回音消除)(转)...相关推荐

  1. android pcm文件大小_Android 音视频开发(二):使用 AudioRecord 采集音频PCM并保存到文件...

    一.AudioRecord API详解 AudioRecord是Android系统提供的用于实现录音的功能类. 要想了解这个类的具体的说明和用法,我们可以去看一下官方的文档: AndioRecord类 ...

  2. Android 音视频去回声、降噪

           好久没写文章了,其实是想记录一下自己在Android开发的成长历程.谈到音视频这块,对于新手来说刚接触到这一块,那是非常非常的恶心~我自己弄这一块也是从头开始,在 网上也翻阅了无数的资料 ...

  3. Android音视频学习系列(五) — 掌握音频基础知识并使用AudioTrack、OpenSL ES渲染PCM数据

    系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...

  4. Android 音视频开发(二):使用 AudioRecord 采集音频PCM并保存到文件(学习笔记)

    关于 AudioRecord Android SDK 提供了两套音频采集的API,分别是:MediaRecorder 和 AudioRecord,前者是一个更加上层一点的API,它可以直接把手机麦克风 ...

  5. Android音视频开发:MediaRecorder录制音频

    Android 多媒体框架针对音频录制提供了两种方法:MediaRecorder和AudioRecord. 区别 MediaRecorder:录制的音频文件是经过压缩后的,需要设置编码器,并且录制的音 ...

  6. 视频教程-Android WebRTC 实现1V1实时音视频通信-Android

    Android WebRTC 实现1V1实时音视频通信 从2012年开始从事移动互联网方面的开发工作,曾担任去哪儿网开发工程师,搜狗高级开发工程师,拥有多年一线实战开发经验. 擅长语言:Object- ...

  7. 安卓音视频整理(一)——音频模块

    这是关于安卓音视频的一个系列文章,大家可以从这里随意跳跃: 0.安卓音视频整理 1.安卓音视频整理(一)-- 音频模块 2.安卓音视频整理(二)-- 音视频编解码 3.安卓音视频整理(三)-- 图像模 ...

  8. Android音视频学习系列(九) — Android端实现rtmp推流

    系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...

  9. 某些老司机直播APP这么受欢迎?作为Android程序员如何进军音视频?

    前言 随着4g转入5g时代,音视频发展非常迅速.纵然市面上的直播软件杂乱无章,到了深夜成了老司机的福利.那么开发这些直播APP需要学习那些技术呢? 我们都知道现在Android开发的形势,或许此时可以 ...

最新文章

  1. MOG2 成员函数参数设定
  2. D001斯图加特~计算机
  3. MySQL中的InnoDB是怎么解决幻读的?
  4. 用python画花瓣-Python教程:使用Turtles画出带有花瓣的花
  5. 使用Windows Server Backup备份恢复Exchange Server 2010数据库
  6. gradle之gradlew最全指令攻略
  7. CSS3详解:transform、transition
  8. C++ 一键关闭屏幕
  9. matlab 设计带阻型陷波滤波器_Q值可调、最大增益恒定的带通滤波器
  10. springboot整合mybatisplus中@Mapper与@MapperScan的使用
  11. ASP编程实现各家快递公司订单状态查询
  12. Origin | 图形动画制作
  13. 10个免费网页统计与分析工具
  14. 生活点滴记录-- 两点一线
  15. 小程序picker用法
  16. HDU 6143 (容斥)
  17. 笔记本电脑外放声音吱吱响怎么办?
  18. 从易中天说起:怎样的老师才是好老师
  19. hdu2121 朱刘算法不定根
  20. Qt --实现语音读文字功能

热门文章

  1. div超出不换行_文字超出显示点点点之ellipsis 设置
  2. python基础-类
  3. Ubuntu 10.10升级显卡驱动后开机动画低分辨率问题
  4. 详细介绍 Qt Creator 快捷捷应用
  5. [python]删除列表中相同的元素
  6. linux下启动与关闭oracle监听与实例
  7. [bash]删除文件中含特定字符串的行
  8. 在中断程序里修改全局变量的童鞋注意啦~(C中的volatile作用 转载~)
  9. 前端学习(3199):jsx小练习
  10. 前端学习(3137):react-hello-react之生命周期