programacion - Tutoriales para OpenSL ES para Android
opensl es vs audiotrack (5)
He estado tratando de analizar el uso de la biblioteca OpenSL ES que está disponible para hacer audio nativo con Android 2.3, pero parece que los archivos de cabecera y el pdf de 600 páginas de la especificación son la única documentación disponible.
¿Dónde debo buscar ejemplos, tutoriales o una breve descripción de las capacidades?
Después de buscar bastante la información más valiosa que he encontrado:
- El proyecto github.com/googlesamples/android-ndk/tree/master/native-audio incluido en NDK es un buen comienzo.
- También es un gran punto de partida el capítulo 7 "Reproducción de sonido con OpenSL ES" del libro "Android NDK Beginner''s Guide" de Sylvain Ratabouil (Puede echar un vistazo en Amazon usando la función "mirar dentro" o comprarlo).
- Este proyecto de código de google para reemplazar SoundPool con OpenSL es un gran ejemplo también. Todos los créditos y gracias a sus autores.
Hay una aplicación de ejemplo que viene con el NDK llamado github.com/googlesamples/android-ndk/tree/master/native-audio . Tiene ejemplos de casi cualquier cosa que quieras implementar: efectos, transmisión, síntesis, etc. Si miras su código, obtendrás una buena ventaja.
Para aquellos de ustedes que quieran simplemente reproducir archivos de sonido individuales o grabar una instantánea corta (en un solo búfer), el proyecto NDK será suficiente. Eché un vistazo a la "Guía para principiantes de Android NDK" y realmente no explica mucho más que el proyecto NDK de muestra.
Pero realmente, para estas aplicaciones, probablemente estés mejor con una de las API de Java. Usar OpenSL ES para ellos es un poco exagerado en mi humilde opinión. Habrá mucho más código para escribir y ninguna ganancia real.
La ventaja de OpenSL es para aquellos interesados en las latencias más bajas (cuando estén disponibles) para la síntesis y el procesamiento de audio, y para esto, es probable que desee transmitir audio, en lugar de reproducir / grabar búferes individuales. El capítulo del libro y el ejemplo de NDK no te enseñarán sobre eso. Los blogposts en el blog de programación de audio son más informativos para estos propósitos.
También puedes consultar el blog de programación de audio de victor lazzarini, que tiene una sección de Android: http://audioprograming.wordpress.com/category/android/
Allí encontrarás ejemplos de trabajo, fueron extremadamente útiles para mí para comenzar con openSL y pueden usarse como base para desarrollar aplicaciones de audio con ndk.
Y también, no pase por alto el documento de especificaciones, no es tan largo, después de todo, la primera parte no tiene más de cincuenta páginas y le da la perspectiva necesaria para comprender cómo funciona todo, el resto es para uso de referencia. Tenga cuidado de que algunas cosas en la implementación de Android OpenSL difieran de las especificaciones: consulte en su directorio-ndk / docs / opensles / index.html para obtener más información al respecto.
Uno de los blogs de programación de audio de Victor Lazzarini en la sección de Android es realmente un buen comienzo. http://audioprograming.wordpress.com/category/android/
Y hay un código de ejemplo descargable directo del repositorio de Bitbucket git para este blog, esa es la parte más bienvenida.
La compilación y ejecución es bastante simple. Para mí, necesito estos pasos para compilar y ejecutar este ejemplo:
Instalar SWIG: swig swig-3.0.2 . Instalarlo por 3 pasos:
$ configure $ make $ sudo make install.
- Edite build.sh para reflejar la ubicación de su NDK. Y ejecute el script build.sh en el directorio de nivel superior.
- Genera build.xml por:
Proyecto de actualización de $ android --name opensl-es-audiotest --target 1 --path ./
- Construir con hormiga: $ ant depuración
Luego, puede instalarlo en su dispositivo y probarlo:
$ adb install bin / opensl-es-audiotest-debug.apk