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

  • Inattendue de la réponse inattendue de l'application Android in-app
  • Différence entre JSONObject et JSONArray
  • Try-with-resources n'est pas pris en charge à ce niveau de langue - Android
  • Faites glisser et déposez RecyclerView qui est installé à partir de SQLiteDatabase
  • Boot Receiver ne fonctionne pas
  • Comment faire un lecteur de code QR
  • Oh, et je sais que MediaRecorder peut être utilisé car il ne prend pas en charge les formats WAV ou MP3.

  • Une Google Maps Key pour plusieurs développeurs (Android)? Eclipse keystore personnalisé?
  • Rafraîchir une activité du service lorsque actif
  • Comment désactiver CalendarView dans un DatePicker?
  • BitmapFactory.decodeStream renvoie nulle sans exception
  • Samsung Galaxy Devices ne peut pas utiliser la position géographique.getCurrentPosition
  • Exécutez les applications Android sur un périphérique matériel depuis Android Studio par USB
  • 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.