PipeWire出力切り替えスクリプトを作成し、アクティブなオーディオを移動させる

Debianでオーディオを切り替えるには、pactlPipeWireのPulseAudio互換サーバーを使用します。以下のスクリプトは、2つの名前付き出力を切り替え、新しいデフォルトを設定し、既に開いている再生ストリームを移動します。サンプルシンク名は、お使いのマシンに表示される正確な名前に置き換えてください。

1. PipeWire Pulseサーバーを確認し、出力を見つけます。

PipeWireのpipewire-pulseコンポーネントはPulseAudio互換サーバーを提供するため、標準ツールでpactlシンク(オーディオ出力)を制御できます。クライアントが接続するサーバーを確認し、利用可能なシンクを一覧表示します。

pactl info | grep -E 'Server Name|Server Version'
pactl list short sinks

この手順では、サーバー名に PipeWire を指定する必要があります。シンクリストには、などのシンボル名が含まれていますalsa_output.pci-0000_00_1f.3.analog-stereo。切り替えたい出力ごとに、2 つの名前を正確にコピーしてください。これらの名前は、接続されているハードウェアとオーディオプロファイルに固有のものです。例から名前をコピーしたり、セッション中に変更される可能性のある数値のシンクインデックスを使用したりしないでください。

が見つからない場合はpactl、Debian が に提供しますpulseaudio-utils。必要な場合にのみ、そのクライアント パッケージをインストールしてください。pactl info接続できない場合、または別のサウンド サーバーが報告される場合は、まず PipeWire の PulseAudio 代替がユーザー セッションで実行されていることを確認してください。オーディオ サーバーをむやみにインストールしたり切り替えたりしないでください。

Debianターミナルで、PipeWireを識別するpactl infoと、スピーカーとヘッドセット名を含む短いシンクを表示するpactl list shortが表示されている。
トグルスクリプトを記入する前に、ライブ出力リストから正確なシンボルシンク名をコピーしてください。

2. トグルスクリプトを作成する

ユーザーごとのスクリプトディレクトリを作成し、新しいファイルを開きます。

mkdir -p ~/.local/bin
nano ~/.local/bin/toggle-audio-output

このスクリプトを貼り付け、 と の両方の値をSINK_A、SINK_Bコピーした名前に置き換えてください。

#!/usr/bin/env bash
set -euo pipefail

SINK_A='alsa_output.pci-0000_00_1f.3.analog-stereo'
SINK_B='alsa_output.usb-Generic_Headset-00.analog-stereo'

command -v pactl >/dev/null || { echo "pactl is missing" >&2; exit 1; }
server_name=$(pactl info | sed -n 's/^Server Name: //p')
case "$server_name" in
  *PipeWire*) ;;
  *) echo "pactl is not connected to PipeWire's Pulse server" >&2; exit 1 ;;
esac

sinks=$(pactl list short sinks | awk '{print $2}')
for sink in "$SINK_A" "$SINK_B"; do
  if ! grep -Fqx -- "$sink" <<< "$sinks"; then
    printf 'Sink not found: %s\n' "$sink" >&2
    exit 1
  fi
done

current=$(pactl get-default-sink)
if [[ "$current" == "$SINK_A" ]]; then
  target=$SINK_B
else
  target=$SINK_A
fi

pactl set-default-sink "$target"
while IFS= read -r input_id; do
  [[ -n "$input_id" ]] || continue
  pactl move-sink-input "$input_id" "$target"
done < <(pactl list short sink-inputs | awk '{print $1}')
printf 'Default output: %s\n' "$target"

このスクリプトは、変更を加える前に両方の出力が存在することを確認します。現在のデフォルトが の場合、設定されているもう一方の出力を選択します。SINK_A現在のデフォルトが別のシンクの場合は、 から始めますSINK_A。set-default-sinkコマンドは新しいストリームに影響しますが、ループは を使用してmove-sink-input既存の再生ストリームもルーティングします。 将来のアプリのみに新しいデフォルトを使用させたい場合は、whileループを削除してください。既に再生中のストリームはそのまま残ります。 このスクリプトは、PipeWire セッションを所有する同じログイン済みのデスクトップ ユーザーとして実行してください。 は使用しないでください。 は別のユーザー ランタイムを介して接続し、デスクトップ オーディオの制御に失敗する可能性があります。 これらの操作については、Debian のpactl マニュアルsudoに記載されています。

nanoエディタでtoggle-audio-outputスクリプト内の2つのシンク変数を表示
各変数を、この Debian セッションで pactl が報告するシンク名のいずれかに設定します。

3. スイッチを保存、実行、検証する

Nanoで保存しCtrl+O、を押してからEnter、で終了しますCtrl+X。スクリプトを実行可能にして実行します。

chmod +x ~/.local/bin/toggle-audio-output
~/.local/bin/toggle-audio-output

新しいデフォルトシンクが表示されるはずです。サーバーの現在のデフォルトとアクティブな再生ストリームを確認してください。

pactl get-default-sink
pactl list short sink-inputs

スクリプトをもう一度実行すると、元のデバイスに戻ります。実際に音を聴いて確認するには、切り替え中に短い音声サンプルを再生し、選択したデバイスから音声が出力されていることを確認してください。デバイス名や表示動作は、ハードウェア、Bluetooth接続状態、アクティブなオーディオプロファイルによって異なります。

Debianターミナルに、USBヘッドセットをデフォルトの出力として選択するトグルスクリプトが表示されている。
このスクリプトは、どの名前付き出力が新しいデフォルトになったかを報告します。
ターミナルで検証したところ、pactl get-default-sinkコマンドを実行するとヘッドセット名と再生ストリームが返されることがわかった。
デフォルトのシンクを確認し、アクティブなストリームが選択された出力にルーティングされていることを確認してください。

スクリプトが音声を切り替えない場合

  • 「シンクが見つかりません」:再度実行してくださいpactl list short sinks。ヘッドセットの接続が切断されたか、プロファイルが変更されたことにより、シンク名が変更された可能性があります。対応する変数を更新してください。
  • 接続できません: PipeWireユーザーサービスが実行されており、pactl infoPipeWire Pulseサーバーが識別されていることを確認してください。Debianのpipewire-pulseパッケージには代替サーバーが含まれており、 pulseaudio-utilsにはクライアントが含まれていますpactl。
  • 新しいオーディオは移動するが、現在のアプリは移動しない:そのストリームが に表示されている間にスクリプトを再実行しますpactl list short sink-inputs。一部のアプリケーションはストリームを再度開いたり、独自のデバイス選択を保持したりするため、出力に固定されたままの場合は、そのアプリケーションで「デフォルト」を選択してください。

PipeWireのプロトコルPulseに関するドキュメントには、PulseAudioコマンドラインクライアントがpipewire-pulseアクティブなサーバー時にPipeWireを制御できる理由が説明されています。このスクリプトはその互換性レイヤーを利用しており、ハードウェアプロファイルの設定や、切断されたデバイスが利用可能であることを保証していません。

コメントを残す

PipeWire出力切り替えスクリプトを作成し、アクティブなオーディオを移動させる

PipeWire出力切り替えスクリプトを作成し、アクティブなオーディオを移動させる

pactlスクリプトを使用して、デフォルトのシンクを更新し、既に再生中のストリームを再ルーティングすることで、Debianオーディオを名前付きPipeWire出力間で切り替えます。

Ubuntu 24.04でBluetoothヘッドセットのマイク入力を復元する

Ubuntu 24.04でBluetoothヘッドセットのマイク入力を復元する

適切な入力を選択し、ハンズフリーオーディオプロファイルを使用し、UbuntuのPipeWireルートを確認することで、Bluetoothヘッドセットのマイクを動作させることができます。

Ubuntu 24.04でFlatpakアプリがGTKテーマを尊重しない問題を修正する

Ubuntu 24.04でFlatpakアプリがGTKテーマを尊重しない問題を修正する

FlatpakアプリがUbuntu 24.04 GTKテーマを無視する理由を理解し、安全な手順に従ってテーマ拡張機能を確認し、Flatpakアプリを更新し、ポータルの問題を診断してください。

BitLockerを有効にした状態でUbuntu 24.04とWindows 11をデュアルブートする方法

BitLockerを有効にした状態でUbuntu 24.04とWindows 11をデュアルブートする方法

BitLockerを有効にしたWindows 11と並行してUbuntu 24.04を安全にインストールします。別ドライブと共有ドライブのパス、回復キー、パーティション分割、ブートチェックなどを比較します。

Ubuntuでカーネルアップデート後にNvidiaドライバーが読み込まれない問題を解決する方法

Ubuntuでカーネルアップデート後にNvidiaドライバーが読み込まれない問題を解決する方法

Ubuntuカーネルのアップデート後に発生するNVIDIAドライバの不具合を診断します。DKMSとセキュアブートを確認し、該当するモジュールを再構築し、MOKを登録して、修正が反映されていることを確認します。

Ubuntu 24.04でサスペンド後にWi-Fiが切断される問題を解決する方法

Ubuntu 24.04でサスペンド後にWi-Fiが切断される問題を解決する方法

NetworkManager、無線ブロック、アップデート、省電力、ドライバをチェックし、各復帰を検証することで、Ubuntu 24.04 のサスペンド後の Wi-Fi 切断を修正します。

Fix High CPU Usage by Tracker-Miner-3 in Ubuntu GNOME

Fix High CPU Usage by Tracker-Miner-3 in Ubuntu GNOME

Learn why tracker-miner-fs-3 uses high CPU in Ubuntu GNOME and how to check indexing, exclude folders, update Ubuntu, or safely rebuild the search index.

UEFI環境でDebianをインストールした後に発生する「起動可能なデバイスが見つかりません」というエラーを修正する

UEFI環境でDebianをインストールした後に発生する「起動可能なデバイスが見つかりません」というエラーを修正する

Debianを再インストールすることなく、ブートモード、EFIシステムパーティション、GRUBファイル、ファームウェアのブート順序を確認することで、DebianのUEFIブートエラーを修正します。

PC向け最高の写真整理ソフト TOP 5

PC向け最高の写真整理ソフト TOP 5

PCのハードドライブに数千枚の写真が溜まり、フォルダ名がめちゃくちゃで欲しい写真を探すのが大変なら、本当にストレスですよね。全体のアルバムを漁るのも時間の無駄です。専門の写真整理プログラムがこの問題を完璧に解決してくれます。

ゲームバーのショートカット Win+G が機能しない問題のトラブルシューティング

ゲームバーのショートカット Win+G が機能しない問題のトラブルシューティング

Windows で Win+G ショートカットが機能しないのは困りものですか? 簡単な再起動から高度な解決策まで、ゲーム バーの問題に関する実証済みのトラブルシューティング手順を見つけて、ゲーム ツールバーを簡単に復元しましょう。