Android录音失真具体解决方案

  我们曾经在一篇文章中为大家详细介绍过有关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.};

  8.}

  设定了:

  9.static const int DEFAULT_SAMPLE_RATE = 44100;

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

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

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

  10.static struct s3c24xx_pcm_dma_params

  s3c6400_ac97_mic_mono_in = {

  11..client = &s3c6400_dma_client_micin,

  12..channel = DMACH_AC97_MIC_IN,

  13..dma_addr = S3C6400_PA_AC97 + S3C_AC97_MIC_DATA,

  14..dma_size = 2,///4

  15.};

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

时间: 2024-11-05 19:10:07

Android录音失真具体解决方案的相关文章

android 录音波形图不持续出现

问题描述 android 录音波形图不持续出现 以下是修改的一段画录音波形图的代码,数据是jni层录音返回的一个byte数组,在录音的时候,只是画了一小段波形就不再继续,不知道哪里出现了问题 class RecordTask extends AsyncTask { private int recBufSize; private byte[] pcmData; private SurfaceView sfv;// 画板 private Paint mPaint;// 画笔 public Recor

android-关于Android录音不正常,该怎么解决

问题描述 关于Android录音不正常,该怎么解决 我选择的是AudioRecord,发现单声道录下来的音是不正常的音,而双声道确是正常的求大神帮我解答下,谢谢了..... 解决方案 android webview中的html代码 @media screen 在低版本系统下显示不正常的解决办法 解决方案二: 不正常,是什么现象呢?

android录音时弹出权限选择框影响录音动画显示问题

问题描述 android录音时弹出权限选择框影响录音动画显示问题 最近做个即时通讯的项目,里面支持语音聊天,实现起来蛮简单的,就是当长按录音按钮,进行录音,并弹出dialog显示录音动画,松开按钮结束录音.在手机上运行时,手机会有各种的权限提示dialog,而且我的录音按钮是响应的onTouch事件,所以就造成我的按钮在onkeydown时去初始化录音并显示dialog动画时,权限Dailog弹出,我的界面控件失去焦点,当我去选择权限时,控件无法捕获onkeyup或者onkeymove事件,不能

android录音时如何不将本机播放的声音录进去

问题描述 android录音时如何不将本机播放的声音录进去 求助大神! android录音时如何不将本机播放的声音录进去,类似唱吧那样,边录音边有个背景音乐在播放 用代码如何实现? 解决方案 去唱吧的源代码求助, 解决方案二: 录的音频流的类型设置就可以了 解决方案三: mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); mMediaRecorder.setAudioSource(MediaRecorder.Audio

Android录音时获取分贝值的方法代码实例_Android

参考文章Android中实时获取音量分贝值详解:http://www.jb51.net/article/64806.htm public class MediaRecorderDemo { private final String TAG = "MediaRecord"; private MediaRecorder mMediaRecorder; public static final int MAX_LENGTH = 1000 * 60 * 10;// 最大录音时长1000*60*1

Android录音应用实例教程_Android

本文以实例形式较为详细的展示了Android录音的实现方法,分享给大家供大家参考之用.具体方法如下: 首先是xml布局文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" andr

Android闹钟设置的解决方案_Android

Android设置闹钟并不像IOS那样这么简单,做过Android设置闹钟的开发者都知道里面的坑有多深.下面记录一下,我解决Android闹钟设置的解决方案.主要问题1.API19开始AlarmManager的机制修改. 2.应用程序被Kill掉后,设置的闹钟不响. 3.6.0以上进入Doze模式会使JobScheduler停止工作. 4.手机设置重启后,闹钟失效问题. API19以上AlarmManager机制的修改 API19之前AlarmManager提供了三个设置闹钟的方法,由于业务需求

Android闹钟设置的解决方案

Android设置闹钟并不像IOS那样这么简单,做过Android设置闹钟的开发者都知道里面的坑有多深.下面记录一下,我解决Android闹钟设置的解决方案. 主要问题 API19开始AlarmManager的机制修改. 应用程序被Kill掉后,设置的闹钟不响. 6.0以上进入Doze模式会使JobScheduler停止工作. 手机设置重启后,闹钟失效问题. API19以上AlarmManager机制的修改 API19之前AlarmManager提供了三个设置闹钟的方法,由于业务需求闹钟只需要一

Android 录音与播放功能的简单实例

Android 录音与播放功能的简单实例 最近在研究Android中一些常用的功能,像地图.拍照.录音和播放的实现等等,还有一些侧滑.动画等是如何实现的. 今天就把录音和播放的实现分享一下,录音和播放比较简单,利用android内部的类即可实现. 1.先看下运行后的界面: 以下三张图分别是进入.录音.播放时的. 2.Layout布局文件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout x