
Estou procurando ajuda ou conselho para configurar meu áudio em minha máquina Linux.
Gostaria de duplicar o áudio que sai do alto-falante para a saída HDMI.
Por favor, veja as configurações que tenho:
aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: HDMI [HDA ATI HDMI], device 3: Generic Digital [Generic Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 0: ALC662 rev3 Analog [ALC662 rev3 Analog]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 1: ALC662 rev3 Digital [ALC662 rev3 Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
# aplay -L
null
Discard all samples (playback) or generate zero samples (capture)
hdmi:CARD=HDMI,DEV=0
HDA ATI HDMI, Generic Digital
HDMI Audio Output
sysdefault:CARD=Generic
HD-Audio Generic, ALC662 rev3 Analog
Default Audio Device
front:CARD=Generic,DEV=0
HD-Audio Generic, ALC662 rev3 Analog
Front speakers
surround21:CARD=Generic,DEV=0
HD-Audio Generic, ALC662 rev3 Analog
2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=Generic,DEV=0
HD-Audio Generic, ALC662 rev3 Analog
4.0 Surround output to Front and Rear speakers
surround41:CARD=Generic,DEV=0
HD-Audio Generic, ALC662 rev3 Analog
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Generic,DEV=0
HD-Audio Generic, ALC662 rev3 Analog
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Generic,DEV=0
HD-Audio Generic, ALC662 rev3 Analog
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Generic,DEV=0
HD-Audio Generic, ALC662 rev3 Analog
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Generic,DEV=0
HD-Audio Generic, ALC662 rev3 Digital
IEC958 (S/PDIF) Digital Audio Output
e a
asound.conf
pcm.!default{
type plug
slave.pcm "speakerphat"
}
ctl.!default {
type hw card 1
}
pcm.speakerphat {
type softvol
slave.pcm "plughw:1"
control.name "Master"
control.card 1
}
O som foi ativado para os alto-falantes:
amixer -q sset 'Master' unmute
amixer -q sset 'IEC958' unmute
Responder1
Esta resposta é uma possível resposta funcional no contexto de um sistema de som somente para alsa.
Todos os trechos de código a seguir devem ser catenados e substituir suas definições asound.conf existentes.
Tudo isto poderia ser muito mais curto através de definições em cascata. No entanto, oMagiaseria mais difícil de entender e a depuração ainda mais… ;-)
Vamos começar a definir o conversor de taxa a ser usado em caso de necessidade de reamostragem (reamostragens dmix quando necessário)
defaults.pcm.rate_converter "speexrate_best"
Em seguida, defina principalmente aliases para dispositivos.não bloqueadopermitindo que vários aplicativos abram o dispositivo associado simultaneamente.
pcm.ALC662{
type hw
card Generic
device 1
subdevice 0
nonblock true}
ctl.ALC662{
type hw
card Generic}
pcm.ATI{
type hw
card HDMI
device 0
subdevice 0
nonblock true}
ctl.ATI{
type hw
card HDMI}
Vamos agora prosseguir comdmixdefinição de plugin (permitindo mixagem de múltiplas fontes de som e reamostragem quando necessário). Um para cada dispositivo de saída de som.
Note ochave_ipc(identificador de memória compartilhada). Escolha qualquer número exclusivo. (verifique o primeiro disparo sudo ipcs -ma
)
Observe também que ainda documentado conforme necessário, acabei de perceber agora no meu sistema que especificar o ipc_key é simplesmente inútil. Provavelmente alguma atualização que eliminou o uso de ipcs do tipo sysV nas minhas costas…?
Sinta-se também à vontade para se adaptarperíodo_tamanho&tamanho do bufferde acordo com seus requisitos de latência e capacidades do sistema…
pcm.analog {
type dmix
ipc_key 219345
slave{
pcm ALC662
format S32_LE
period_size 1024
buffer_size 4096 }}
pcm.hdmi {
type dmix
ipc_key 219346
slave{
pcm ATI
format S32_LE
period_size 1024
buffer_size 4096 }}
Agora vem oMagia: Combinando vários fluxos (estéreo vg 2 canais) em um (estéreo vg 2 canais) graças aomultiplugar :
pcm.analogHDMI {
type multi
slaves.a.pcm "analog"
slaves.a.channels 2
slaves.b.pcm "hdmi"
slaves.b.channels 2
bindings.0.slave a
bindings.0.channel 0
bindings.1.slave a
bindings.1.channel 1
bindings.2.slave b
bindings.2.channel 0
bindings.3.slave b
bindings.3.channel 1}
É isso ? Hmmm, bem… ainda não:
Observe que o pcm resultante não está no formato intercalado, mas no formato “complexo”. Conseqüentemente, não é acessível por aplicativos que podem lidar apenas com o formato intercalado (ou não intercalado). Nesse caso, envolva este PCM com rota ou plug-in.
WILCO, vamosrotacanais (volume origem.destino):
pcm.2in1 {
type route
slave.pcm "analogHDMI"
ttable.0.0 1
ttable.1.1 1
ttable.0.2 1
ttable.1.3 1}
Claro, se você quiser que esta seja a saída padrão do alsa, você precisará adicionar:
pcm.!default {
type plug
slave.pcm "2in1"}
Para maisreferência.