Création d'un fichier WAV à partir de données PCM brutes en utilisant le SDK Android

J'essaie d'utiliser la classe AudioRecord pour enregistrer un fichier WAV. Le problème est qu'il ne fournit que les données PCM brutes, et si je l'écris dans un fichier, il n'y a pas d'informations d'en-tête, donc il ne fonctionnera pas dans aucun lecteur multimédia. Comment puis-je créer un fichier WAV à partir de ces données brutes?

Ou bien, existe-t-il une autre façon d'enregistrer du son en Android sur un fichier WAV (ou, en variante, MP3)?

Oh, et je sais que MediaRecorder peut être utilisé car il ne prend pas en charge les formats WAV ou MP3.

  • Existe-t-il un moyen d'envoyer un fichier audio à la reconnaissance vocale
  • Lecture rapide de fichiers .wav - Android
  • Comment coder un WAV vers un mp3 sur un appareil Android
  • Comparer wav de voix dans l'API Android ou Android (commandes vocales)
  • Comment convertir le fichier WAV / OGG en fichier FLAC dans Android?
  • Encode wav à AAC sur Android
  • Utilisation de AudioTrack dans Android pour lire un fichier WAV
  • Android Streaming Wav Audio Error: MediaPlayer Préparation échouée: status = 0x1
  • 3 Solutions collect form web for “Création d'un fichier WAV à partir de données PCM brutes en utilisant le SDK Android”

    D'accord, je l'ai compris. Cette publication a été cruciale pour m'aider: http://computermusicblog.com/blog/2008/08/29/reading-and-writing-wav-files-in-java

    Fondamentalement, j'ai utilisé ByteArrayOutputStream pour écrire les données PCM brutes d'AudioRecord, ce qui me permet ensuite d'obtenir le tableau d'octets et sa taille lorsque le processus est terminé. Je peux ensuite utiliser ces données en conjonction avec les paramètres SampleRate, BitRate et Stereo / Mono pour créer l'en-tête WAV selon le lien ci-dessus. Le fichier résultant fonctionne parfaitement!

    Vérifiez MediaRecorder.setOutputFormat (), vous pouvez définir différents formats de conteneur pour votre enregistrement; Il existe MediaRecorder.OutputFormat.MPEG_4 et MediaRecorder.OutputFormat.THREE_GPP; Le seul format autorisé selon RAW est setAudioEncoder (MediaRecorder.AudioEncoder.AMR_NB);

    Désolé mais MP3 n'est pas utile. Vous avez vraiment besoin de mp3 pour l'enregistrement? WAV au contraire de MP3 est un conteneur , pas un format ; WAV peut être n'importe quel type de format d'encodage.

    Vous êtes toujours libre de prévoir un en-tête WAV RIFF devant vos données pcm brutes (aussi longtemps que vous connaissez exactement le format). Vérifiez ici comment il doit ressembler: http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html

    Vous voudrez peut-être utiliser la classe Mediarecord

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.