【问题标题】:Android - get amplitude variation from wav fileAndroid - 从 wav 文件中获取幅度变化
【发布时间】:2012-09-20 11:54:15
【问题描述】:

我正在开发 android 应用程序,它将记录 wav 文件,然后它应该从声音数据中生成波形。

我正在使用 AudioRecorder 录制麦克风的声音。 `

bufferSize = AudioRecord.getMinBufferSize(44100,AudioFormat.CHANNEL_IN_STEREO,AudioFormat.ENCODING_PCM_16BIT);

AudioRecord recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
        44100,AudioFormat.CHANNEL_IN_STEREO,AudioFormat.ENCODING_PCM_16BIT, bufferSize);

    recorder.startRecording();

    isRecording = true;

    recordingThread = new Thread(new Runnable() {

        @Override
        public void run() {
            writeAudioDataToFile();
        }
    },"Innovolt AudioRecorder Thread");

    recordingThread.start();

这将作为 wav 文件存储在内存中。 到这一步就OK了。

现在我必须从录制的声音文件中获取幅度变化。

有没有办法从录制的 wav 文件中获取振幅数组而不播放它? `

【问题讨论】:

  • wav 文件通常只是原始 PCM 数据,文件开头有一个短标题。因此,您可以将其作为二进制文件打开并从中读取示例。

标签: android android-ndk avaudioplayer audio


【解决方案1】:

我最近为此录制目的制作了库。你只需要这样做:-

recorder = OmRecorder.wav(
new PullTransport.Default(mic(), new PullTransport.OnAudioChunkPulledListener() {
    @Override public void onAudioChunkPulled(AudioChunk audioChunk) {
      animateVoice((float) (audioChunk.maxAmplitude() / 200.0));
    }
  }), file());

你可以很容易地得到幅度! 你可以找到更多信息:-

https://github.com/kailash09dabhi/OmRecorder

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 2012-09-05
    相关资源
    最近更新 更多