PulseAudio'da program için cihaz ayarlandı mı?


10

Bilgisayarda 2 ses cihazı var.

Bir program çalıştırdığımda (diyelim ki Skype) ("pavucontrol" -> "PulseAudio Ses Kontrolü" kullanarak) bu uygulamanın oynatma veya kayıt için belirli bir cihazı kullanmasını sağlayabiliyorum.

Ancak - Oynatma / Kayıt sekmelerinde uygulama yalnızca o anda bir şey yapıyorsa (oynatma veya kayıt) görünür.

Uygulama başına, ancak uygulama ses kaydetmeye veya çalmaya başlamadan önce cihazı nasıl ayarlayabilirim?

Yanıtlar:


9

Bunun için bir ayar veya yapılandırma dosyası olup olmadığını bilmiyorum ama ortam değişkenleri ile yapılabilir. Cevabımı , kayıt kaynağını ayarlama hakkında PulseAudio SSS'deki bu girişe dayandım . Bu çıkış (PulseAudio bir lavabo) ile denedim ama hem giriş hem de çıkış için çalışması gerekir.

İlk adım, kullanmak istediğiniz kaynağın ve lavabonun dahili adını elde etmektir. Bunu yapmak için pactl listkomutu kullanmanız gerekir . Bu komut bir yığın veri döndürür, ancak aşağıdakiler yalnızca kaynak adlarını listeler:

LANG=C pactl list | grep -A2 'Source #' | grep 'Name: ' | cut -d" " -f2

Bu liste muhtemelen hem normal kaynakların hem de PulseAudio'nun monitör kaynaklarının (sistemimde adında "monitör" bulunan) adlarını içerecektir. Hedeflemek istediğiniz cihazın normal kaynak adını kullanmak isteyeceksiniz.

Lavabo adlarını almak için aynı şeyi yapabilirsiniz:

LANG=C pactl list | grep -A2 'Sink #' | grep 'Name: ' | cut -d" " -f2

İsimleri aldıktan sonra terminalinizden aşağıdakine benzer bir şey çalıştırabilirsiniz:

PULSE_SINK=<sink_name> PULSE_SOURCE=<source_name> <command_to_run_skype>

Tabii ki, bunu bir menüden çalıştırmak istiyorsanız, muhtemelen bir kabuk komut dosyası oluşturmanız ve bunu varsayılan komut yerine kullanmanız gerekir. Böyle bir şey işe yaramalı:

#!/bin/sh
set PULSE_SINK <sink_name>
set PULSE_SOURCE <source_name>
<command_to_run_skype>

İç adları, ta bulmak için komutlar Lovely küçük set!
Vix

2

İHRACAT ve aşağıdaki gibi değişkenleri atamanız gerekir:

#! / Bin / sh 
dışa aktar PULSE_SINK = "havuz_adı" 
dışa aktar PULSE_SOURCE = "kaynak_adı" 
command_to_run_skype

0

Bu PulseAudio.pm yapan bir perl modülü yazdım .

Bunun gibi bir sözdizimi kullanmanıza izin verir,

use PulseAudio;
use constant TRACKIN  => 'pci-0000:00:1d.7-usb-0:2.3:1.0'

my $pa = PulseAudio->new;

my $sink   = $pa->get_sink_by([qw/properties device.bus_path/] => TRACKIN );
my $source = $pa->get_source_by(
  [qw/properties device.bus_path/] => TRACKIN
  , [qw/properties device.profile.name/] => 'analog-stereo'
);
$pa->exec({
  sink      => $sink
  , source  => $source
  , prog    => '/usr/bin/audacity'
});

Tabii ki, herhangi bir kriter alabiliriz get_sink_byve get_source_by. Okur pacmd info. Bu, kendi ayrıştırma işleminizi zorlamak yerine bir perl kütüphanesi kullanması dışında, @ moberley'in yanıtıyla aynı fikirde çalışır. Ayrıca bazı diğer şık özellikler de sağlar.

Podcast şovum için bunu aslında Skype'ı başlatmak için de kullanıyorum.

$pa->exec({
  sink      => $sink
  , source  => $source
  , prog    => '/usr/bin/skype'
  , args    => ['--callto','btrlistener021']
});

( btrlistener*Skype adları blogtalkradio içindir).

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.