Transmitir audio del sistema a través de mpd

Transmitir audio del sistema a través de mpd

Utilizo mpd para transmitir música a mi teléfono (conectado a Hi-Fi) a través de http.

Sin embargo, esto sólo funciona para canciones en mi base de datos mpd. A menudo quiero reproducir cosas en mi navegador y me gustaría que también se transmitan mpd.

¿Hay alguna manera de enrutar la pulse audiosalida mpden lugar de los parlantes?

Respuesta1

mpd no acepta fuentes de entrada de pulseaudio, por lo que no existe una forma directa de enrutar pulseaudioa través dempd.

Sin embargo, lo que quieres lograr aún es posible con la ayuda de gstreamer y algo de inteligencia. Lo logré hace unos años.

escribíeste programaque implementa el componente "Gstreamer Pipeline Script" de este diagrama:

diagrama de flujo http://tiyukquellmalz.org/sean/stream.svg

Para resumir el diagrama, esto es lo que sucede:

  • mpd lee archivos de música del disco, los decodifica y los "reproduce" en una module-null-sinksalida de audio tipo pulseaudio.
  • Cualquier otro programa que desee ejecutar en su computadora que emita sonido: Adobe Flash, pitidos del gnome shell, el navegador web, etc. también envía su salida de audio a module-null-sinkpulseaudio (se ha convertido en el dispositivo de audio predeterminado del sistema). .
  • La module-null-sinksalida tiene una .monitorfuente, que le permite tomar el audio que se envía a un sumidero nulo y "capturarlo" nuevamente como si fuera un dispositivo de entrada (como un micrófono).
  • Pulseaudio realiza una mezcla de software sobre la marcha de todos los programas de audio en toda la computadora, incluidos mpd, navegadores web y todo lo demás que utilice pulseaudio.
  • El tribblifyprograma que escribí usa GStreamer para capturar el audio del monitor de disipador nulo de pulseaudio, que contiene audio mezclado tanto de mpd como de cualquier otro programa en el sistema; realizar codificación MP3; luego transmítalo a un servidor Shoutcast / Icecast. tribblifyesencialmente se convierte en una "fuente de transmisión".
  • El tribblifyprograma detecta automáticamente cuando mpd cambia las etiquetas del audio en reproducción y envía esas etiquetas a la secuencia de Shoutcast.
  • El servidor Icecast o Shoutcast, que puede estar en la misma computadora o en otra diferente, transmite los resultados a todos los clientes conectados.

Respuesta2

Sí, la clave aquí son las capacidades de loopback de ALSA. Entonces, primero debe habilitar el dispositivo de bucle invertido en ALSA, que aparecerá en el control de volumen de PulseAudio como un dispositivo de entrada (y también como dispositivo de salida).

sudo modprobe snd_aloop

Este dispositivo luego se puede agregar a un servidor mpd:

mpc add alsa://hw:1,1

donde hw:1,1 es el dispositivo de entrada de bucle invertido que se puede enumerar con el comandoaplay -l

entonces necesitas configurar uncomplemento de salida httppara el mpd. el siguiente ejemplo se vería así en/etc/mpd.conf

 audio_output {
    type            "httpd"
    name            "My HTTP Stream"
    encoder         "vorbis"          # optional, vorbis or lame
    port            "8000"
    bind_to_address "192.168.1.38"               # optional, IPv4 or IPv6
    quality         "5.0"                   # do not define if bitrate is d$
#   bitrate         "128"                   # do not define if quality is d$
    format          "44100:16:1"
    max_clients     "0"                     # optional 0=no limit
 }  

eso es. Seleccione el dispositivo de reproducción para su fuente de audio en la pestaña Reproducción de control de volumen.
Finalmente, puedes usar VLC o cualquier otro renderizador de flujo en el punto de destino usando la dirección URL httpd:http://192.168.1.38:8000

información relacionada