Pulseaudio'da iki hoparlörü yeniden eşleme ve birleştirme sorunları

Aug 19 2020

Bir çift Bluetooth hoparlörüm ve aynı anda çalmaya çalıştığım bir çift giriş hoparlörüm var. İkisini de bağlayıp oynamakta sorun yaşamıyorum, ancak onları bağlamak birçok sorunu ortaya çıkardı. Ek olarak, bluetooth hoparlörlerim ters çevrildi, bu yüzden onları doğru konumlandırmaya uyacak şekilde yeniden eşleştiriyorum.

Pulseaudio'ları kullanarak hoparlörleri nasıl çevireceğinizi module-remap-sinkve kullanarak hoparlörleri nasıl birleştireceğinizi anlatan birkaç konu gördüm module-combine-sink. Ayrıca bir bluetooth gecikmesini hesaba katmak için sabit hat hoparlörlerine bir gecikme eklemek istedim, bu yüzden module-null-sinkbu gecikmeyi almak için monitör kaynağını sabit hat lavabosuna ekledim ve döngü yaptım . Dört komutum aşağıda listelenmiştir.

NOT: Burada uzun satırları biçimlendirme amacıyla ters eğik çizgilerle böldüm. Her komut gerçek kodda bir satırdır

pacmd load-module module-null-sink sink_name=delayed_speakers \
    sink_properties=device.description=DelayedSpeakers
pacmd load-module module-remap-sink sink_name=remapped_bluetooth \ 
    master=bluez_sink.EC_81_93_5A_66_BB.a2dp_sink channels=2 \
    master_channel_map=front-left,front-right channel_map=rear-right,rear-left remix=no 
pacmd load-module module-loopback latency_msec=80 source=delayed_speakers.monitor \
    sink=alsa_output.usb-Generic_USB_Audio-00.analog-stereo
pacmd load-module module-combine-sink slaves=remapped_bluetooth,delayed_speakers \ 
    sink_name=CombinedSink sink_properties=device.description=CombinedSpeakers \
    channel_map=front-left,front-right,rear-left,rear-right

Bu komut dizisi, her komutu bir bash terminalinden tek tek çalıştırdığımda iyi çalışıyor, ancak bunu önyüklemede çalışacak şekilde ayarlamak istiyorum, bu yüzden bu satırları içeren bir bash betiği yazdım. Bash komut dosyasını çalıştırdığımda, birleşik Hoparlörler havuzu asla yüklenmiyor. Bu araştırmak için, ben çizgi dışarı yorumladı ve her test delayed_speakersve remapped_bluetoothtek tek. Module-remap-sink'yi modül geri dönüşünden önce koyarsam, hardline ses çıkışı hem çıkışlardan hem delayed_speakersde remapped_bluetooth(uygun yeniden eşleme dahil) alır. Bu hatların sırasını değiştirirsem, bluetooth hoparlörü her iki hattın çıkışını alır. Her modül yüklemesi arasına 10 saniye uyku eklemeyi denedim, ancak bu da sorunu çözmüyor. Senaryomu aşağıya ekledim.

#!/bin/bash
echo "Loading null sink";
pacmd load-module module-null-sink sink_name=delayed_speakers \
    sink_properties=device.description=DelayedSpeakers

sleep 10
echo "Loading remap sink"
pacmd load-module module-remap-sink sink_name=remapped_bluetooth \
    master=bluez_sink.EC_81_93_5A_66_BB.a2dp_sink channels=2 \
    master_channel_map=front-left,front-right channel_map=rear-right,rear-left \
    remix=no

sleep 10
echo "Loading delayed speakers loopback"
pacmd load-module module-loopback latency_msec=80 source=delayed_speakers.monitor \
    sink=alsa_output.usb-Generic_USB_Audio-00.analog-stereo

sleep 10
echo "Loading combined sink"
pacmd load-module module-combine-sink slaves=remapped_bluetooth,delayed_speakers \
    sink_name=CombinedSink sink_properties=device.description=CombinedSpeakers \
    channel_map=front-left,front-right,rear-left,rear-right

Üzerinden pulseaudio kaydını kontrol systemctl --user status pulseaudioettiğimde 100 veya daha fazla mesaj pulseaudio[7998]: q overrun, queuing locallyve tek bir mesaj görüyorum
No remapping configured, proceeding nonetheless!. Bundan sonra, pulseaudio ile yeniden başlatana kadar herhangi bir pactlveya pacmdkomutunu yürütemiyorum sudo pkill -9 pulseaudio.

DÜZENLEME: default.pa dosyasına modül yüklemesi ekleyebileceğimi biliyorum, ancak bu benim durumumda çalışmıyor çünkü dosya çalışırken bluetooth hoparlörüm bağlı değil, bu nedenle modül yükleme başarısız oluyor

Yanıtlar

1 ScottDriggers Aug 28 2020 at 06:24

Sorunu çözdüm. Başarısızlığın komut dosyasıyla değil, sadece bir tesadüf olduğu ortaya çıktı. module-remap-sinkVarsayılan havuz olan bir havuzda kullanmaya çalıştığımda hata oluştu . Bu arıza sessizce gerçekleşir ve pacmd normal olarak mevcuttur. set-defaultPulseaudio yalnızca bu yeni yeniden eşlenmiş havuza veya onu içeren bir birleşik havuz oluşturmaya çalıştığımda, pulseaudio yanıt vermiyor.

Çözüm: Kullanmadan pacmd set-default-sink 0önce kullanın module-remap-sink(veya sorunlu havuz havuz 0 ise başka bir dizin). Sorunlu havuz tek havuzsa, kullanarak sahte bir havuz oluşturabilir pacmd load-module module-null-sink, ona geçiş yapabilir, yeniden eşlemenizi yapılandırabilir ve son olarak mankeni silebilirsiniz.