Me gustaría que mi RasPi envíe audio a mi puerto de salida de audio a bordo, y también a mi tarjeta de salida digital (un I2S Hifiberry Digi). Esto debería ser posible con ALSA. Tengo los controladores cargados y puedo enviarlos a ambos dispositivos de sonido individualmente, pero combinarlos simplemente no funciona. Hay varias publicaciones que explican cómo hacer esto, pero no puedo hacer que mi configuración funcione.
El error de aplay:
Playing WAVE 'sin1000_48khz.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
ALSA lib pcm_params.c:2162:(snd1_pcm_hw_refine_slave) Slave PCM not usable
aplay: set_params:1059: Broken configuration for this PCM: no configurations available
Salida de "aplay -l"
**** List of PLAYBACK Hardware Devices ****
card 0: sndrpihifiberry [snd_rpi_hifiberry_digi], device 0: HifiBerry Digi HiFi wm8804-spdif-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 1: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0
Salida de "aplay -L"
null
Discard all samples (playback) or generate zero samples (capture)
sysdefault:CARD=sndrpihifiberry
snd_rpi_hifiberry_digi,
Default Audio Device
sysdefault:CARD=ALSA
bcm2835 ALSA, bcm2835 ALSA
Default Audio Device`
Contenido de /etc/asound.conf
pcm.both {
type route
slave.pcm {
type multi
slaves.a.pcm "hw:0,0"
slaves.b.pcm "hw:1,0"
slaves.a.channels 2
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
}
ttable.0.0 1
ttable.1.1 1
ttable.0.2 1
ttable.1.3 1
}
ctl.both {
type hw
card sndrpihifiberry
device 0
}
pcm.hifiberry {
type hw
card sndrpihifiberry
device 0
}
ctl.hifiberry {
type hw
card sndrpihifiberry
device 0
}
pcm.audioout {
type hw
card ALSA
device 0
}
ctl.audioout {
type hw
card ALSA
device 0
}
pcm.!default {
type plug
slave {
pcm both
}
}
#pcm.!default {
# type hw
# card sndrpihifiberry
# device 0
#}
ctl.!default {
type hw
card sndrpihifiberry
device 0
}
audio
audio-playback
Christi
fuente
fuente
Respuestas:
Es un poco hacky, pero ¿has considerado el
tee
comando? Lea más sobre StackExchange en la redirección de tee y vea el artículo de Wiki para más ejemplos. Estoy pensando que si tiene un comando que genera el nombre del archivo o el enlace al contenido multimedia,ls
tal vez, y lo utilizatee
para llamar comandos a su reproductor multimedia preferido. Así es como escribiría el problema ...Notas:
... después de la prueba y tal cosa, probablemente arrojaría
if [ ${#} < 4]; then echo "error"; fi
cerca de la parte superior; editando la4
cantidad de argumentos que he sentido necesita estar allí. Al ejecutarse tal cual,bash scripted_dule_player 'aplay <common_options>' '<options_output1>' '<options_output2>' '</full/file/path/to/mediafile>'
asegúrese de modificar para su sistema las opciones y rutas de archivos que desea ejecutar; entre las cosas<>
.Los problemas con el uso
tee
son que no es muy portátil entre sabores de Linux y puede causar problemas con el audio que no se reproduce en sincronización entre las salidas. En cambio, sugeriría usarloomxplayer -o both
para emitir sonido a dos dispositivos separados, pero como esto solo se ha probado en un RPi que tiene HDMI y salida de audio enchufados, no es exactamente la configuración utilizada por el OP y el OP solicitó algoalsa
.También hay un buen blog sobre el tema de alsa configuraciones de múltiples usuarios de tarjetas de sonido que quizás desee consultar; tal vez tenga un error en el suyo que hará que mi código anterior bloquee un punto discutible; solo tenga en cuenta que la guía estaba dirigida a Linux con sabor a Slaker, no a Raspbian.
fuente