Eu uso o mpd para transmitir música para o meu telefone (conectado ao Hi-Fi) via http
.
No entanto, isso só funciona para músicas do meu banco de dados mpd. Muitas vezes quero reproduzir coisas no meu navegador e gostaria que isso fosse transmitido mpd
também.
Existe uma maneira de direcionar a pulse audio
saída mpd
em vez dos alto-falantes?
Responder1
mpd não aceita fontes de entrada pulseaudio, portanto não há uma maneira direta de rotear pulseaudioatravésmpd.
Porém, o que você deseja realizar ainda é possível, com a ajuda do gstreamer e um pouco de inteligência. Eu consegui isso há alguns anos.
escrevieste programaque implementa o componente "Gstreamer Pipeline Script" deste diagrama:
diagrama de fluxo http://tiyukquellmalz.org/sean/stream.svg
Para resumir o diagrama, eis o que acontece:
- mpd lê arquivos de música do disco, decodifica-os e os "reproduz" em uma
module-null-sink
saída de áudio do tipo pulseaudio. - Quaisquer outros programas que você deseja executar em seu computador que emitam som - Adobe Flash, bipes do shell do gnome, navegador da web, etc. também enviam sua saída de áudio para o
module-null-sink
pulseaudio (ele se tornou o dispositivo de áudio padrão do sistema) . - A
module-null-sink
saída possui uma.monitor
fonte, que permite levar o áudio enviado para um coletor nulo e "capturá-lo" de volta como se fosse um dispositivo de entrada (como um microfone). - Pulseaudio realiza mixagem de software dinamicamente de todos os programas de áudio em todo o computador, incluindo mpd, navegadores da web e tudo mais usando pulseaudio.
- O
tribblify
programa que escrevi usa GStreamer para capturar o áudio do monitor null sink do pulseaudio, que contém áudio mixado de mpd e de qualquer outro programa no sistema; realizar codificação de MP3; em seguida, transmita-o para um servidor Shoutcast/icecast.tribblify
essencialmente se torna uma "fonte de streaming". - O
tribblify
programa detecta automaticamente quando o mpd altera as tags do áudio reproduzido e envia essas tags para o fluxo do shoutcast. - O servidor icecast ou Shoutcast, que pode estar no mesmo computador ou em outro, transmite os resultados para todos os clientes conectados.
Responder2
sim - a chave aqui são os recursos de loopback do ALSA. então primeiro você precisa habilitar o dispositivo de loopback no ALSA, que aparecerá no controle de volume do PulseAudio como um dispositivo de entrada (e também um dispositivo de saída).
sudo modprobe snd_aloop
este dispositivo pode então ser adicionado a um servidor mpd:
mpc add alsa://hw:1,1
onde hw:1,1 é o dispositivo de entrada de loopback que pode ser listado com o comandoaplay -l
então você precisa configurar umplug-in de saída httppara o mpd. o exemplo a seguir seria parecido com/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
}
é isso. Selecione o dispositivo looback para sua fonte de áudio na guia Reprodução com controle de volume.
Finalmente, você pode usar o VLC ou qualquer outro renderizador de stream no ponto de destino usando o endereço url httpd:http://192.168.1.38:8000