Streaming de audio

mar. 3, 2013·
Julio Batista Silva
Julio Batista Silva
· 2 minutos de leitura
blog 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 Wi-Fi 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
Authors
Senior Cloud Developer

Sou um engenheiro de computação brasileiro baseado na Alemanha, apaixonado por tecnologia, ciência, fotografia e línguas.

Programo há cerca de duas décadas, explorando desde aplicativos móveis e desenvolvimento web até aprendizado de máquina. Atualmente, foco em SRE de nuvem e engenharia de dados.

Sou voluntário nas comunidades de open source e Python, ajudando a organizar a PyCon DE e a PyData Berlin, mentorando e contribuindo com código e traduções.

No meu blog, compartilho dicas de Linux, guias de configuração e notas pessoais que escrevo para referência futura. Espero que outras pessoas também as considerem úteis. O conteúdo está disponível em vários idiomas.

Visite minha galeria para ver algumas das minhas fotografias.

Longe do teclado, você vai me encontrar em shows, tocando clarinete, pedalando, mergulhando ou explorando novos lugares, culturas e culinárias.

Sempre feliz em me conectar! 🙂

comments powered by Disqus