Android录音失真具体解决方案

移动开发 Android
在实际应用中,Android录音的实现通常会出现失真这样的问题。那么如何才能解决Android录音失这一BUG呢?在这里大家将会找到答案。

我们曾经在一篇文章中为大家详细介绍过有关Android多媒体录制功能的一些实现方法。其中就包括对录音的实现方法。今天我们可以通过这篇文章介绍的内容详细了解Android录音失真的具体解决方法,以帮助大家解决实际应用中出现的问题。

在6410+WM9714的Android平台上测试MIC IN录音功能,出现一个BUG。在该平台声音播放是完全正常的,但是录音后再播放刚录的声音,会有失真,同样的录音文件在电脑上播放也一样,说明是Android录音失真的问题。后来通过打印9714的寄存器,发现录音频率是8000HZ,放音频率是44100HZ,这时基本上可以确定是由这个不匹配引起的。
我在Android代码里:AudioHardwareALSA.cpp文件中的函数中设定采样率,如下:

  1. AudioStreamInALSA::AudioStreamInALSA
    (AudioHardwareALSA *parent) :mParent(parent)   
  2. {   
  3. static StreamDefaults _defaults = {   
  4. ....................   
  5. sampleRate : AudioRecord::DEFAULT_SAMPLE_RATE,   
  6. ....................   
  7. };   

设定了:

  1. static const int DEFAULT_SAMPLE_RATE = 44100;  

但是重烧程序后结果仍然存在Android录音失真这一问题,采样率还是8000,似乎被其他地方把值覆盖了。后来我试着把所有的采样率8000的地方全都改成44100,结果仍然一样是8000。到底是不是采样率的原因引起的呢?

之后用arecord命令来录音,前提是不能进入Android,否则音频设备会被占用。结果录得的声音播放时仍然是同样的效果,当时估计这问题应该跟Android上层没有什么大的关系。后来别人有试通过将播放速度加快一倍,就得到的正常的播放音,但问题是仍然不知从何处来解决这个问题。

后来经过台湾同事的挖掘,改动录音MIC IN的DMA SIZE解决了此次问题。改动列出如下,原因尚待分析。

  1. static struct s3c24xx_pcm_dma_params 
    s3c6400_ac97_mic_mono_in = {  
  2. .client = &s3c6400_dma_client_micin,  
  3. .channel = DMACH_AC97_MIC_IN,  
  4. .dma_addr = S3C6400_PA_AC97 + S3C_AC97_MIC_DATA,  
  5. .dma_size = 2,///4  
  6. }; 

该参数最终在s3c24xx_pcm_hw_params中修改DMA配置所用。Android录音失真的相关解决办法就为大家介绍到这里。

【编辑推荐】

  1. Android屏幕大小相关技巧应用指南
  2. Android多媒体录制功能的实现方式介绍
  3. Android图片大小调整动态实现方法
  4. Android界面互调具体应用方式解析
  5. Android智能指针使用方法介绍
责任编辑:曹凯 来源: CSDN
相关推荐

2010-05-17 14:49:43

MySQL中文乱码

2010-05-11 17:56:59

MySQL Table

2010-09-27 13:37:40

部署DLP

2016-09-22 21:42:48

Android闹钟移动

2014-07-17 00:42:18

Android应用测试方案

2013-05-16 11:07:37

Android开发Android应用自动化测试

2012-05-27 16:21:31

IDC华为

2018-12-03 12:17:27

Semptian解决方案

2018-12-03 12:13:21

Mellanox解决方案

2018-12-03 11:59:42

Inventec解决方案

2018-12-03 12:26:30

YADRO解决方案

2016-03-13 17:58:57

2011-05-04 16:33:09

游戏销售Android Mar游戏

2013-09-12 10:21:07

Nubo虚拟化MDM

2013-03-26 11:20:08

Eclipse无法显示

2010-03-31 09:19:43

Android

2014-03-25 10:57:42

Android消息推送方案

2011-12-09 11:13:17

2009-12-23 21:06:47

统一通信多媒体联络中心平台华为

2016-03-13 17:35:18

点赞
收藏

51CTO技术栈公众号