Transmitir o áudio do sistema por meio do mpd

4

Eu uso o mpd para transmitir músicas para o meu telefone (conectado ao Hi-Fi) via http .

No entanto, isso só funciona para músicas no meu banco de dados do mpd. Muitas vezes quero jogar coisas no meu navegador e gostaria que isso fosse transmitido por mpd também.

Existe uma maneira de direcionar a saída pulse audio para mpd em vez dos alto-falantes?

    
por Profpatsch 26.04.2013 / 11:52

2 respostas

5

O mpd não aceita fontes de entrada pulseaudio, portanto não há um caminho direto para rotear o pulseaudio através do mpd.

No entanto, o que você quer realizar ainda é possível, com a ajuda de gstreamer e alguma esperteza. Eu realizei isso há alguns anos atrás.

Eu escrevi este programa que implementa o componente "Gstreamer Pipeline Script" deste diagrama:

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

Para resumir o diagrama, aqui está o que acontece:

  • O mpd lê os arquivos de música fora do disco, os decodifica e "reproduz" os mesmos para uma saída de áudio de module-null-sink do pulseaudio.
  • Quaisquer outros programas que você queira executar no seu computador que produzam som - Adobe Flash, bipes do shell do gnome, do navegador da web, etc. também enviam sua saída de áudio para o module-null-sink de pulseaudio (ele é o padrão dispositivo de áudio do sistema).
  • A saída module-null-sink tem uma .monitor source, que permite levar o áudio que é enviado para um nulo e "capturá-lo" de volta como se fosse um dispositivo de entrada (como um microfone).
  • O Pulseaudio executa a mixagem de software em tempo real de todos os programas de áudio em todo o computador, incluindo mpd, navegadores da Web e tudo o mais usando pulseaudio.
  • O programa tribblify que escrevi usa o GStreamer para capturar o áudio do monitor de dissipador nulo pulseaudio, que contém áudio misto de ambos os mpd, assim como de quaisquer outros programas no sistema; executar codificação MP3; em seguida, transmiti-lo para um servidor shoutcast / icecast. tribblify essencialmente se torna uma "fonte de streaming".
  • O programa tribblify detecta automaticamente quando o mpd altera as tags do áudio de reprodução e envia essas tags para o fluxo de transmissão.
  • O servidor icecast ou shoutcast, que pode estar no mesmo computador ou em um diferente, envia os resultados para todos os clientes conectados.
por 13.01.2014 / 21:38
0

sim - a chave aqui é os recursos de loopback do ALSA. Portanto, primeiro você precisa ativar o dispositivo de loopback no ALSA, que aparecerá no Controle de Volume do PulseAudio como um dispositivo de entrada (e um dispositivo de saída também).

sudo modprobe snd_aloop

este dispositivo pode 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 comando aplay -l

você precisa configurar um link para o mpd. o exemplo a seguir ficaria em /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 de controle de volume. Finalmente, você pode usar o VLC ou qualquer outro renderizador de fluxo no ponto de destino usando o endereço de URL http: http://192.168.1.38:8000

    
por 19.03.2017 / 16:37