Ubuntuやおそらく他のディストリビューションでは、オーディオ出力デバイスを切り替えるためのグラフィカルなものがあります。同じことを行うコマンドラインツールを作成しようとしましたが、常に機能するとは限りません。
たとえば、シンク0に切り替えるために行っているのは、次のとおりです。
pacmd set-default-sink 0
これはすべて新しいにする必要があると思います 入力はシンク0に移動します。次に、pacmd list-sink-inputs
に従って、既存の入力ごとに 私がしていること:
pacmd move-sink-input <input_id> 0
しかし、それはしばしば機能しません。多くの場合、シンクを切り替えてから、いくつかのアプリでオーディオを再生しますが、それでも古いシンクに接続されます。ここで何が欠けていますか?どうすればこれを確実に行うことができますか?
承認された回答:
このブログ投稿から:
PulseAudio自体には、pacmdとpactlという2つの基本的なコマンドラインツールが付属しています。 Formerはset-default-sinkコマンドを提供していますが、それはあなたが期待することをしません。少なくとも私のシステムでは、PulseAudioデーモンはこれまでに接続した各アプリケーションの永続的な設定を保持していることがわかりました。これは、デフォルトのシンクは、デーモンがまだ認識していないアプリケーションにのみ使用されることを意味します。
言い換えれば、このブロガーはあなたがしたのとまったく同じ問題にぶつかっていました:
- デフォルトのシンクを切り替えると、以前に使用されたことのないプログラムにのみ影響します
- 既存の入力を移動すると、サウンドカードで実際にアクティブなプログラムにのみ影響します
- 永続的な設定を確認し、新しいカードに再ポイントするためのツールが必要です。
そして、このブロガーはpaswitch
を書いていました 、まさにそれを行うためのコマンドラインツール。ソースコードはGit形式でここにあります。
インストールするには:
- Pulseaudio開発ライブラリパッケージ(
libpulse-dev
があることを確認してください または同様のもの)がインストールされています。gcc
も必要です コンパイラとmake
ユーティリティ。 -
git clone https://www.tablix.org/~avian/git/paswitch.git
を実行します ソースコードをダウンロードします。 -
cd paswitch
git clone
によって作成されたディレクトリに入る コマンドを実行してから、make
を実行します 。 - エラーなしで完了すると、
paswitch
が表示されます。 ディレクトリ内のバイナリ。/usr/local/bin/
にコピーします ディレクトリ。 -
README
を読む 使用方法の例については、ディレクトリ内のファイル。
もう1つのオプションは、restore_device=false
を追加して、PulseAudioデーモンにアプリケーションのシンク設定を保持しないように指示することです。 module-stream-restore
のオプション /etc/pulse/default.pa
の行 :
load-module module-stream-restore restore_device=false
それを行ってPulseAudioを再起動した後、デフォルトのシンクを切り替えると、すべての新しいサウンドアプリケーションがデフォルトになります。
ただし、使用するデスクトップ環境によってマイレージは異なる場合があります。私のDebian 9では、永続性を無効にすると、KDEで他の厄介な動作が発生し、最終的にデフォルトの動作に戻りました。正しく思い出せば、KDEシステム設定->マルチメディア->オーディオとビデオ->デバイス設定リストがログインごとにオーディオデバイスの新しいコピーを取得する原因になりました。
関連:gccはboostがインストールされている場所をどのように知るのですか?