95 votes

Android AudioRecord vs. MediaRecorder pour l'enregistrement audio

Je veux enregistrer la voix humaine sur mon téléphone Android. J'ai remarqué que 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 quelles sont les cas d'utilisation pour chaque?

Je veux être en mesure d'analyser les discours de l'homme en temps réel pour mesurer l'amplitude, etc. Ai-je raison de comprendre que AudioRecord est mieux adapté pour cette tâche?

J'ai remarqué sur le site officiel Android guide page web pour enregistrer de l'audio, ils utilisent MediaRecorder sans mention de AudioRecord.

87voto

Stephan Points 4003

Si vous souhaitez effectuer votre analyse alors que l'enregistrement est encore en cours, vous devez utiliser l'enregistrement audio en tant que MediaRecorder des enregistrements automatiquement dans un fichier. AudioRecord a pour inconvénient qu'après avoir appelé startRecording() vous devez interroger vous-même les données à partir de l'instance AudioRecord . En outre, vous devez lire et traiter les données assez rapidement pour que le tampon interne ne soit pas saturé (consultez la sortie logcat, AudioRecord vous indiquera quand cela se produira).

35voto

Lampapos Points 376

Comme je comprends MediaRecorder est une boîte noire qui donne de fichier audio compressé sur la sortie et l' AudioRecorder vous donne juste son cru flux et compressez-le par vous-même.

MediaRecorder vous donne le max amptitude du dernier appel d' getMaxAmplitude() méthode de sorte que vous pouvez mettre en œuvre un visualiseur audio par exemple.

Donc, dans la plupart des cas MediaRecorder est le meilleur choix à l'exception de ceux en qui vous devriez faire un peu compliqué de traitement de son et vous avez besoin d'accéder à la crue de flux audio.

18voto

sanjeev51 Points 51

AudioRecorderer premier enregistre les données dans le minBuffer puis il est copié à partir de là à la mémoire tampon temporaire, dans MediaRecorder il est copié les fichiers. Dans AudioRecorder nous avons besoin de l'api setRecordPosition() pour copier les données sauvegardées à la position requise, alors que dans MediaRecorder le pointeur de fichier est fait ce travail pour définir la position du marqueur. Enregistreur audio peut être utilisé pour les applications qui s'exécutent sur un émulateur, ce qui peut être fait en fournissant à bas taux d'échantillonnage de 8000 par exemple, lors de l'utilisation MediaRecorder l'audio ne peuvent pas être enregistrés à l'aide de l'émulateur. Dans AudioRecord la veille de l'écran après un certain temps, alors que dans MediaRecorder l'écran n'a pas sommeil.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X