PulseAudio profillerini giriş (ler) kanal sayısına göre otomatik değiştirme


39

HDMI üzerinden ses alıyorum, buna bağlı olarak tam bir 7.1 kurulum bulunuyor. Bununla birlikte, dinlediğim öğelerin çoğunda daha az kanala sahip - bazıları mono, çoğu stereo, biraz 5.1. Alıcı, doğru sayıda kanalla beslendiğinde, oldukça iyi çalışan çeşitli DSP efektlerine sahiptir (örneğin, bir merkez kanalı bölme, subwoofer'a baz gönderme, Dolby matris çevreyi otomatik algılama, vb.). Sessiz kanallarla dolu bir 7.1 sinyali gönderirseniz, bu çalışma durur.

PulseAudio'daki çıkış kanallarının sayısı karta atanan profil tarafından kart başına / lavaboda yapılandırılır. Sen ile atanan profil değiştirebilir pacmd, pactlve çeşitli GUI programları.

Giriş akışlarındaki kanal kullanımına göre profili otomatik olarak değiştirecek şekilde nasıl ayarlayabilirim? Örneğin, giriş akışları yalnızca ön sol ve ön sağ kullanıyorsa, stereo profiline geçin. Eğer arka sol ve arka sağ kullanıyorlarsa, kuadrofonik vb.


3
Belki yanılıyorum ama bunun mümkün olduğunu sanmıyorum. Pulseaudio aynı anda birden fazla akışı yönetir: farklı kanal numaralarına sahip farklı akışlar birlikte oynatılıyorsa hangi profil doğrudur?
Alessio Gaeta

@meden En fazla kanal sayısına sahip olanı sanırım.
derobert

Evet, elbette, ancak yine de hedefinize ulaşamadığınız durumlar olacaktır. BTW, Pulseaudio'da şartlı olarak profil değiştirmenin bir yolu olduğunu sanmıyorum. Belki de Pulseaudio'ya Kodi kılavuzu [ kodi.wiki/view/PulseAudio] bazı ipuçlarına sahip olmak için faydalı olabilir (örneğin, geçişi kullanmak ve alıcınızın kullandığınız tüm biçimleri desteklemesi koşuluyla tüm işi yapmasına izin vermek).
Alessio Gaeta

Bu ilginç bir soru. Bunu test etmek için kullanılabilir bir ses düzeni var ama yok bir çalışma, etrafımızda olarak, tahayyül her örneği, kurulum için şimdiden akışları analiz etmek için bir komut dosyası profilleri oluşturmak için olsaydı (çıktısını grepping tarafından belki mediainfoya ffmpegya avconv) ve daha sonra pacmd, oynatıcınızı başlatmadan önce uygun profili seçmek için kullanın . Mantıksal bir bakış açısıyla, bir seferde bir ses çalıyorsanız, çalışmasını beklerdim.
Elder Geek,

4
Daha önce gönderilmemişse, bu soruyu launchpad.net/bugs/bugtrackers/pulseaudio-bugs adresinde bir özellik isteği olarak göndermeye değer olabilir . Bu ilginç bir özellik olurdu ve darbeli ses muhtemelen bunu harici bir komut dosyası kullanmaktan daha iyi içerde çözebilirdi.
Alexander

Yanıtlar:


1

Bu sadece bir kavramdır ve eksiksiz bir çözüm değildir:

patcl subscribePulsaudio istemcilerine konfigürasyon atayabilirseniz (örneğin, eğer film oynatıcı bağlanırsa, 7.1 konfigürasyona geçersiniz, aksi halde stereo konfigüratioini kullanırsınız) olayları kendi başınıza halledebilirsiniz. patcl subscribeİstemci bağlantılarını gözlemleyerek işleyebileceğiniz sabit bir etkinlik akışı elde edeceksiniz. Daha sonra profili değiştirmek için pactl / pacmd'yi çağırabilirsiniz.

Pactl abone örnek çıktısı:

$ pactl subscribe 
Event 'change' on sink #0
Event 'remove' on sink-input #93
Event 'change' on sink #0
Event 'change' on source #0
Event 'change' on sink #0
Event 'change' on source #0
Event 'new' on sink-input #98
Event 'change' on sink-input #98

Lütfen, farklı kanallara sahip birden fazla müşterinizin bulunduğu durumlarla ilgili sorun yaşamaya devam ettiğinizi unutmayın.

Ayrıca, yukarıdaki yaklaşım oldukça sınırlıdır. Uygulama başına ayarları, uygulamanın kullanılan gerçek kanal sayısını tespit etmek için yeterli değildir (örn. Vlc, 5.1 veya 7.1 video gösterebilir). Pulseaudio istemcisinin gerçekte kullanılan kanallarını pactl üzerinden almak için bir yol bulamadım, ancak burada bazı seçenekleri kaçırmış olabilirim. Alternatif olarak, video oynatıcı uygulamasının kendisine bağlanabilir ve buradaki eksik bit formunu alabilirsiniz.


İle pactl list | grep format.channelssize max öğrenmek gerekir. Kullanılan kanal sayısı (ve daha fazla bilgi). Bu bilgiyi abone olunan olaylar tarafından tetiklenen bir komut dosyasında kullanmak çözüme yol açabilir.
ridgy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.