4 votos

¿Cómo se reproduce el sonido de Termux cuando se usa Linux?

Tengo un problema con la transmisión de audio que no puedo escuchar el audio de Pulseaudio cuando uso VNC con un entorno de escritorio Linux.

Sin embargo, funciona si exporto el audio a XSDL. Pero el problema es que después de salir de la aplicación el sonido no funciona en el fondo.

Sé que Pulseaudio sólo admite servidores Xorg, así que cómo transmitir audio a VNC o a cualquier otra aplicación en Android y ejecutarlo en segundo plano.

Sé que hay una solicitud Reproductor de protocolo simple que escucha el sonido de audio por pulsos del servidor Xorg, pero no funciona para mí y no sé la razón.

0 votos

¿Cuál es tu cliente, Linux o Termux? ¿En qué ordenador está intentando que funcione el audio, en el cliente o en el servidor? ¿En qué dispositivo está instalado PulseAudio?

3voto

Jack Wade Puntos 231

Hay dos posibilidades que conozco, para reproducir el sonido de un entorno Linux en un dispositivo Android:

  • Juega a través de las bibliotecas nativas de ALSA
  • La corriente a través de PulseAudio
    • Reenvío al Servidor X (en el socket UNIX o TCP)
    • Stream sobre IP (TCP), por ejemplo, cuando se utiliza VNC

La segunda y tercera opción funcionan a través de PulseAudio bibliotecas, es decir, diferentes módulos y protocolos ( pulseaudio debe ser instalado en la distro de Linux) mientras que el primero funciona de forma nativa a través de los módulos/controladores del kernel de ALSA.

Pero los controladores de ALSA cargados por Android no pueden ser controlados (al menos yo no podría) a través de las herramientas estándar del espacio de usuario de Linux de manera sencilla porque no son compatibles (consulte los cambios en el núcleo de Linux por Google, y los bloques propietarios de código cerrado que proporcionan soporte de hardware). Sin embargo el kernel de Android lista los dispositivos en /dev/snd que puede ser manipulado para dirigir a ALSA hacia la tarjeta de sonido de Android. El tutorial completo se puede encontrar aquí . Funciona, pero no para todos los formatos de sonido. El proyecto ALSA es aquí .

También hay soluciones más personalizadas que funcionan con ALSA y PulseAudio, ambas como El demonio del reproductor de música .

Servidor X:
XSDL Server es la única aplicación Android de servidor X bien desarrollada que conozco, no más desarrollada por desgracia. Tiene un servidor PulseAudio incorporado con module-cli-protocol-tcp ya cargado, escuchando en el puerto estándar 4712 por defecto. Una vez iniciada la X Session en Linux, podemos dirigir el sonido desde las librerías cliente de Linux PulseAudio al servidor XDSL PulseAudio configurando la siguiente variable de entorno en Linux:

$ export PULSE_SERVER=tcp:127.0.0.1:4712

* 127.0.0.1 indica que Linux y XDSL funcionan en el mismo dispositivo

O para establecer permanentemente, editar el archivo:

# /etc/pulse/client.conf or ~/.config/pulse/client.conf

default-server = tcp:127.0.0.1:4712

Ahora cualquier reproductor de medios que funcione en este entorno y que utilice las librerías cliente de PulseAudio, transmitirá su audio a la aplicación XDSL. Puede reenviar la visualización y el sonido de la sesión X al servidor X que se ejecuta en un PC también, pero eso necesita una configuración más complicada.

VNC:
El protocolo VNC por defecto no soporta el sonido. Sin embargo, el servidor PulseAudio puede transmitir por TCP usando diferentes protocolos como vemos en la sección anterior. Hay aplicaciones disponibles para Android que pueden reproducir simple protocol uno es Simple Protocol Player . Para esto necesitamos cargar el módulo de PulseAudio relacionado.
Para configurar el demonio local de PulseAudio, primero comente las siguientes líneas:

# /etc/pulse/default.pa

#ifexists module-console-kit.so
#load-module module-console-kit
#.endif

De lo contrario, el demonio no se iniciará si /usr/lib/pulse*/modules/module-console-kit.so existe pero consolekit El paquete no está instalado (que está desactualizado, reemplazado por systemd-login y ya no está presente en muchos repositorios de Linux).

Asegúrate de que autospawn se establece en yes para que no tengamos que iniciar el demonio manualmente y se inicie automáticamente por el entorno de escritorio. No es necesario si iniciamos el demonio manualmente.

# /etc/pulse/client.conf

# Autospawn a PulseAudio server/daemon when needed
autospawn = yes

Ahora inicia el demonio de pulsación de audio y anota el valor de la fuente, para mí es auto_null.monitor :

$ pulseaudio --start && pactl list | grep -A2 -i RUNNING
$ DISPLAY=:0 pulseaudio --start

Cargar el módulo de protocolo simple:

$ DISPLAY=:0 pactl load-module module-simple-protocol-tcp rate=48000 format=s16le channels=2 source=auto_null.monitor record=true port=8000 listen=127.0.0.1

O para establecer permanentemente, editar el archivo:

$ echo 'load-module module-simple-protocol-tcp rate=48000 format=s16le channels=2 source=auto_null.monitor record=true port=8000 listen=127.0.0.1' >> /etc/pulse/default.pa

Lo siguiente debería estar habilitado en la configuración de inicio de DE, necesario porque algunos programas como emixer en Enlightenment El entorno de escritorio funciona sólo si se publica el servidor PulseAudio en el servidor local X:

$ DISPLAY=:0 start-pulseaudio-x11

Inicie la aplicación Simple Player y el juego bitrate y port establecido en el comando anterior, es decir. 48000 y 8000 en mi caso. No uses listen=127.0.0.1 si quieres escuchar en la PC también.

He probado ambas soluciones basadas en PulseAudio en ArchLinuxARM y Ubuntu y trabajan sin acceso a root. Sin embargo SELinux puede restringir el acceso a ciertos recursos si se ejecuta en un contexto no root. Además, para obtener acceso a la red y crear sockets, tienes que ser miembro de inet (3003) grupo necesariamente. Todas las aplicaciones con Permiso de Android. INTERNET concedido son miembros de este grupo.

0 votos

¿También trabajas en Userland? ... O sólo en Termux

0 votos

@Maher_2000 He probado LinuxDeploy y algunas otras aplicaciones pero no UserLAnd. Yo mismo he desarrollado un entorno Linux en chroot y namespaces, y uso a través de ssh y Termux.

0 votos

Por desgracia, he intentado varias veces para reproducir el sonido en un reproductor de protocolo simple, pero el sonido no funciona y la aplicación me muestra el mensaje "incapaz de transmitir" y también hizo un error en pulseaudio no sé cuál es la razón y he intentado en Termux y Useland pero de todos modos gracias por ayudarme , Nota : Soy nuevo en el uso de Linux y yo uso el traductor de idiomas para hablar con usted en Inglés por lo que se dará cuenta de que mi Inglés no es bueno o comprensible para usted

1voto

C1a Puntos 89

Buenas noticias, he podido extraer audio al Simple Protocol Player usando el pulseaudio para Android en Termex pero el problema es que este método no funciona en el pulseaudio oficial porque no tiene privilegios de acceso para tener Root solo si tienes Root en tu sistema puedes extraer audio del Simple Protocol player

ADVERTENCIA: Si el audio no funciona, compruebe el enlace de abajo porque hay algunas notas que no he mencionado

en Termux


Haz esta orden:

pactl list sources short

  • Visite el siguiente enlace para conocer la utilidad de este comando antes de completar la lectura

Y..:


Descargue la aplicación

Y..:


echo -e "\n# Simple Protocol Player\n\nload-module module-simple-protocol-tcp source=OpenSL_ES_sink.monitor record=true port=12345 rate=44100" >> $PREFIX/etc/pulse/default.pa

Y reiniciar Termux :


cerrar todas las ventanas en termux

Y..:


pulseaudio -k

pulseaudio --start

o sólo..:


pulseaudio --start

ahora instalar sox :


apt install sox

Y tocar el sonido:


play [file.mp3]

Para más información visite Enlace

0 votos

Marque su respuesta como aceptada si responde exactamente a su pregunta para que los futuros visitantes obtengan una mejor ayuda.

0 votos

@IrfanLatif No vale la pena ponerlo como mejor respuesta porque este método funciona sólo en Termux, que no se puede utilizar incluso desde el entorno Linux instalado en Termux. Esto es debido a los desarrolladores de Termux que han personalizado el paquete Pulseaudio que funciona bien en su aplicación sólo, pero no puede funciona en otras aplicaciones ejemplo Userland o trabajará si tienen acceso al permiso Root

1voto

mpg123 myFile.mp3 ( pkg install mpg123 ) reproducirá un mp3 en Termux. Para hacer una pausa, pulse ctrl+z . Para reanudar escriba % y pulse Intro. Pulse ctrl+c mientras juegas para salir.

Además de la play que has mencionado, también hay play-audio ( pkg install play-audio ).

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X