Je souhaite enregistrer une voix humaine sur mon téléphone Android. J'ai remarqué qu'Android a deux classes pour ce faire: AudioRecord et MediaRecorder . Quelqu'un peut-il me dire quelle est la différence entre les deux et quels sont les cas d'utilisation appropriés pour chacun?
Je veux pouvoir analyser la parole humaine en temps réel pour mesurer l'amplitude, etc. Ai-je raison de comprendre qu'AudioRecord est mieux adapté à cette tâche?
J'ai remarqué que sur la page Web officielle du guide Android pour l'enregistrement audio , ils utilisent MediaRecorder sans mentionner AudioRecord.
la source
Si je comprends bien,
MediaRecorder
c'est une boîte noire qui donne un fichier audio compressé sur la sortie etAudioRecorder
vous donne juste un flux sonore brut et vous devez le compresser vous-même.MediaRecorder
vous donne l'amplitude maximale du dernier appel degetMaxAmplitude()
méthode afin que vous puissiez implémenter un visualiseur sonore par exemple.Donc dans la plupart des cas
MediaRecorder
c'est le meilleur choix, sauf ceux dans lesquels vous devez effectuer un traitement sonore compliqué et vous devez accéder au flux audio brut.la source
AudioRecorderer enregistre d'abord les données dans minBuffer, puis elles sont copiées à partir de là vers le tampon temporaire, dans MediaRecorder, elles sont copiées dans des fichiers. Dans AudioRecorder, nous avons besoin de l'api setRecordPosition () pour copier les données enregistrées à la position requise, alors que dans MediaRecorder, le pointeur de fichier fait ce travail pour définir la position du marqueur. AudioRecorder peut être utilisé pour les applications qui fonctionnent sur un émulateur, cela peut être fait en fournissant une faible fréquence d'échantillonnage telle que 8000, tout en utilisant MediaRecorder l'audio ne peut pas être enregistré à l'aide de l'émulateur. Dans AudioRecord, l'écran se met en veille après un certain temps, tandis que dans MediaRecorder, l'écran ne se met pas en veille.
la source