Transmita o áudio do sistema através do mpd

Transmita o áudio do sistema através do mpd

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 mpdtambém.

Existe uma maneira de direcionar a pulse audiosaída mpdem 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-sinksaí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-sinkpulseaudio (ele se tornou o dispositivo de áudio padrão do sistema) .
  • A module-null-sinksaída possui uma .monitorfonte, 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 tribblifyprograma 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. tribblifyessencialmente se torna uma "fonte de streaming".
  • O tribblifyprograma 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

informação relacionada