我正在使用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
答案 0 :(得分:0)
看看this跛脚包装项目。
答案 1 :(得分:0)
Wav文件只是一个大标题+ PCM。您需要做的就是删除WAV前面的44个字节以获取PCM并使用您与我们共享的代码转换为OGG。