首页 > 解决方案 > 如何提取部分录制的音频字节

问题描述

我将声音录制到字节数组,见下文:

    recorder = new MediaRecorder();
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);
    recorder.setAudioSamplingRate(44100);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    recorder.setAudioEncodingBitRate(1024*1024);

...

    while (hasRecording) {
        try {
            int read = inputStream.read(data, 0, data.length);
            if (read == -1)
                break;

            byteArrayOutputStream.write(data, 0, read);
            byteArrayOutputStream.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

通过记录,我正在将幅度绘制到图表中(动态)。停止录制后,用户可以选择图表的一部分。现在,如何通过用户选择提取部分字节数组?我只有位置选定的坐标和已完成录制声音的字节数组。我知道,我必须用比特率计算获取字节数组中的位置,但我不知道如何。

谢谢。

标签: javaandroidaudiorecordandroid-mediarecorder

解决方案


如果数组大小为 N 并且包含 T 秒的音频数据(从 t=0 到 t=T),则时间 t 的数据将位于索引 t*N/T 处。


推荐阅读