Java 减少Android中wav格式录音的大小

Java 减少Android中wav格式录音的大小,java,android,audio,Java,Android,Audio,我正在使用此代码记录wav文件。但是,创建500kb文件需要10秒的音频。我怎样才能缩小尺寸。这对10秒的声音来说太多了 private static final int RECORDER_BPP = 16; private static final String AUDIO_RECORDER_FILE_EXT_WAV = ".wav"; private static final String AUDIO_RECORDER_FOLDER = "AudioRecorder"; private st

我正在使用此代码记录wav文件。但是,创建500kb文件需要10秒的音频。我怎样才能缩小尺寸。这对10秒的声音来说太多了

private static final int RECORDER_BPP = 16;
private static final String AUDIO_RECORDER_FILE_EXT_WAV = ".wav";
private static final String AUDIO_RECORDER_FOLDER = "AudioRecorder";
private static final String AUDIO_RECORDER_TEMP_FILE = "record_temp.raw";
private static final int RECORDER_SAMPLERATE = 11025;
private static final int RECORDER_CHANNELS = AudioFormat.CHANNEL_IN_STEREO;
private static final int RECORDER_AUDIO_ENCODING = AudioFormat.ENCODING_PCM_16BIT;

private AudioRecord recorder = null;
private int bufferSize = 0;
private Thread recordingThread = null;
private boolean isRecording = false;

private String mainFilename;
private String tempFilename;

private Context mContext;
/**
 * Creates a new audio recording at the given path (relative to root of SD card).
 */
public WavAudioRecorder(Activity mContext)
{
    this.mContext = mContext;
    bufferSize = AudioRecord.getMinBufferSize(4000,
            AudioFormat.CHANNEL_IN_MONO,
            AudioFormat.ENCODING_PCM_16BIT);

    tempFilename = getTempFilename();
    mainFilename = getFilename();
}

/**
 * Starts a new recording.
 */
public void start() throws IOException
{
    recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
            RECORDER_SAMPLERATE, RECORDER_CHANNELS,RECORDER_AUDIO_ENCODING, bufferSize);
    int i = recorder.getState();
    if(i==1)
        recorder.startRecording();

    isRecording = true;

    recordingThread = new Thread(new Runnable() {

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

    recordingThread.start();

}

WAV是一种原始格式,通常需要大量的空间。但是您可以更改采样率,从而生成更小的文件

但这也会降低质量。 所以我的建议是保持一个采样率,并将其转换为类似MP3的压缩格式,以便持久化


另一件值得尝试的事情是将WAV与ZIP打包:

您基本上是在要求(如MP3);这需要大量的工作,您应该评估是否确实有必要


另一种选择是减少采样器以减少每个音频块的信息量,并使用单声道而不是立体声,这会导致输出文件更小。

编码PCM 8BIT是否会将大小从16位减少到8位?如果名称是免费的,那么应该将文件大小减少一半,但以质量为代价,您必须问问自己这是否是最好的移动方式。我尝试过,它会产生缓冲区错误您尝试在写入文件之前压缩数据的ID?通道为单声道,采样率为11khz,我还能做什么@MuhammadUmar尝试降低(但仍受支持)sampleRate@MuhammadUmar你最后做了什么来压缩音频?