para pantalla interno grabar externo con android audio capture alsa

externo - grabar pantalla y audio interno android sin root



Android> 4.0: ¿Ideas para grabar/capturar audio interno(por ejemplo, STREAM_MUSIC)? (1)

Hace algunos meses, con Android ICS (4.0), desarrollé un módulo de kernel de Android que interceptaba el "pcmC0D0p" -module para buscar todo el audio del sistema.

Mi objetivo es transmitir TODO el audio (o al menos la música reproducida) a un altavoz remoto a través de AirPlay.

El módulo kernel funcionó, pero hubo varios problemas (kernel-versions, root-privileges, etc.) así que dejé de trabajar en esto.

Ahora, tenemos Android 4.1 y 4.2 y ¡tengo una nueva esperanza!

¿Quién tiene una idea de cómo capturar el audio en Android?

Tenía las siguientes ideas:

  1. Conéctese a través del Bluetooth al mismo teléfono, establezca el enrutamiento a BT y tome el audio en el "otro extremo": esto no debería funcionar

  2. Intercepta el audio con un módulo kernel como lo hiciste antes: hardcore, haz que funcione pero no aplicable

  3. Kit de conexión de audio JACK : lamentablemente Android usa "tinyALSA" y no "ALSA". TinyALSA NO admite ningún filtro como JACK (pero esto trajo la idea con el módulo kernel)

  4. Use PulseAudio como reemplazo de AudioFlinger, pero esto tampoco es aplicable

EDITAR (los olvidó):

  1. Recopilé "tinymix" (versión para bebés de ALSA-mixer) de tinyALSA (el ALSA en Android) y traté de encaminar el audio-out a la entrada de micrófono, pero sin éxito ( no comprensible para mí ). Y esto también necesita rooting: no aplicable

  2. Probé OpenSL ES , pero no soy C-crack y terminó en "Puedo grabar micrófono, pero no más" (¿quizás estuve equivocado?)

Acabo de encontrar ROUTE_TYPE_LIVE_AUDIO :

Un dispositivo que admita el enrutamiento de audio en vivo permitirá que la transmisión de audio de los medios se dirija a los destinos admitidos. Esto puede incluir parlantes internos o tomas de audio en el dispositivo mismo, dispositivos A2DP y más.

Una vez iniciado, este enrutamiento es transparente para la aplicación. Todo el audio reproducido en la transmisión multimedia se enrutará al destino seleccionado.

Tal vez esto ayuda de alguna manera?

Me estoy quedando sin ideas, pero quiero "romper esta tuerca", ¿tal vez alguien me puede ayudar?

EDITAR:

Soy realmente nuevo en C & kernel-coding (pero creé con éxito un módulo de intercepción de audio de compilación cruzada), pero de ninguna manera es posible escuchar en el momento en que los datos PCM pasan del espacio de usuario (JAVA) , C-layer?) Al kernel-space (tinyALSA, kernel-module), sin hackear y rootear?


Debe pasar el tráfico de audio a través de su servidor de socket local:

  1. Crear servidor de socket local

  2. Modifique la dirección de flujo de http de audio a la ruta a través de su servidor de socket local, por ejemplo, para la dirección

    http://example.com/stream.mp3 -> http://127.0.0.1:8888/http://example.com/stream.mp3

    donde 8888 es su puerto de socket.

  3. Jugar

    http://127.0.0.1:8888/http://example.com/stream.mp3

    con reproductor multimedia predeterminado

  4. Lea todas las solicitudes entrantes al puerto 8888 en su servidor de socket local, analícelas y pase al servidor de example.com.

  5. Lea la respuesta de example.com y páselo al cliente local (reproductor multimedia). AQUÍ puedes capturar la transmisión de audio