AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1189878
Accepted
RolandiXor
RolandiXor
Asked: 2019-11-19 13:57:03 +0800 CST2019-11-19 13:57:03 +0800 CST 2019-11-19 13:57:03 +0800 CST

Como melhorar/corrigir áudio instável ao transmitir com pulseaudio?

  • 772

O problema:

Ao transmitir pela rede usando o pulseaudio, o áudio fica extremamente instável. Editar /etc/pulse/daemon.confe alterar os valores default-fragmentse não melhora a situação.default-fragment-size-msec

O firewall não está habilitado em nenhum dos sistemas. Que outras opções eu tenho?

Detalhes da configuração:

Eu uso paprefs para habilitar o áudio da rede:

Configuração do remetente:

Remetente

Configuração do receptor:

Receptor

Conteúdo de /etc/pulse/daemon.conf:

; daemonize = no
; fail = yes
; allow-module-loading = yes
; allow-exit = yes
; use-pid-file = yes
; system-instance = no
; local-server-type = user
; enable-shm = yes
; enable-memfd = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB
; lock-memory = no
; cpu-limit = no

; high-priority = yes
; nice-level = -11

; realtime-scheduling = yes
; realtime-priority = 5

; exit-idle-time = 20
; scache-idle-time = 20

; dl-search-path = (depends on architecture)

; load-default-script-file = yes
; default-script-file = /etc/pulse/default.pa

; log-target = auto
; log-level = notice
; log-meta = no
; log-time = no
; log-backtrace = 0

; resample-method = speex-float-1
; avoid-resampling = false
; enable-remixing = yes
; remixing-use-all-sink-channels = yes
; remixing-produce-lfe = no
; remixing-consume-lfe = no
; lfe-crossover-freq = 0

; flat-volumes = no

; rescue-streams = yes

; rlimit-fsize = -1
; rlimit-data = -1
; rlimit-stack = -1
; rlimit-core = -1
; rlimit-as = -1
; rlimit-rss = -1
; rlimit-nproc = -1
; rlimit-nofile = 256
; rlimit-memlock = -1
; rlimit-locks = -1
; rlimit-sigpending = -1
; rlimit-msgqueue = -1
; rlimit-nice = 31
; rlimit-rtprio = 9
; rlimit-rttime = 200000

; default-sample-format = s16le
; default-sample-rate = 44100
; alternate-sample-rate = 48000
; default-sample-channels = 2
; default-channel-map = front-left,front-right

; default-fragments = 4
; default-fragment-size-msec = 25

; enable-deferred-volume = yes
deferred-volume-safety-margin-usec = 1
; deferred-volume-extra-delay-usec = 0

default-fragments = 5
default-fragment-size-msec = 25

O áudio ainda é bastante instável no receptor. Ao usar RTP/Multicast, a configuração era menos confiável e nem consegui fazê-la funcionar o suficiente para testá-la.

sound pulseaudio networking streaming
  • 3 3 respostas
  • 1163 Views

3 respostas

  • Voted
  1. WinEunuuchs2Unix
    2021-05-16T13:01:00+08:002021-05-16T13:01:00+08:00

    Documentação do PulseAudio

    Abaixo está a documentação da configuração de rede do PulseAudio ? .

    Edição: 13 de fevereiro de 2022

    Duas novas seções foram adicionadas na parte inferior; !AirPort e Rygel .


    Configuração de rede

    Existem várias maneiras diferentes de se conectar a outro servidor PulseAudio (conexão direta, túnel, RTP) ou algum outro dispositivo de áudio de rede (RTP, RAOP, Rygel).

    Observe que todos os métodos descritos aqui transmitem áudio PCM bruto pela rede. Isso pode usar praticamente a largura de banda da rede (cerca de 1,4 Mb/s para som com qualidade de CD). Se você tiver um som instável, tente definir uma taxa de amostragem mais baixa para o fluxo de rede. Além disso, mesmo que muitas conexões WiFi possam sustentar essas taxas de bits, muitas vezes o jitter na latência do pacote torna a transmissão de áudio de baixa latência em um link sem fio inviável na prática.


    Conexão direta

    Basta definir a variável de ambiente $PULSE_SERVERpara o nome do host do servidor PulseAudio. Alternativamente, você pode modificar ~/.pulse/client.confou /etc/pulse/client.confe definir default-server. Consulte Cadeias de Servidores para obter uma explicação do formato. Nesta entrada de FAQ ? estão listados todos os locais que você pode especificar o servidor a ser usado. Todos os métodos que se conectam ao daemon pela rede usando o protocolo nativo precisam de module-native-protocol-tcp ? carregado. Isso inclui túneis e configurações do Zeroconf. Com este módulo carregado, o servidor escuta na porta 4713 para conexões de clientes de entrada.

    Autorização

    Para autenticação, você precisa dos mesmos cookies de autenticação em todos os lados. Para essa cópia ~/.pulse-cookiepara todos os clientes que devem ter permissão para se conectar. Alternativamente, os cookies de autorização podem ser armazenados no servidor X11. O servidor deve ter o module-native-protocol-tcp ? carregado. Para habilitar todo o áudio de toda a rede, defina o auth-anonymous=1argumento. Uma opção mais segura é gerenciar o acesso a esses servidores com um IP ACL. Isso pode ficar assim no seu script de inicialização /etc/pulse/default.paou do PulseAudio:~/.pulse/default.pa

    load-module module-esound-protocol-tcp auth-anonymous=1
    load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/16
    

    Esses dois módulos não são carregados na configuração padrão porque podem abrir o PulseAudio para invasores remotos.

    X Encaminhamento

    Se a $PULSE_SERVERvariável não existir ou estiver vazia, o PulseAudio verificará as propriedades do X11 na janela raiz. Essas propriedades são muito parecidas com variáveis ​​de ambiente, mas estarão disponíveis remotamente se você SSH para outra máquina com encaminhamento X11. Você pode ver uma lista de propriedades relacionadas ao PulseAudio fazendo:

    xprop -root | grep PULSE
    

    Os nomes das variáveis ​​usadas são os mesmos usados ​​no ambiente, então o PulseAudio irá procurar por uma propriedade chamada PULSE_SERVER. Observe que apenas as propriedades X11 são encaminhadas pelo túnel SSH, mas o cliente pulseaudio ainda se conecta ao servidor usando seu próprio protocolo nativo.

    Se a conexão de volta ao daemon de pulso em execução no computador que possui a exibição X não for desejada, você pode definir PULSE_SERVER=localhosta partir da conexão SSH (certifique-se de que o module-native-protocol-tcp esteja carregado) ou execute pax11publish -rantes do SSHing no computador remoto para remover as propriedades na janela raiz.


    Usando um túnel

    Com um túnel, você pode criar um novo coletor que encaminha todo o áudio da rede para outro servidor. Para o coletor no servidor remoto, o túnel parece apenas outro fluxo conectando-se pela rede. O mesmo vale para as fontes. Veja a documentação em módulo-túnel ? para detalhes sobre os argumentos do módulo.

    A configuração de um túnel requer um daemon PulseAudio em execução no servidor remoto com o module-native-protocol-tcp carregado, assim como na conexão direta. Depois que o túnel é configurado, os aplicativos cliente se conectam ao coletor de túnel no daemon PulseAudio local. Isso tem a vantagem de que você pode alternar o fluxo perfeitamente entre um coletor de hardware local e o coletor de túnel. Com uma conexão direta, o cliente geralmente precisa ser reiniciado para trocar de servidor. Uma conexão direta tem a vantagem de que o cliente tem mais controle sobre os parâmetros de buffer.

    mDNS

    Para evitar ter que configurar o túnel manualmente entre computadores em uma rede, o Zeroconf pode ser usado.

    Configure module-zeroconf-publishe module-zeroconf-discovermanualmente ou use a caixa de seleção em paprefs.

    Você pode se conectar a outros servidores de som em execução na LAN usando a tecnologia Zeroconf/ Avahi ? . Portanto, certifique-se de compilar o PulseAudio com suporte Avahi e carregar os módulos Zeroconf em todas as máquinas da LAN. Além disso, certifique-se de carregar o module-native-protocol-tcpe que ele permite conexões de outros hosts, consulte Autorização acima.

    #for servers
    load-module module-zeroconf-publish
    #for clients
    load-module module-zeroconf-discover
    

    Esses módulos não são carregados na configuração padrão porque podem abrir o PulseAudio para invasores remotos.


    RTP

    RTP é o protocolo de transferência em tempo real. É um protocolo bem conhecido para transferência de dados de áudio e vídeo sobre IP. Dois protocolos relacionados são SDP e SAP. SDP é o Protocolo de Descrição de Sessão e pode ser usado para descrever sessões RTP. SAP é o Protocolo de Anúncio de Sessão e pode ser usado para anunciar sessões RTP descritas com SDP. (Os telefones VoIP modernos baseados em SIP também usam RTP/SDP para suas sessões) Todos os três protocolos são definidos em RFCs IETF (RFC3550, RFC3551, RFC2327, RFC2327). Eles podem ser usados ​​em moda multicast e unicast. PulseAudio usa exclusivamente RTP/SDP/SAP multicast contendo dados de áudio.

    Para mais informações sobre como usar essas tecnologias com o PulseAudio dê uma olhada na documentação dos módulos ? .

    Como posso usar o PulseAudio para transmitir música do meu PC principal para minha LAN com vários PCs com alto-falantes?

    No lado do remetente, crie um coletor RTP:

    load-module module-null-sink sink_name=rtp
    load-module module-rtp-send source=rtp.monitor
    set-default-sink rtp
    

    Isso fará com que o rtp seja o coletor padrão, ou seja, todos os aplicativos gravarão neste dispositivo RTP virtual por padrão. Do lado do cliente basta carregar o módulo receptor:

    load-module module-rtp-recv
    

    Agora você pode reproduzir sua música favorita no lado do remetente e todos os clientes a emitirão simultaneamente. BTW: Você pode ter mais de uma máquina de envio configurada assim. Os dados de áudio serão mixados no lado do cliente.

    Como posso usar o PulseAudio para compartilhar um único conector LINE-IN/MIC em toda a LAN?

    No lado do remetente, basta carregar o módulo remetente RTP:

    load-module module-rtp-send
    

    Nos lados do receptor, crie uma fonte RTP:

    load-module module-null-sink sink_name=rtp
    load-module module-rtp-recv sink=rtp
    set-default-source rtp_monitor
    

    Agora os dados de áudio estarão disponíveis na fonte padrão rtp_monitor.

    Como posso usar o PulseAudio como uma solução de conferência multicast N:N baseada em RTP para a LAN?

    Após carregar todos os drivers de áudio necessários para gravação e reprodução, basta carregar os módulos receptor e remetente RTP com os parâmetros padrão:

    load-module module-rtp-send
    load-module module-rtp-recv
    

    Enquanto o daemon PulseAudio estiver em execução, os dados do microfone serão transmitidos para a rede e os dados de outros hosts serão reproduzidos localmente. Observe que isso pode causar muito tráfego. Portanto, considere passar rate=8000 format=ulaw channels=1para o módulo emissor para economizar largura de banda e ainda manter a boa qualidade para transmissão de voz.

    Posso ter mais de um grupo RTP multicast?

    Sim! Basta usar um novo endereço de grupo multicast. Use os argumentos destination/ sap_addressdos módulos RTP para selecioná-los. Escolha seus endereços de grupo no intervalo 225.0.0.x para garantir que os dados de áudio nunca saiam da LAN.


    !AirPort RAOP streaming

    Com module-raop-sink.


    Rygel

    Com module-rygel-media-server.

    • 3
  2. sancho.s ReinstateMonicaCellio
    2021-05-16T13:42:25+08:002021-05-16T13:42:25+08:00

    A especificação do seu problema é um pouco leve. Sugiro que você poste:

    1. O conteúdo do seu /etc/pulse/default.pa.
    2. Como você tentou jogar pela rede (se for linha de comando, poste o comando exato).

    Enquanto isso, não tentarei escrever uma descrição genérica sobre como usar o Pulseaudio para RTP/Multicast. Vou esperar até que você adicione essas informações para ajudar a identificar seu problema .

    Possivelmente ações úteis:

    1. Usando as opções de registro, consulte a página man .
    2. Teste com dois computadores próximos ao roteador.
    3. Tente esta sequência , se você ainda não fez isso. Verifique também outras respostas na mesma pergunta.
    4. paprefs pode ajudar a configurar o pulseaudio. Observe que depois de instalá-lo no Ubuntu 20 (você não especificou sua versão), todas as opções em paprefs serão exibidas em cinza. Você tem que configurar um soft link para a versão real com sudo ln -s /usr/lib/pulse-13.99.1 /usr/lib/pulse-13.99(fontes: 1 , 2 ).
    5. Verifique as etapas neste guia para PulseAudio pela rede .

    Opções para streaming de áudio

    Referindo-se à sua pergunta: Que outras opções eu tenho?

    Music Player Daemon (MPD)

    " Music Player Daemon (MPD) é um aplicativo flexível e poderoso do lado do servidor para tocar música. Por meio de plugins e bibliotecas, ele pode reproduzir uma variedade de arquivos de som enquanto é controlado por seu protocolo de rede. "

    O MPD é um aplicativo do lado do servidor maduro, em desenvolvimento ativo. Há uma longa lista de clientes disponíveis .

    Gelo

    " Icecast é um servidor de streaming de mídia (áudio/vídeo) que atualmente suporta fluxos Ogg (Vorbis e Theora), Opus, WebM e MP3. Ele pode ser usado para criar uma estação de rádio na Internet ou uma jukebox privada e muitas outras coisas. É muito versátil, pois novos formatos podem ser adicionados com relativa facilidade e suporta padrões abertos para comunicação e interação. "

    Você pode encontrar instruções detalhadas e testadas em Como configuro um servidor Icecast para transmitir áudio em minha rede? . Não há necessidade de copiar e colar isso aqui.

    Outras opções

    ... listados aqui .


    Relacionado :

    1. https://unix.stackexchange.com/questions/471222/pulseaudio-rtp-how-to-play-sound-on-sender-too
    2. https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Network/RTP/
    3. https://gist.github.com/porjo/5cce51d80b349b984d5e8c1c95066c1a
    • 1
  3. Best Answer
    RolandiXor
    2021-05-20T11:14:11+08:002021-05-20T11:14:11+08:00

    Atualizei os dois sistemas para o Ubuntu 21.04 (apenas rotineiramente) e, ao fazê-lo, enquanto o RTP/Multicast não é melhor (na verdade, é pior), usando a opção zeroconf (veja a captura de tela) está funcionando bem. Ainda não está perfeito, mas muito melhor do que antes.

    É suave o suficiente para ouvir música de um sistema no outro, com clareza, sem interrupções ou distorções constantes.

    insira a descrição da imagem aqui

    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve