PulseAudioのプログラム用にデバイスを設定しますか?


10

コンピューターには2つのサウンドデバイスがあります。

一部のプログラム(Skypeなど)を実行すると、(「pavucontrol」->「PulseAudio Volume Control」を使用して)このアプリケーションが再生または録音に特定のデバイスを使用するように設定できます。

ただし、[再生/録音]タブアプリケーションでは、現在何か(再生または録音)を実行している場合にのみ表示されます。

アプリケーションごとにデバイスを設定できますが、アプリケーションがサウンドの録音または再生を開始する前にどうすればよいですか?

回答:


8

このための設定または構成ファイルがどこにあるかはわかりませんが、環境変数を使用して行うことができます。私の回答は、PulseAudio FAQのこのエントリに基づいており、録音ソースの設定について説明しています。私はこれを出力(PulseAudioのシンク)で試しましたが、入力と出力の両方で機能するはずです。

最初のステップは、使用するソースとシンクの内部名を取得することです。これを行うには、pactl listコマンドを使用する必要があります。そのコマンドはデータの山を返しますが、以下はソース名だけをリストします:

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

そのリストには、おそらく通常のソースとPulseAudioのモニターソース(私のシステムでは名前に「モニター」が含まれています)の両方の名前が含まれます。ターゲットにするデバイスの通常のソース名を使用する必要があります。

同じことを行ってシンク名を取得できます。

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

名前を取得したら、ターミナルから次のようなものを実行できます。

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

もちろん、これをメニューから実行したい場合は、おそらくシェルスクリプトを作成し、デフォルトのコマンドの代わりにそれを使用する必要があります。このようなものがうまくいくはずです:

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

内部名を検索するための素敵な小さなコマンドセット、ta !!
Vix

2

次のように、変数をエクスポートして割り当てる必要があります。

#!/ bin / sh 
エクスポートPULSE_SINK = "sink_name" 
エクスポートPULSE_SOURCE = "source_name" 
command_to_run_skype

0

このPulseAudio.pmを実行するperlモジュールを作成しました。

次のような構文を使用できます。

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'
});

もちろん、get_sink_byおよびで任意の基準を使用できますget_source_by。から読むpacmd info。これは@moberleyの回答と同じ考え方で機能しますが、独自の解析を強制するのではなく、perlライブラリを使用します。また、他の気の利いた機能もいくつか提供します。

私のポッドキャストショーでは、実際にこれを使用してSkypeを起動します。

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

btrlistener*Skypeの名前はblogtalkradio用です)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.