GNU/Linux >> Linux の 問題 >  >> Linux

Linux –コマンドラインからPulseaudio出力デバイスをロバストに切り替える方法は?

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がインストールされている場所をどのように知るのですか?
Linux
  1. LinuxコマンドラインからOpenofficeマクロを呼び出す方法は?

  2. Linux コマンド出力の最初の行を省略する

  3. Linux のコマンドラインから socket.io websocket にメッセージを送信するにはどうすればよいですか?

  1. Linuxのコマンドラインからインターネットから現在の時刻を知る方法は?

  2. Linux コマンドラインからフォルダーをコピーするにはどうすればよいですか?

  3. Linux でコマンドライン インターフェイスから TeX を実行する方法

  1. Linuxコマンドラインからソフトウェアをインストールする方法

  2. Linuxでコマンドラインからファイルとディレクトリを削除する方法

  3. Linuxでコマンドラインからファイルを分割して結合する方法