シェルを使用して他のオーディオ出力ハードウェアを切り替えるには?

シェルを使用して他のオーディオ出力ハードウェアを切り替えるには?

私はスピーカー付きの外部モニターと一緒にラップトップを使います。モニターがHDMI経由で接続されると、通常のノートブックオーディオ出力とモニター出力を切り替えることができます(GUI:サウンド設定 - >ハードウェアを使用)。

私はこのプロセスを何度も繰り返し、それを自動化できるのか、とにかくシェルを使ってより速い方法で実行できるのか疑問に思い始めました。

私のディストリビューションはgnome 3を含むUbuntu 12.04です。

編集する:

pacmdを試しましたが、list-sinkは現在使用中のデバイスのみを提供します。

pacmd list-sinks | grep name:
name: <alsa_output.pci-0000_00_1b.0.hdmi-stereo>

GUIから切り替えた後:

pacmd list-sinks | grep name:
name: <alsa_output.pci-0000_00_1b.0.analog-stereo>

変更しようとすると、次の結果が表示されます。

pacmd set-default-sink alsa_output.pci-0000_00_1b.0.hdmi-stereo
Welcome to PulseAudio! Use "help" for usage information.
Sink alsa_output.pci-0000_00_1b.0.hdmi-stereo does not exist.

答え1

この場合、カードは常に同じです。あるスイッチから別のスイッチに変更されるのは「カードプロファイル」です。

したがって、動作する実際の解決策は次のとおりです。

pacmd set-card-profile <cardindex> <profilename>

私の場合は、すべてのカードプロファイルを見つけました。

pacmd list-cards

以下を使用して、モニターとノートブックスピーカーを切り替えることができます。

pacmd set-card-profile 0 output:hdmi-stereo

そして:

pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo

ここで、0 はカードのインデックスです。

pacmd list-cards
Welcome to PulseAudio! Use "help" for usage information.
>>> 1 card(s) available.
    index: 0
    name: <alsa_card.pci-0000_00_1b.0>

最後に、より速く切り替えるために、.bashrcファイルに2つのエイリアスを設定しました。

alias audio-hdmi='pacmd set-card-profile 0 output:hdmi-stereo+input:analog-stereo'
alias audio-laptop='pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo'

これにより、シェルにaudio-hdmiまたはaudio-laptopと入力して、モニターまたはラップトップ(ヘッドフォン)のオーディオを切り替えることができます。

答え2

私はサウンド出力を切り替えることができる小さなインジケータアプレットを作成しました。シェルスクリプトはありませんが、あなたや他の読者に役立ちます。

https://github.com/lkettenb/sound-output-switcher

スクリーンショット

答え3

私は、オーディオだけでなくビデオ出力も切り替える古いスクリプトに基づいて、非常に小さなスクリプトを作成しました。それを使う分散ディスプレイ間を切り替えます。

コードは次のとおりです。

#!/bin/bash

CURRENT_PROFILE=$(pacmd list-cards | grep "active profile" | cut -d ' ' -f 3-)

if [ "$CURRENT_PROFILE" = "<output:hdmi-stereo>" ]; then
        pacmd set-card-profile 0 "output:analog-stereo+input:analog-stereo"
        disper -s
else 
        pacmd set-card-profile 0 "output:hdmi-stereo"
        disper -S        
fi

私はモニターの複製が好きではないので特に便利です。私はどちらかを使用します。特定のシステムに合わせてオーディオプロファイルを調整する必要があります。

答え4

次のスクリプトを試すことができます。https://github.com/giner/helplinux/tree/master/scripts/switch-sound

Ubuntu 10.04 - 13.04とArch Linuxでテストされました。

関連情報