Saya ingin RasPi saya mengirim audio ke port audio out board saya, dan juga ke kartu Digital out saya (I2S Hifiberry Digi). Ini seharusnya dimungkinkan dengan ALSA. Saya memiliki driver yang dimuat dan dapat mengirim ke kedua perangkat suara secara terpisah, tetapi menggabungkannya tidak berfungsi. Ada beberapa pos di luar sana yang menjelaskan cara melakukan ini, tetapi konfigurasi saya tidak bisa berfungsi.
Kesalahan dari 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
Output dari "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
Output dari "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`
Isi dari /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
sumber
sumber
Jawaban:
Agak gila tapi apakah Anda sudah mempertimbangkan
tee
perintahnya? Baca lebih lanjut tentang StackExchange di tee re-direction dan lihat artical Wiki untuk lebih banyak contoh. Saya berpikir bahwa jika Anda memiliki perintah yang menampilkan nama file atau tautan ke konten media,ls
mungkin, dan gunakantee
untuk memanggil perintah ke pemutar media pilihan Anda. Begini cara saya menulis tentang masalah ...Catatan:
... setelah pengujian dan semacamnya saya kemungkinan akan melemparkan
if [ ${#} < 4]; then echo "error"; fi
dekat bagian atas; mengedit4
untuk berapa banyak argumen yang saya rasakan perlu ada di sana. Berjalan sebagaimana adanya,bash scripted_dule_player 'aplay <common_options>' '<options_output1>' '<options_output2>' '</full/file/path/to/mediafile>'
pastikan untuk memodifikasi untuk sistem Anda opsi dan jalur file yang ingin Anda jalankan; hal-hal di antara<>
.Masalah dengan penggunaannya
tee
adalah bahwa hal itu tidak terlalu mudah dibawa di antara rasa Linux dan itu dapat menyebabkan masalah dengan audio yang tidak diputar secara sinkron antara output. Sebaliknya saya akan menyarankan menggunakanomxplayer -o both
untuk mengeluarkan suara ke dua perangkat yang terpisah, tetapi karena ini hanya diuji pada RPi yang memiliki HDMI & Audio out terpasang, tidak cukup pengaturan yang digunakan oleh OP dan OP meminta sesuatu untukalsa
.Ada juga blog yang bagus tentang masalah konfigurasi kartu multi-kartu alsa multi-suara yang mungkin ingin Anda lihat; mungkin Anda mengalami kesalahan pada kode Anda yang akan membuat kode saya di atas memblokir titik diperdebatkan; Catat saja bahwa panduan di sana diarahkan untuk Linux dengan rasa Slaker, bukan Raspbian.
sumber