Android系统。将文件从WAV转换为OGG

时间:2016-10-13 11:25:20

标签: android wav audio-recording ogg

搜索扔掉堆栈我感到很困惑。所以,我的问题是什么:

我正在使用AudioRecord类来录制一些音频,这里是代码:

AudioRecord record = new AudioRecord(AudioSource.VOICE_RECOGNITION, 
            SAMPLING_RATE,
            AudioFormat.CHANNEL_IN_MONO,
            AudioFormat.ENCODING_PCM_16BIT,
            mBufferSize);
record.startRecording();

int read = 0;
while (mIsRecording) {
    read = record.read(mAudioBuffer, 0, mBufferSize);
    if ((read == AudioRecord.ERROR_INVALID_OPERATION) ||
            (read == AudioRecord.ERROR_BAD_VALUE) ||
            (read <= 0)) {
        continue;
    }

    proceed();
    write(out);
}

录制完成后,我将此.pcm原始数据从AudioRecord转换为.wav

private void convertRawToWav() {
    File file_raw = new File(mFileNameRaw);
    if (!file_raw.exists()) { return; }
    File file_wav = new File(mFileNameWav);
    try {
        PcmAudioHelper.convertRawToWav(WavAudioFormat.mono16Bit(SAMPLING_RATE), file_raw, file_wav);
        if (handler != null) {
            handler.onRecordSuccess();
        }
    } catch (IOException e) {
        e.printStackTrace();
        if (handler != null) {
            handler.onRecordSaveError();
        }
    }
}

我将来需要.wav格式,因为我的应用程序中有trim函数,从Ringdroid复制,不支持OGG格式,因此:请不要建议我记录音频作为飞行中的OGG

主要问题: Wav格式太重了,我需要将它转换为更小的格式,即MP3或OGG。 MP3已获得专利,因此不是一种选择。我需要的是: 要将.wav文件转换为.ogg文件,以便它的重量会小得多

我找到了什么: This library,但它只会在录制时将.pcm数据转换为.ogg,我需要在将整个文件修改为.wav

之后将其转换为

2 个答案:

答案 0 :(得分:0)

看看this跛脚包装项目。

答案 1 :(得分:0)

Wav文件只是一个大标题+ PCM。您需要做的就是删除WAV前面的44个字节以获取PCM并使用您与我们共享的代码转换为OGG。