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)?

  • Comment savoir si la carte est prête à s'habituer lors de l'utilisation de SupportMapFragment?
  • Comment corriger l'erreur "Failed to sync vcpu reg"?
  • Comment ajouter -Xlint: débloqué sur mon projet basé sur Android Gradle?
  • Supprimer le titre de DatePickerDialog
  • Le décalage de la boîte de dialogue avec AppCompat-v7 22 entraîne des ombres déloyales sur api <21
  • Gradle met des fichiers en double dans le fichier apk
  • Oh, et je sais que MediaRecorder peut être utilisé car il ne prend pas en charge les formats WAV ou MP3.

  • Comment puis-je faire correspondre une révision Google Play Services avec une version d'installation?
  • Comment recevoir au hasard une couleur de conception de matériau?
  • Puis-je remplacer le bouton «Accueil» dans ma demande?
  • Comment puis-je ajouter des fichiers .so à un projet de bibliothèque Android en utilisant gradle 0.7+
  • Android imageView Zoom-in et Zoom-Out
  • Android Camera Intent: comment obtenir une photo pleine grandeur?
  • 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.