接続を切断せずにヘッドフォンとスピーカーを切り替える方法

接続を切断せずにヘッドフォンとスピーカーを切り替える方法

ヘッドフォンをフロントジャックに接続すると、スピーカー(ライン出力)がミュートされます。ヘッドホンを外さずにスピーカーに切り替えたいです。gnome-control-center2つの可能なオプションがあります。pavucontrol:イヤホンそしてラインアウト。しかし、ラインアウトに切り替えると何も聞こえません。正しい動作をどのように設定しますか?

Realtek ALC1150をインストールし、AlsaとPulseAudioをインストールしました。

答え1

1. ソフトウェア切替サポート

サウンドカードがフロントオーディオパネルのソフトウェア切り替えをサポートしていることを確認してください。一部の古いマザーボードはソフトウェア移行をまったくサポートしていません。一部のサウンドカードでは、両方のバリエーションのコネクタがマザーボードにあります。ソフトウェアそしてハードウェア交換。この場合は、マザーボードのマニュアルに従ってソフトウェア切り替え機能を備えたコネクタを使用する必要があります。

2.Alsamixerは自動的に音をミュートします。

自動ミュートはAlsaの機能です。ヘッドホンを接続すると、他のオーディオ出力が自動的にミュートされます。以下で見つけて無効にすることができます。alsamixer。 AlsaMixerを開き、サウンドカードを選択し、F6AutoMuteを使用して移動して見つけます。有効になっている場合は、下矢印キーを使用して無効にします。<>

3.PulseAudioの設定

PulseAudioには文書がほとんどないため、これが最も問題になる部分です。前の手順で自動ミュートを無効にすると、どちらの場合もスピーカーが再生されました。ヘッドフォンに変えてもラインアウトに変えても構いません。

だから私がしなければならないのは、AlsaMixerをもう一度見て、設定やpavucontrolのオーディオトグルにボリュームバーがどのように反応するかを確認することです。

ライン出力: AlsaMixerライン出力

イヤホン: AlsaMixerヘッドフォン

ご覧のとおり、ヘッドフォンに切り替えると、ほぼすべての音量バーがミュートされます。しかし、しばらくして、私のスピーカーの音量がどのような理由であるのかがわかりました。フロントパブ。最後にやりたいことは、PulseAudioをミュートするように設定することです。フロントヘッドフォンに切り替えた後の音量バーです。

編集する必要があるPulseAudio設定ファイルはに保存されています/usr/share/pulseaudio/alsa-mixer/paths/。私の場合は、ファイルを編集したばかりで、analog-output-headphones.conf構成によって異なる場合があります。次の行を含めるには、rootでファイルを編集する必要があります。

[Element Front]
switch = off
volume = off

完了したら、ファイルを保存してを使用してPulseAudioを再起動しますpulseaudio -k

これで、出力遷移が期待どおりに機能します。

答え2

次のオンラインショートカットを使用して切り替えることができます。

[[ $(pacmd list-cards | grep "active profile" | cut -d " " -f 3-) = "<output:hdmi-stereo-extra1+input:analog-stereo>" ]] && pacmd set-card-profile 0 "output:analog-stereo+input:analog-stereo" || pacmd set-card-profile 0 "output:hdmi-stereo-extra1+input:analog-stereo"

この場合、代替はとhdmi-stereo-extra1+input:analog-stereoですoutput:analog-stereo+input:analog-stereo。利用可能なプロファイルを一覧表示します。

pacmd list-cards | grep "output:" | grep -v "available: no"

答え3

次のようにbashスクリプトに設定できるPablo Aの便利な引用です(少なくともGNOMEではアプリケーションのショートカットとして):-

#!/bin/bash

AudJk=$(pacmd list-cards | grep "active profile" | grep "output:" | cut -d " " -f 3-)
HDMI="output:hdmi-stereo+input:analog-stereo"
HdFn="output:analog-stereo+input:analog-stereo"

[[ $AudJk = "<$HDMI>" ]] && pacmd set-card-profile 0 $HdFn || pacmd set-card-profile 0 $HDMI

スクリプトは初めてですが...

...理解しやすくするために、カードプロファイル文字列を変数に変換したいですか?

...おそらく、最初の論理テストを実行するよりエレガントな方法があります。[[ $AudJk = "<$HDMI>" ]]これは最適ではないかもしれません。

grep "output:"...pacmdおそらく。

これが何人かの人々に役立つことを願っています。

関連情報