Recentemente, recebi uma placa de som externa / DAC (Fiio E17) e atualmente estou tentando configurá-la corretamente na minha instalação do Ubuntu 12.04. Ao conectá-lo via USB, ele é imediatamente reconhecido e aparece como um novo dispositivo nas configurações de áudio. A reprodução também funciona muito bem (exceto alguns problemas menores relacionados ao volume, que estão além do escopo desta pergunta).
No entanto, ao tentar testar a reprodução de 24 bits / 96 kHz, reproduzindo um arquivo de áudio mplayer
, encontrei um pequeno problema:
Opening audio decoder: [pcm] Uncompressed PCM audio decoder
AUDIO: 96000 Hz, 2 ch, s24le, 4608.0 kbit/100.00% (ratio: 576000->576000)
Selected audio codec: [pcm] afm: pcm (Uncompressed PCM)
==========================================================================
AO: [pulse] 96000Hz 2ch s16le (2 bytes per sample)
Como pode ser visto na saída, mesmo que o arquivo reproduzido contenha áudio de 24 bits / 96 kHz, ele é reamostrado para 16 bits antes da reprodução. Tocar o mesmo arquivo com aplay
mostra o motivo:
Playing WAVE 'sr003-02-2496.wav' : Signed 24 bit Little Endian in 3bytes, Rate 96000 Hz, Stereo
aplay: set_params:1081: Sample format non available
Available formats:
- U8
- S16_LE
- S16_BE
- S32_LE
- S32_BE
- FLOAT_LE
- FLOAT_BE
- MU_LAW
- A_LAW
No entanto, /proc/asound/card1/stream0
confirma que o hardware suporta 24 bits:
FiiO FiiO USB DAC-E17 at usb-0000:00:1a.0-1.1, full speed : USB Audio
Playback:
Status: Running
Interface = 3
Altset = 1
Packet Size = 388
Momentary freq = 44100 Hz (0x2c.199a)
Interface 3
Altset 1
Format: S16_LE
Channels: 2
Endpoint: 3 OUT (ADAPTIVE)
Rates: 32000, 44100, 48000, 96000
Interface 3
Altset 2
Format: S24_3LE
Channels: 2
Endpoint: 3 OUT (ADAPTIVE)
Rates: 32000, 44100, 48000, 96000
Nesse ponto, notei que, na guia hardware das configurações de som, posso selecionar dois perfis diferentes para a placa de som: Digital Stereo (IEC958) e Analog Stereo. Alternar entre esses dois não resulta em nenhuma alteração, até onde eu sei.
Porém, a especificação do dispositivo ALSA ajuda (ou seja, aplay -Dhw:1,0 sr003-02-2496.wav
funciona bem e reproduz o arquivo sem reamostragem). Mas como o Pulseaudio mostra apenas um dispositivo Fiio / coletor nas configurações de som, não sei como diria ao Pulseaudio para usar o dispositivo ALSA hw:1,0
. Adicionando load-module module-alsa-source device=hw:1,0
aos /etc/pulse/default.pa
resultados o cancelamento do Pulseaudio module.c: Failed to load module "module-alsa-source" (argument: "device=hw:1,0"): initialization failed.
durante a inicialização.
Então, essa é a introdução, aqui estão minhas perguntas reais :
- Como descobrir qual dispositivo ALSA o Pulseaudio realmente usa quando seleciono o Fiio E17 nas configurações de som?
- Como digo ao Pulseaudio para usar o dispositivo ALSA hw: 1,0 ao selecionar o Fiio E17 nas minhas configurações de som?
Um pouco mais (espero que útil) de informações de depuração:
- A saída de
aplay -L
- A saída de
aplay -l
- A saída de
pacmd list-sinks
- E, finalmente, caso seja relevante, meu .asoundrc
fonte
mplayer
eaplay
?mplayer -ao alsa:device=hw=1.0 sr003-02-2496.wav
eaplay -Dhw:1,0 sr003-02-2496.wav
para usar o dispositivo correto, se é isso que você está perguntando.aplay sr003-02-2496.wav
emplayer sr003-02-2496.wav
. E sim, eu gostaria de usar o PulseAudio, se possível.Respostas:
Respondendo às duas perguntas:
Você pode selecionar o dispositivo padrão no PulseAudio com uma GUI como o controle de volume GNOME, pavucontrol ou na linha de comando usando
pacmd set-default-sink
.Por padrão, o PulseAudio abre dispositivos para 44,1 kHz ou 48 kHz, o que resultar em menor esforço de reamostragem (portanto, o áudio de 96 kHz normalmente levaria o dispositivo a ser aberto a 48 kHz. Além disso, abrimos os dispositivos para S16LE por padrão.
Agora, você tem duas opções. Se você deseja reproduzir apenas alguns arquivos no formato nativo,
paplay --passthrough <file>
faça o trabalho por você. Você pode até especificar qual dispositivo usar.A outra opção é fazer com que o PA use globalmente 96/24. Você pode mudar isso em
/etc/pulse/default.conf
(alternate-sample-rate = 96000
,default-sample-format=s24-32le
). Isso vai levar a uma maior utilização da CPU, no entanto. Essa é uma situação um pouco tola, tendo que aplicar a configuração global a todos os dispositivos. Planejamos adicionar a configuração por dispositivo em algum momento.Observe que, depois disso, você deve usar o back-end PulseAudio do mplayer em vez de conversar com o mplayer com o ALSA e depois com o PulseAudio. Você pode fazer isso com
mplayer -ao pulse ...
e, se desejar configurá-lo permanentemente, adicioneao=pulse
a~/.mplayer/config
.fonte
pacmd set-default-sink
só me permite definir uma das pias listadas porpacmd list-sinks
, certo? Embora eu ache que a segunda parte da sua resposta torne essa pergunta discutível de qualquer maneira;) Então, se eu entendi direito, o Pulseaudio não suporta alternar dinamicamente entre 24 e 16 bits? Depois de mudar o meudefault.conf
, o mplayer ainda parece reamostrar tudo para 16 bits antes de entregá-lo ao pulso ( veja aqui ), é por causa do que CL. descreve em sua resposta?paplay
não parece gostar dos meus arquivos de áudio :) A reprodução do arquivo de 24 bits leva a um segfault com aCode should not be reached at pulsecore/sndfile-util.c:391, function pa_sndfile_readf_function(). Aborting.
reprodução de um arquivo de 32 bits e o Pulseaudio falha .Após a atualização para a 13.10, o Pulseaudio assumiu o padrão HDMI, provavelmente porque tenho um monitor extra conectado ao meu laptop (Lenovo T430S) através da minha porta de mini-display. O site archlinux forneceu uma resposta curta e agradável para redefinir ou definir o padrão:
faça o login e altere a saída padrão para analógico
Corre
$ aplay -l
e achar que o analógico é o cartão 0
Corre
lista $ pacmd
e encontre a linha:
"output: stereo-analógico + input: stereo-analógico" é o nome do meu perfil, então adicione
em /etc/pulse/default.pa e salve
fonte
O formato de amostra usado na interface entre aplicativos e o PulseAudio nem sempre está diretamente relacionado ao formato de amostra usado pelo PulseAudio para acessar o dispositivo de hardware.
S24_3LE
não é um dos formatos de aplicativo suportados pelo PulseAudio (como mostrado naaplay
saída). Para permitir que aplicativos com esses formatos incomuns sejam executados com o PulseAudio, adicione um plug-in que faça a conversão automática de formato, se necessário, para o dispositivo PCM padrão no seu.asoundrc
:fonte
.asoundrc
,mplayer
ainda reduz a amostragem do áudio para 16 bits (ou seja, a saída parece a mesma que a postada na minha pergunta) e/proc/asound/card1/stream0
ainda mostra o altset errado sendo usado. Se realmente havia um problema com os formatos suportados do PA, não deveriamplayer
reduzir a amostragem do áudio, mesmo ao especificar o dispositivo ALSA, pois ele ainda usa o Pulseaudio?aplay
agora? Parece ser um erro nomplayer
.aplay
ainda falha com a mesma saída. Percebi agora que, ao definirdefault-sample-format = s24-32le
no meu.pulse/daemon.conf
, posso forçar o PA a usar o dispositivo de saída correto. No entanto,mplayer
ainda reanalisa o áudio eaplay
ainda falha ao tentar reproduzir o arquivo de áudio de 24 bits, então acho que isso também não ajuda.Apenas uma solução rápida que descobri usando o Lubuntu Trusty Tahr com meu Fiio E17 conectado via USB: Eu também estava pensando sobre a taxa de bits, é por isso que encontrei essas postagens aqui. Mas como eu ouço música em um Netbook bastante antigo, não quero configurá-la para 96/24 por padrão (a CPU não é a mais rápida). No entanto, o que funcionou para mim foi usar o VLC e especificar nas configurações de áudio especializadas para usar o módulo ALSA para saída e, em seguida, use o seguinte dispositivo de saída: "Fiio USB DAC-E17, dispositivo de hardware USB Audio Direct sem nenhuma conversão"
Dessa forma, consegui emitir 96/24 de som para o Fiio via USB quando quisesse (também aparece na pequena tela do Fiio) - e não precisei mudar algo mais fundamental no sistema operacional. Jogadores como audacioso ou navegadores ainda usam a saída pulseaudio padrão. Às vezes, o VLC diz que o dispositivo já está sendo usado - basta fechar qualquer outro software, como o audacioso, que esteja usando, por exemplo, a saída pulseaudio, e deve funcionar.
Atenciosamente, Andi
fonte
Aqui está a resposta correta para esta pergunta:
Do ArchWiki
Determine o dispositivo ALSA hw que você deseja usar. Em seguida, adicione isso ao seu arquivo default.pa. (Altere 0,0 para se adequar ao seu dispositivo.)
fonte
Adicionar
load-module module-alsa-source device=hw:1,0
a/etc/pulse/default.pa
é a abordagem correta. No entanto, os seguintes módulos precisam ser descarregados para evitar conflitos de dispositivo (oinitialization failed
erro que você obteve):Dê uma olhada cuidadosa
/etc/pulse/default.pa
e remova as linhas que contêm esses módulos. Além disso, nesse caso, os dispositivos não podem ser detectados automaticamente, portanto, você deseja carregarmodule-alsa-sink
para especificar um coletor manualmente também.fonte