Streaming de audio

Pulseaudio

Jeito 1 - Variável PULSE_SERVER

  • No servidor (computador onde sairá o som, ip 10.0.0.3)

    1. Instale o paprefs julio@acer ~> sudo pacman -S paprefs

    2. Abra o paprefs e, em Network Server, marque:

      • Enable network acess to local sound devices;
      • Allow other machines on the LAN to discover local sound devices;
      • Don't require authentication.
  • No cliente (computador onde estão os arquivos de audio, ip 10.0.0.2)

    Defina a variável de ambiente $PULSE_SERVER e execute uma música:

      julio@hp ~> export PULSE_SERVER=10.0.0.1
      julio@hp ~> mplayer musica.flac
    

Se tudo deu certo, você deve estar ouvindo a música no computador servidor.

Jeito 2 - MPD

Ative o acesso ao pulseaudio do servidor pela rede usando o paprefs ou com o seguinte comando:

julio@acer ~> pactl load-module module-native-protocol-tcp auth-anonymous=1

Ou, de forma mais segura:

julio@acer ~> pactl load-module module-native-protocol-tcp auth-ip-acl="127.0.0.1;10.0.0.2"

Adicione um novo output ao arquivo ~/.mpd/mpd.conf:

audio_output {
    type    "pulse"
    name    "Acer - Pulseaudio"
    server  "10.0.0.1"
    #sink   "remote_server_sink"
}

No menu 8 do ncmpcpp você pode ativar/desativar este output.

RTP

O PulseAudio só faz multicast com RTP, isso acabou derrubando o wifi de casa. julio@acer ~> pactl load-module module-rtp-recv

Controlar MPD pelo Android

MPDroid

Streaming pelo MPD

quality é para VBR (variable bitrate) e bitrate para CBR (constant bitrate)

MPD streaming http

Em ~/.config/mpd.conf:

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

Basta abrir um player (pode ser um browser) em http://10.0.0.2:8000 e dar play.

MPD FIFO + netcat + VLC

Em ~/.config/mpd.conf:

audio_output {
    type            "fifo"
    name            "FIFO2"
    path            "/tmp/mpd.fifo"
    format          "44100:16:2"
}

No servidor:

$ nc -u 10.0.0.2 8765 < /tmp/mpd.fifo

No cliente:

$ nc -u -l 8765 | ~/Applications/VLC.app/Contents/MacOS/VLC --demux=rawaud --rawaud-channels 2 --rawaud-samplerate 44100 --audio-desync=250 -

Julio Batista Silva
Julio Batista Silva
Engenheiro de Dados

Eu sou um engenheiro de computação apaixonado por ciência, tecnologia, fotografia e idiomas. Atualmente trabalhando como Engenheiro de Dados na Alemanha.

comments powered by Disqus