Articles of audiorecord

无法访问AudioRecorder

我试图通过小型录音从服务中find声压级,但Android不会让我访问硬件。 我在Logcat中收到以下错误: 该错误来自以下代码: AudioRecord recordInstance = null; // We’re important… android.os.Process .setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO); short bufferSize = 4096;// 2048; recordInstance = new AudioRecord(MediaRecorder.AudioSource.MIC, this //line 167 .getFrequency(), this.getChannelConfiguration(), this .getAudioEncoding(), bufferSize); //object not created tempBuffer = new short[bufferSize]; recordInstance.startRecording(); 会发生什么是recordInstance从未正确创建,所以当它到达结尾并调用recordInstance.startRecording()时,recordInstance仍为null。 Android在定义中拒绝我的程序请求。 有谁知道这些错误表明了什么? 我在网上找不到列表。 AudioRecord Docs 谢谢

Android AudioRecord的问题?

我一直在搞乱Android API的AudioRecordfunction,并发现了一些奇怪的行为。 背景信息:我的手机是HTC Incredible我正在使用Eclipse插件进行Android开发和模拟器。 目标平台或操作系统是2.2 …因为它是我的手机使用的。 一些代码: bufferSize = AudioRecord.getMinBufferSize(FREQUENCY, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT); audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, FREQUENCY, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize); 这是我用来设置AudioRecord API的代码。 现在,对于模拟器,它将FREQUENCY设置为8000以使其工作。 回来的缓冲区大小为640.对于手机,我使用44100.这里的一个问题是看起来波形的PCM数据似乎是8位有符号波。 我从-127到128得到了值。我认为值为AudioFormat.ENCODING_PCM_16BIT会产生不同的东西。 我用线程处理音频, public void run() { while(isRecording) { audioRecord.startRecording(); byte[] data = new byte[bufferSize]; audioRecord.read(data, 0, bufferSize); listener.setData(data); handleData(data); } audioRecord.release(); } 我有一种方法可以使用SurfaceView以图形方式实时显示相应的波形。 MIC似乎有很多噪音。 我也从模拟器和手机中得到了这个噪音。 我是否需要通过某种filter运行数据? 我想用这些数据来计算一些有趣的FFT和东西只是为了解决这个问题。 但我需要以某种方式减少噪音。 有没有其他人经历过这一点。 有没有人有办法解决吗? 我很感激你的时间和回应,谢谢,dk

AudioRecord:缓冲区溢出?

使用我的应用程序进行RECORDING ,我收到缓冲区溢出。 录制在Service执行。 我无法弄清楚为什么我从AudioFlinger收到此消息。 下面我实例化AudioRecord对象并设置它的回调。 bufferSize = AudioRecord.getMinBufferSize(sampleRate, channelConfig, audioFormat); aRecorder = new AudioRecord(audioSource, sampleRate, channelConfig, audioFormat, bufferSize); aRecorder.setRecordPositionUpdateListener(updateListener); bytesPerSample = bitsPerSample / 8; int bytesPerFrame = nChannels * bytesPerSample; framePeriod = bufferSize / bytesPerFrame; // nr of frames that can be kept in a bufferSize dimension int result = aRecorder.setPositionNotificationPeriod(framePeriod); buffer = new byte[bufferSize]; […]

Android AudioRecord不会初始化

我正在尝试实现一个监听麦克风输入(特别是呼吸)的应用程序,并根据它显示数据。 我正在使用Android类AudioRecord,当尝试实例化AudioRecord时,我得到三个错误。 AudioRecord: AudioFlinger could not create record track, status: -1 AudioRecord-JNI: Error creating AudioRecord instance: initialization check failed with status -1. android.media.AudioRecord: Error code -20 when initializing native AudioRecord object. 我发现这个优秀的线程: AudioRecord对象没有初始化 我从已接受的答案中借用了代码,尝试所有采样率,音频格式和通道配置以尝试解决问题,但它没有帮助,我得到了所有设置的上述错误。 我还根据线程中的一个答案在几个地方添加了对AudioRecord.release()的调用,但它没有任何区别。 这是我的代码: import android.media.AudioFormat; import android.media.AudioRecord; import android.media.MediaRecorder; import android.util.Log; public class SoundMeter { private AudioRecord ar = null; private int […]

如何在Android中录制音频时调整麦克风灵敏度

我正在制作录音应用程序。 在app中我有一个Seekbar来改变输入语音增益。 我找不到任何调整输入语音增益的方法。 我正在使用AudioRecord类来录制语音。 recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, RECORDER_SAMPLERATE, RECORDER_CHANNELS, RECORDER_AUDIO_ENCODING, bufferSize); recorder.startRecording(); 我在Play商店看到了一个使用此function的应用程序。 https://play.google.com/store/apps/details?id=com.grace.microphone

Android AudioRecord和MediaRecorder

我正在开发一个音频处理应用程序,我需要录制音频,然后处理它以获取该录制的function。 但是,我希望使用MediaPlayer播放可播放格式的音频。 我已经看到要录制音频来处理它最好使用AudioRecord,因为我可以从那里获得原始音频。 但后来我无法以可播放的格式将数据写入文件(在android中是否有任何库?)。 我使用这种方法记录原始数据,然后将其写入文件: http : //andrewbrobinson.com/2011/11/27/capturing-raw-audio-data-in-android/但是当我尝试播放此文件时在设备上,它不可播放。 然后,如果我使用MediaRecorder,我不知道如何解码数据以提取function。 我一直在看MediaExtractor,但它接触MediaExtractor不解码帧。 那么……最好的方法是什么? 我想这在任何音频处理应用程序中都很常见,但我无法find管理它的方法。 感谢您的回复。

AudioRecord在Android L Developer Preview中记录间歇性声音

我用PCM16LE格式的AudioRecord录制声音,8000Hz,1channel。 它在Android版本2.3.3-4.4.4中记录正常,但在Android L(5.0)开发人员预览版中记录了奇怪的间歇性声音(在nexus 5,nexus 7和模拟器上)。 以下是录制声音的样本(上半部分录制,下半部分播放): https : //www.dropbox.com/s/3wcgufua5pphwtt/android_l_sound_record_error.m4a?dl=0 我尝试使用不同的采样率(4000,16000)和8bit播放录制的声音,但声音保持间歇性。 这个声音有什么问题? 我正在使用此AudioRecordTask来记录带有getAudioRecord()的音频,用于初始化输入(在操作期间没有返回错误;接收的音频块大小与internalBufferSize值相同): public final int SAMPLING_RATE = 8000; private AudioRecord getAudioRecord() { int internalBufferSize = AudioRecord.getMinBufferSize(SAMPLING_RATE, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT); //returns 640 internalBufferSize = 8000; //also tried returned value (640) and values 2560, 30000 – no changes final int SOURCE; if (Build.VERSION.SDK_INT < 11) { SOURCE = […]

AudioRecord和AudioTrack延迟

我正在尝试开发像iRig for android这样的应用程序,所以第一步是捕获麦克风输入并同时播放它。 我有它,但问题是我得到一些延迟,使这无法使用,如果我开始处理缓冲区,我担心它将完全无法使用。 我像这样使用audiorecord和audiotrack: new Thread(new Runnable() { public void run() { while(mRunning){ mRecorder.read(mBuffer, 0, mBufferSize); //Todo: Apply filters here into the buffer and then play it modified mPlayer.write(mBuffer, 0, mBufferSize); //Log.v(“MY AMP”,”ARA”); } 而且这种方式是inicialization: // ==================== INITIALIZE ========================= // public void initialize(){ mBufferSize = AudioRecord.getMinBufferSize(mHz, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT); mBufferSize2 = AudioTrack.getMinBufferSize(mHz, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT); mBuffer […]

Android AudioRecord read总是返回-3(ERROR_INVALID_OPERATION)

我已经尝试将代码简化为最低限度,但它仍然无效: public class MainActivity extends AppCompatActivity { AudioRecord rec; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); rec= new AudioRecord(MediaRecorder.AudioSource.MIC,44100, AudioFormat.CHANNEL_IN_MONO,AudioFormat.ENCODING_PCM_16BIT,8192); short buff[] = new short[8192]; int read = rec.read(buff,0,buff.length); System.out.print(read); } 无论如何,总是返回-3。 我错过了什么?

Android主动降噪function

我正在做一个有点雄心勃勃的项目,通过耳机或耳机在Android上实现主动降噪。 我的目标是用Android手机麦克风记录环境噪音,反相(从音频记录中拉出的短值上的简单* -1),并通过耳机播放倒置的波形。 如果延迟和幅度接近正确,则应该使环境中的大量机械结构噪声无效。 这是我到目前为止所得到的: @Override public void run() { Log.i(“Audio”, “Running Audio Thread”); AudioRecord recorder = null; AudioTrack track = null; short[][] buffers = new short[256][160]; int ix = 0; /* * Initialize buffer to hold continuously recorded audio data, start recording, and start * playback. */ try { int N = AudioRecord.getMinBufferSize(8000,AudioFormat.CHANNEL_IN_MONO,AudioFormat.ENCODING_PCM_16BIT); recorder […]