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 audio
salida mpd
en 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-sink
salida 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-sink
pulseaudio (se ha convertido en el dispositivo de audio predeterminado del sistema). . - La
module-null-sink
salida tiene una.monitor
fuente, 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
tribblify
programa 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.tribblify
esencialmente se convierte en una "fuente de transmisión". - El
tribblify
programa 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