Áudio no Linux: PulseAudio e os servidores de som
Publicado em 11/04/2009 – 07:46por Carlos Morimoto
Os sistemas de áudio são um velho problema no Linux. O primeiro conjunto de drivers de áudio para a plataforma foi o conjunto OSS (Open Sound System), que apesar do nome, era na verdade uma suíte comercial, cujos desenvolvedores ofereciam uma versão open-source (com algumas limitações sobre a versão comercial) que era incluída no Kernel.
O OSS era um sistema simples e que funcionava bem, mas com o tempo o desenvolvimento desacelerou e ele começou a se tornar cada vez mais defasado, com mais e mais modelos de placas de som ficando sem suporte ou sendo suportadas de forma limitada.
Surgiu então o Alsa, que trouxe uma interface muito mais complexa, porém mais elaborada. O projeto conseguiu atrair um bom volume de desenvolvedores e acabou se tornando o sistema de áudio default, substituindo o OSS. O Alsa inclui também um sistema de compatibilidade com o sistema antigo, que permite que aplicativos antigos, com suporte apenas ao OSS, continuem funcionando.
No modelo tradicional, os aplicativos que usam o som enviam o fluxo de áudio diretamente ao driver de som (que por sua vez faz parte do Alsa ou do OSS) que, por sua vez, se encarrega de fazer as operações necessárias e o enviá-lo à placa de som. O grande problema é que a maioria dos chipsets de som atuais (que, assim como os softmodems, regrediram em relação a placas offboard como as SB Live, usadas a uma década atrás, passando a executar cada vez mais funções via software) não suportam a reprodução de mais de um fluxo de áudio simultaneamente, de forma que quando a placa é acessada diretamente, você não consegue usar dois aplicativos que usam o som (o Amarok e o Skype, por exemplo) simultaneamente.
Surgiram então os "servidores de som", que atuam como intermediários entre a placa de som e os aplicativos, combinando diversos fluxos de áudio (de forma que vários aplicativos possam usar o som simultaneamente) e executando outras funções. Eles podem ser usados também para adicionar funções extras, como a possibilidade de usar som através da rede (um recurso usado por aplicativos de acesso remoto ou sistemas de terminais leves, como no caso do LTSP).
O grande problema com os servidores de som no Linux é que existem diversas opções e nenhum é usado por todos os aplicativos, dando origem a diversos tipos de problemas, um exemplo de falta de padronização que atrapalha a evolução do sistema.
Um dos exemplos mais conhecidos é o Arts, o servidor de som do KDE 3. Ele é usado ao marcar a opção "Habilitar o sistema de som" dentro do Kcontrol:

Embora tenha sido usado durante toda a fase 3.x do KDE, o Arts possuía diversas deficiências e acabou sendo descontinuado em 2004, o que levou os desenvolvedores do KDE a adotarem outro servidor de som, o Phonon, a partir do KDE 4.
Do lado do Gnome, o servidor mais tradicional é o ESD, usado desde as primeiras versões do desktop. Assim como o Arts, o ESD possui diversas limitações, o que levou ao aparecimento do PulseAudio, que passou a ser o servidor de som usado por padrão no Mandriva (a partir do 2008.1), no Ubuntu (a partir do 8.04) e também no Fedora, a partir da versão 8.
O PulseAudio inclui diversos recursos avançados, incluindo controles de volume independentes para cada aplicativo, o que abre as portas para algumas funções interessantes. Um programa de VoIP como o Skype poderia ser configurado para baixar automaticamente o volume do MP3 tocando no player de áudio quando você recebesse uma chamada, por exemplo.
Ele possui também uma boa arquitetura de streaming de áudio via rede, que se bem usada pelos aplicativos, pode dar origem a recursos interessantes. Um player de áudio rodando no seu notebook poderia ser configurado para usar as caixas de som do seu PC principal quando você estivesse dentro da área de cobertura da rede wireless (ou, seja, quando estivesse em casa), em vez de usar as caixinhas do próprio notebook, por exemplo.
Você pode encontrar dicas de como configurar diversos aplicativos para trabalhar em conjunto com o PulseAudio no: http://pulseaudio.org/wiki/PerfectSetup
O grande problema é que o PulseAudio sofre do mesmo problema que todos os outros servidores de áudio no Linux, que é o fato de nem todos os aplicativos estarem preparados para lidar com ele. As primeiras versões possuíam também alguns problemas de performance e de estabilidade, o que fez com que muitos ficassem com uma imagem negativa do novo sistema, depois de ter problemas relacionado a ele no Ubuntu 8.04 ou no Fedora 9, por exemplo.
Apesar dos pesares, o PulseAudio veio para ficar, o que, depois de resolvidos os problemas de transição, pode ser uma boa coisa, já que ele pode marcar, finalmente, o surgimento de um servidor de som padrão para o Linux, que seja adotado por todas (ou pelo menos quase todas) as distribuições e possa ser usado por todos (ou quase todos… :) os aplicativos.
O Phonon (do KDE 4.2), por exemplo, utiliza o PulseAudio como backend quando disponível, assim como o GStreamer, que é utilizado pelos aplicativos do Gnome, um raro caso de consenso entre os desenvolvedores dos dois ambientes.
Apesar disso, nenhuma solução é livre de problemas. Uma solução temporária, para casos em que o PulseAudio trava a placa de som, impedindo que outros aplicativos a utilizem é simplesmente matar o processo, usando o:
# pulseaudio -k
… ou, se você quiser ser mais enfático, usando o "killall pulseaudio".
Em muitos aplicativos, o default é utilizar o Arts ou o ESD sempre que possível, mas caso você esteja tendo problemas com o som em algum aplicativo em particular, experimente dar uma olhada na configuração e ver se não existe uma opção para mudar o servidor de som usado, passando a utilizar o PulseAudio:




19 respostas para “Áudio no Linux: PulseAudio e os servidores de som”
Aqui esse bichin trava direto. Muitas vezes quando ligo a PC a primeira coisa que faço e derrubá-lo para não ter aborrecimentos.
Realmente , uma coisa que me irrita é não poder utilizar mais de um aplicativo de áudio ao mesmo tempo :(
Acho que ficou faltando uma coisa no artigo, o "novo" OSS v4. As novas versões dele são completamente 'FREE' e dão suporte a certas placas que o ALSA não da.
Ele continua sendo uma API/Dirver mais simples que o ALSA, só que muitos desenvolvedores concordam que ele é uma solução mais elegante, alem de ser usado em varios outros sistemas UNIX.
Mas o melhor mesmo é o Software/Virtual Mixer que ja vem incluido no OSSv4, o vmix. Ele dispensa completamente qualquer servidor/mixer adicional, e simplifica muito a interface do som com o usuário. Todos os programas, servidores, backends acessam ele diretamente sem nenhum conflito. As chances de dar problema diminuem bastante, e aqui, estou muito contente com a solução porque a qualidade do áudio é bem alta. (mixers via software tendem a priorizar o desempenho em detrimento da qualidade, mas no ossmix voce pode ajustar a qualidade)
Adriano Moura, a única restrição quando a qualidade a respeito do PulseAudio é quando é feito resample. O PulseAudio usa por padrão o resampler da libspeex, que é equilibrado entre desempenho e qualidade. Opcionalmente, pode ser usado o da libsamplerate (conhecida por SRC), que é guloso por processamento, porém é considerado um dos resmplers de melhor qualidade existente.
Lennart Poettering, desenvolvedor principal do PulseAudio, já criou muita briga com o pessoal do OSS dizendo que o mesmo é irrelevante e deve ser ignorado pelas distribuições. Ele argumenta que o OSS4 possui um problema estrutural grave, que é fazer processamento de sinal (resampling, mixing, ..) no nível do kernel, coisa que é inconcebível e por isso nunca será incorporado à árvore oficial do kernel.
Post do blog do cidadão:
http://0pointer.de/blog/projects/guide-to-sound-apis.html
O ALSA, segundo ele, também tem várias falhas, mas que são consertáveis. Muitas delas inclusive já o foram:
http://pulseaudio.org/wiki/AlsaIssues
Do lado dos ambientes, o Arts está morto, junto como KDE 3. No KDE4 o Phonon suporta o PA e do lado do Gnome o GStreamer idem. O esound também já está na cova e os futuros lançamentos do Gnome usarão a libcanberra (também desenvolvida pelo Lennart) para sons de eventos do sistema e o resto usará o GStreamer ou o PA diretamente.
Ou seja, aos poucos, o PulseAudio está e tornando o servidor de som padrão. Como alternativa, os desenvolvedores podem programar diretamente para o GStreamer/Phonon, dependendo do ambiente (Gnome/KDE).
Um problema a parte são os aplicativos proprietários, que demoraram para serem compatíveis com o PA. O flash player foi um exemplo, que na versão 9 era um terror com o PA, mas que na versão 10 melhorou bastante. Já o Skype para Linux era tão ruim quanto, mas não sei se avançou alguma coisa neste sentido.
Não tem jeito, um mudança deste tamanho não teria como não causar problemas. Porém no final todos sairão ganhando, com um servidor de som com muito mais recursos.
Muito bom o artigo, já tinha tempo que tava com algumas duvidas em relação ao puseaudio.
Já instalei uma vez o OSS4, funcionou bem, mas ainda ta muito limitado, nem tem como colocar um som 5.1(pelo menos aqui).
Voltei a usar o Ubuntu a uns 4 dias, ate agora o pulseaudio ta perfeito, nenhuma travada. Antes era um sofrimento, travava toda hora, parece que arrumaram ele(finalmente!).
Bom, no momento parece que a dupla perfeita é pulseaudio + alsa.
Nunca tive problemas com o puseaudio.
So usei o OSS uma vez quando o ubuntu não reconheceu minha M-AUDIO 9624. C
O OSS 4 tá melhor que o Pulse Audio, gerencia diversos fluxos de streaming por padrão. Mais leve e mais eficiente.
Parabéns por mais um ótimo post!! muito bom mesmo!! Mas fiquei com uma dúvida: no windows sai tudo que é som junto (chega a ser até uma bagunça =P ! Isso ocorre porque ele possui um servidor de som?
FAlow, até mais
Ricardo
Como sempre, um ótimo artigo!
Entrando no assuto do LTSP, quando vamos ver um artigo da versão 5.0, pois só você consegue explicar as oisas definitivamente claras Sr. Mori, um grande abraço!
Pulse Audio aqui funciona que é uma beleza. Tanto no meu desk quanto no meu note
Uso o pulseaudio com o gnome, nunca tive problemas… porém, como uso uma placa de som off-board creative, sinto muita falta dos recursos de mixagens (inclusive com eco) que podem ser obtidos no ambiente windows.
Acho que levará um tempo para que o pulseaudio consiga extrair todos os recursos de qualidade de som que se tem com uma placa off-board.
Abraços!
Se o Arts(para KDE), o ESD(para Gnome)são "servidores de som mais antigos", o Phonon(KDE),GStreamer(Gnome)seriam os servidores de som mais atuais do KDE e Gnome respectivamente? Sinceramente não entendi aonde entra os PulseAudio. Seria um servidor de som mais atual ainda?
Abraços,
Instalei o Mandriva 2009 e o Alsa vivia travando. O VMWare e o VirtualPC não conseguiam acessar o áudio também. Chagava a parar o pc totalmente depois que eu usava o youtube, no firefox, junto com amarok.
Quando será que a multimídia no Linux vai ser pelo menos igual à do windows, onde um programa não iterrompe o outro?
Morimoto,
Não tenho problema com o som do Linux, apenas um inconveniente: Ele é muito baixo! (Uso um laptop)
Para o dia-a-dia, até que é bom, mas para escutar uma música ou assistir um filme é baixo mesmo colocando no máximo.
Alguma dica em relação a isso?
Olá pessoal,
Faltou informação sobre o jack (jack audio connection kit) que é um servidor de som mais power, para usar com áudio realtime. Softwares de gravação multipista, edição de áudio, bateria eletrônica, DJ, mixagem, masterização….
Ele permite o roteamento do sinal de áudio entre vários programas. Usa drivers alsa, oss, firewire, coreaudio (mac)…
Lista de aplicativos que usam o jack em
http://jackaudio.org/applications
Dá pra instalar no apt direto, mas geralmente ele precisa de um kernel com os patchs de realtime, então é mais fácil baixar uma distro liveCD mais direcionada para áudio e vídeo, como o musix
http://www.musix.org.ar/download.html
Se estiver no ubuntu dá prá baixar o kernel patchado dos repositórios do ubuntustudio.
Abraços
João Paulo,
Para o problema do volume tenta usar o alsamixer
#alsamixer
Excelente!
Estava tendo problemas com isso hoje e agora mesmo hehe! Como não sou muito familiarizado com sistemas Linux, esse artigo foi uma mãe na roda hehe
Vou tentar me aprofundar nesse assunto para ver se resolvo o problema do Flash Player no YouTube xD
Obrigado, e continue com os maravilhosos artigos Morimoto!
é engraçado esse pessoal que usa linux, ora é melhor que o Windows, ora é um sistema com problemas e que ainda tem que melhorar. O que eles ainda não notaram que 90% dos usuários continuam no Windows e isso deve ter uma razão muito maior do que só comodismo, afinal o Linux é de graça e a pirataria nos diz que o que é de graça é querido sempre a todo custo (exceto financeiro) tão era de esperar que se jogassem no Linux…. :)
Antes que pensem ao contrário: Uso Linux, mas as vezes tenho que rir. Tá cheio de gente ai falando M$ Ruindows, mas sempre falando do Windows ou precisando dele ou sentindo falta dele…
@jose fransisco
tenho esse mesmo problema no kde3 tive que instalar o kde4/pulse para resolver o problema.
caso ache como resolver me manda uma mensagem privada no forum do gdh