2016-10-13 18 views
1

검색 스택을 던져 내가 혼란스러워. 그래서, 내 문제가 무엇 : 나는 약간의 오디오를 녹음 AudioRecord 클래스를 사용하고Android. WAV에서 OGG로 파일을 변환

, 여기에 코드입니다 : 녹음이 완료

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); 
} 

후, 나는 AudioRecord에서이 .pcm 원시 데이터를 변환하고 있습니다 .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 형식이 필요합니다 그에는 OGG 형식을 지원하지 않습니다: 즉시 OGG 그대로 녹화 오디오 ME를하지 않는 것이 좋습니다하시기 바랍니다

주요 문제 : WAV 형식이 너무 무거운 무게, 그리고 난에 변환 할 필요가 작은 하나는 MP3 또는 OGG입니다. MP3는 특허권이있어 옵션이 아닙니다. 이 무게는 내가 무엇을 발견

훨씬 작은 것, 그래서 .wav 파일 .ogg 파일을 변환하려면 : 내가 뭘해야 할 것은 This library을하지만, 그것은 단지 기록하는 동안 .ogg.pcm 데이터를 변환하고, 내가 필요 다듬은 후 전체 파일을 변환하십시오 .wav

답변

0

불량 포장재 프로젝트 this을보십시오.

+0

안녕하세요, 답장을 보내주세요.하지만이 형식은 MP3이며, 나에게 옵션이 아닙니다. OGG 만 필요합니다. –

+0

오, 죄송합니다. 그래서 당신은 [이] (https://github.com/lalongooo/ffmpeg4android_demo)와 같은 ffmpeg 래퍼를 "ffmpeg -i audio.wav -acodec libvorbis audio.ogg"또는 이와 비슷한 명령을 사용하여 사용할 수 있습니다. –

+0

이론에서 나는 그것에 대해 무언가를 파고 있었고, 하나의 기능을 위해 거대한 라이브러리를 통합하는 결론은 과잉이라고 결론을 내릴 수 있습니다. ( –

0

wav 파일은 단지 큰 헤더 + PCM입니다. WAV 앞에있는 44 바이트를 제거하면 PCM을 얻고 우리와 공유 한 코드를 사용하여 OGG로 변환 할 수 있습니다.