2016-10-13 6 views
1

en recherchant jeter la pile j'ai été confondu. Alors, quel est mon problème:Android. Convertir le fichier de WAV en OGG

J'utilise AudioRecord classe pour enregistrer des données audio, voici le code:

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

Une fois l'enregistrement terminé, je suis convertir cette .pcm données brutes 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(); 
     } 
    } 
} 

J'ai besoin le format .wav à l'avenir, car il est fonction de garniture dans mon application, copié de Ringdroid qui ne prend pas en charge le format OGG, à cet effet: S'IL VOUS PLAÎT NE ME RECOMMANDENT AUX AUDIO RECORD EN OGG LA VOLEE

NUMÉRO PRINCIPAL: le format Wav est le poids trop lourd, et je dois le convertir en plus petit, qui est soit MP3 ou OGG. Le MP3 est breveté, donc ce n'est pas une option. Qu'est-ce que j'ai besoin est: Pour convertir le fichier .wav au fichier .ogg il est donc le poids sera beaucoup plus petite

Ce que je trouve: This library, mais il ne convertit que .pcm données .ogg lors de l'enregistrement, et je dois convertir le fichier entier après l'avoir raccourci comme

Répondre

0

Regardez le this projet d'emballage lame.

+0

Salut, merci pour la réponse, mais c'est le format MP3, ce n'est pas une option pour moi, j'ai besoin OGG seulement –

+0

Oh, désolé. Vous pouvez donc utiliser l'encapsuleur ffmpeg comme [this] (https://github.com/lalongooo/ffmpeg4android_demo) avec la commande run "ffmpeg -i audio.wav -acodec libvorbis audio.ogg" ou quelque chose comme ça. –

+0

en théorie je peux, je battais à ce sujet, et arriver à la conclusion que l'intégration d'une telle bibliothèque énorme pour une fonction est overkill = ( –

0

Le fichier Wav est juste un gros en-tête + PCM. Tout ce que vous devez faire est de supprimer les 44 octets à l'avant du WAV pour obtenir le PCM et utiliser le code que vous avez partagé avec nous pour convertir en OGG.