Brindando una experiencia de sonido envolvente con Spatial Audio
20/04/2023
Publicado por Nevin Mital, ingeniero de relaciones con los desarrolladores, Android Media
En Android 13 (nivel de API 33), presentamos una nueva arquitectura de plataforma estandarizada para audio espacial, una experiencia de sonido superior y más atractiva. Con audio espacial, su contenido suena más realista para los usuarios al hacer que suene como si estuvieran en medio de la acción. Los instrumentos individuales de una banda se pueden separar y "colocar" alrededor del usuario, o el sonido de una ballena puede aumentar a medida que se acerca por detrás y disminuir a medida que se aleja nadando. Siga leyendo para obtener más información sobre la compatibilidad de Android con el audio espacial y cómo implementar la función en su aplicación.
Audio espacial en Android
Hay dos distinciones principales de audio espacial:
- Con estático audio espacial, los sonidos se anclan al usuario y se mueven con él. Un pájaro que canta a su izquierda siempre estará a su izquierda, sin importar cómo gire o mueva la cabeza.
- Con audio espacial con seguimiento de la cabeza, los sonidos se colocan en el entorno que rodea al usuario. Al girar la cabeza hacia la izquierda, el usuario ahora escuchará el canto del pájaro frente a él.
En Android, solo audio multicanal configurado con la derecha Atributos de audio y formato de audio está espacializado de forma predeterminada, aunque los OEM pueden personalizar este comportamiento. En los dispositivos en los que el OEM ha integrado un efecto espacializador, el audio espacial estático funcionará cuando cualquier auricular esté conectado al dispositivo, aunque el audio espacial con seguimiento de cabeza requiere un auricular con sensores de seguimiento de cabeza compatibles. Los OEM como Pixel, OnePlus y Xiaomi ya han puesto estas experiencias a disposición de sus usuarios.
Implementación y prueba de audio espacial
La forma más fácil de integrar esta característica es usar ExoPlayer! Si usa ExoPlayer de la versión Jetpack Media3 1.0.0 o posterior, ExoPlayer configurará el decodificador para evitar que el audio multicanal se mezcle a estéreo y el comportamiento de selección de pista predeterminado tendrá en cuenta si la espacialización es posible o no. Esto significa que su contenido solo necesita incluir una pista de audio multicanal que ExoPlayer pueda seleccionar. ExoPlayer monitoreará el estado del dispositivo y seleccionará una pista multicanal cuando la espacialización sea posible, o cambiará a una pista estéreo si no es así.
Android 12L (API nivel 32) agregó el nuevo espacializador class para permitirle consultar las capacidades de espacialización del dispositivo. Hay cuatro condiciones que deben cumplirse para que el dispositivo emita audio espacializado:
|
ExoPlayer realiza estos controles al decidir qué pista de audio seleccionar. Para verificar aún más si el seguimiento de la cabeza está disponible, puede llamar al isHeadTrackerDisponible() método. El espacializador La clase también incluye los siguientes oyentes para poder reaccionar a los cambios en el estado del dispositivo:
Con estas señales, puede ajustar manualmente su reproducción para audio espacial. Tenga en cuenta que si no está utilizando ExoPlayer, debe asegurarse de configurar el decodificador para emitir audio multicanal cuando sea posible configurando el número máximo de canales en un número grande con MediaFormat.setInteger(MediaFormat.KEY_MAX_OUTPUT_CHANNEL_COUNT, ##)
. Vea cómo ExoPlayer hace esto en GitHub. Hay dos formas de evitar la espacialización según su caso de uso. Si su audio ya está espacializado, llame setIsContentSpatialized(true) al configurar el Atributos de audio para su flujo de audio para evitar que el audio se procese dos veces. En todos los demás casos, puede llamar en su lugar setSpatializationBehavior(AudioAttributes.SPATIALIZATION_BEHAVIOR_NEVER) para deshabilitar la espacialización por completo.
Como se mencionó anteriormente, el uso de audio espacial requiere un dispositivo compatible (es decir, obtenerNivelAudioInmersivo() hace no devolver SPATIALIZER_IMMERSIVE_LEVEL_NONE) y un auricular conectado. Para probar el audio espacial, comience por asegurarse de que la función esté habilitada en la configuración:
- Para auriculares con cable, vaya a Configuración del sistema > Sonido y vibración > Audio espacial.
- Para auriculares inalámbricos, vaya a Configuración del sistema > Dispositivos conectados > Ícono de engranaje para su dispositivo inalámbrico > Audio espacial.
Tenga en cuenta que para el audio espacial con seguimiento de la cabeza, los auriculares deben tener sensores de seguimiento de la cabeza que sean compatibles con el dispositivo, como Pixel Buds Pro con un teléfono Pixel, y el seguimiento de la cabeza también debe estar habilitado en la configuración.
Próximos pasos
Oír es creer, ¡así que recomendamos probar el audio espacial por ti mismo! Puede ver una implementación de ejemplo en nuestra aplicación de muestra, Reproductor de música universal para Android. Y para obtener más detalles sobre todo lo discutido aquí, consulte nuestro guía para desarrolladores de audio espacial.
Te puede interesar