2016-10-13 22 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生データを変換しています

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フォーマットが必要になります。.wavへOGG形式をサポートしていません、その:FLY

MAIN問題について、OGGなどの録音音声をMEをお勧めしないPLEASE: WAV形式はあまりにも重いです、と私はそれを変換する必要がありますMP3またはOGGのいずれか小さい方。 MP3は特許を取得しているので、オプションではありません。どのような私は必要なのである。 それは重量ですので.oggファイルに.wavファイルを変換するには、私が見つけたもの

はるかに小さくなります。 This libraryが、録画中に、それが唯一の.ogg.pcmデータを変換し、私がする必要がありますそれをトリミングした後に全ファイルを変換する.wav

答えて

0

thisラメラッパープロジェクトを見てください。

+0

こんにちは、返信用のthxですが、これはMP3形式で、私にとってはオプションではありません。OGGのみが必要です –

+0

ああ、申し訳ありません。だからあなたは[この](https://github.com/lalongooo/ffmpeg4android_demo)のようなffmpegラッパーを "ffmpeg -i audio.wav -acodec libvorbis audio.ogg"というようなコマンドで実行することができます。 –

+0

私は、私はそれについて叩き打ちしていました。そして、そのような巨大なライブラリを1つの関数に統合することは、あまりにも重すぎるという結論に至ります。( –

0

Wavファイルは、大きなヘッダー+ PCMです。必要なのは、WAVの前面にある44バイトを削除してPCMを取得し、私たちと共有したコードを使用してOGGに変換するだけです。

関連する問題