web-dev-qa-db-fra.com

Tutoriels pour OpenSL ES pour Android

J'ai essayé d'étudier l'utilisation de la bibliothèque OpenSL ES qui est disponible pour faire de l'audio natif avec Android 2.3, mais il semble que les fichiers d'en-tête et le pdf de 600 pages de la spécification sont les seule la documentation disponible.

Où dois-je chercher des exemples, des didacticiels ou un bref aperçu des capacités?

39
mjr

Il existe un exemple d'application fourni avec le NDK appelé NativeAudio . Il contient des exemples de presque tout ce que vous voudriez implémenter: effets, streaming, synthèse, etc. Si vous regardez son code, vous aurez une bonne longueur d'avance.

21
Phonon

Vous pouvez également consulter le blog de programmation audio de Victor Lazzarini, il a une section Android: http://audioprograming.wordpress.com/category/Android/

Vous y trouverez des exemples de travail, ils m'ont été extrêmement utiles pour commencer avec openSL et peuvent être utilisés comme base pour développer des applications audio avec ndk.

Et aussi, ne négligez pas le document de spécifications, ce n'est pas si long après tout, la première partie ne fait pas plus de cinquante pages et vous donne la perspective nécessaire pour comprendre comment tout fonctionne, le reste est à usage de référence. Attention à ce que certaines choses dans Android implémentation openSL diffèrent des spécifications: voir dans votre-répertoire-ndk/docs/opensles/index.html pour plus d'informations à ce sujet.

16
athos

Après une recherche assez approfondie des informations les plus précieuses que j'ai trouvées:

11
gergonzalez

Pour ceux d'entre vous qui souhaitent simplement lire des fichiers sonores uniques ou enregistrer un court instantané (dans un seul tampon), le projet NDK sera suffisant. J'ai jeté un œil au "Guide du débutant d'Android NDK" et il n'explique vraiment pas beaucoup plus que l'exemple de projet NDK.

Mais vraiment, pour ces applications, vous êtes probablement mieux avec l'une des API Java. L'utilisation d'OpenSL ES pour elles est un peu exagérée à mon humble avis. Il y aura beaucoup plus de code à écrire et aucun gain réel.

L'avantage d'OpenSL est pour ceux intéressés par des latences plus faibles (lorsqu'elles deviennent disponibles) pour la synthèse et le traitement audio, et pour cela, vous voudrez probablement diffuser de l'audio, plutôt que de lire/enregistrer des tampons uniques. Le chapitre du livre et l'exemple NDK ne vous en apprendront pas plus. Les articles de blog du blog de programmation audio sont plus informatifs à ces fins.

7
R F

L'un des blogs de programmation audio de Victor Lazzarini sur Android est vraiment un bon début. http://audioprograming.wordpress.com/category/Android/

Et il y a un exemple de code téléchargeable directement depuis le dépôt bitbucket git pour ce blog, c'est la partie la plus bienvenue.

La construction et l'exécution sont assez simples. Pour moi, j'ai besoin de ces étapes pour créer et exécuter cet exemple:

  1. Installez SWIG: swig-3.0.2 . Installez-le en 3 étapes:

    $ configure $ make $ Sudo make install.

  2. Modifiez le build.sh pour refléter l'emplacement de votre NDK. Et exécutez le script build.sh dans le répertoire de niveau supérieur.
  3. Générez build.xml par:

    $ Android update project --name opensl-es-audiotest --target 1 --path ./

  4. Construire avec ant: $ ant debug
  5. Ensuite, vous pouvez l'installer sur votre appareil et le tester:

    $ adb install bin/opensl-es-audiotest-debug.apk

0
gary