再生する前に PulseAudio 再生デバイスを設定してください。

再生する前に PulseAudio 再生デバイスを設定してください。

私は2つのサウンドカードを持つコンピュータでPulseAudioを使ってDebian 9を実行しています。下のスクリーンショットは、オーディオが再生されないときの音量調整アプリケーションを示しています。オーディオを再生すると、出力デバイスを選択できるドロップダウンメニューが表示されます。出力装置を選択する方法はありますか?今後オーディオストリーミングが始まりましたか?私にとって、それはもっと自然なようです。

PulseAudio 音量調節

編集:これは私の一般的なユースケースです。デスクトップスピーカー(サウンドカードA)を介さずにリビングルームステレオ(サウンドカードB)でマイコンピュータの曲を再生したいです。出力は事前に選択できないため、曲を起動してデスクトップスピーカーで再生してから、音量調整ウィンドウの再生タブにオプションが表示されたら、リビングルームスピーカーを選択する必要があります。これで目的の出力を選択したので、曲を最初から再生する必要があります。これは悪いユーザーエクスペリエンスです。

答え1

デフォルトでは、PulseAudioは各アプリケーションの出力が最後に使用された方向位置を記憶し、別々に通知されるまでその出力デバイスを引き続き使用しようとします。以前の使用履歴がない場合は、代替デバイスが使用されます。

この機能を無効にし、/etc/pulse/default.pa変更行を編集して、特に設定しない限り、すべてのアプリケーションが常に代替デバイスを使用して起動できるようにすることができます。

load-module module-stream-restore

これに関して:

load-module module-stream-restore restore_device=false

paswitchまたは、各アプリケーションのPulseAudio永続出力レコードを繰り返し、指定されたデバイスを指すようにすべてを変更するツールがあります。https://www.tablix.org/~avian/git/paswitch.git詳しくはこちらをご覧ください)

答え2

Pulseaudio再生は最初にデフォルトの受信機デバイスを使用しようとし、デフォルトが
利用できない場合は代替デバイスが使用されます。

デバイスが2つしかない場合は、そのうちの1つをデフォルトのデバイスに設定してください。プライマリデバイスが利用できない場合、2番目のデバイスは自動的にバックアップされます。

pavucontrolデフォルトの受信機設定を表示しない

次の端末コマンドを使用できます。
pactl get-default-sink- デフォルトの受信機名の表示
pactl list sinks | grep 'Name'- すべてのアクティブ受信機の名前の表示と使用
- デフォルトの受信pactl set-default-sink <Name>機の変更
(テキストエディタを使用して最初のコマンドでデフォルトの受信機ファイルを変更することもできます)

または、pasystrayGUIで情報を表示し、必要に応じてデフォルト値を変更するには

デフォルト値を設定した後、ユーザーはpavucontrol他の受信機を使用するようにオーディオストリームを設定できます。
ユーザーの変更はpavucontrol~/.config/pulse/ フォルダーのデータベース・ファイルに保管されます。

答え3

以下はtelcoMとnik gnomicの答えを使った完璧なソリューションです。 PulseAudioが各アプリケーションで使用された最後のサウンドカードを覚えていないように、まず次のものをコピーして追加/etc/pulse/default.pa~/.config/pulse/ましたrestore_device=false

sed 's/load-module module-stream-restore.*/load-module module-stream-restore restore_device=false/' /etc/pulse/default.pa > ~/.config/pulse/default.pa

次に、zenityコマンドを使用して簡単なダイアログボックスを作成しました。

#!/bin/sh

set -o errexit -o nounset

defaultCard="$(pactl get-default-sink)"

options="$(pactl list sinks \
    | awk -F': *' -v defaultCard="$defaultCard" \
        '/Name:/ { if ($2 == defaultCard) { printf "TRUE " } else { printf "FALSE " }; printf "%s ", $2 } \
        /Description:/ { print "\"" $2 "\"" }' \
    | sort -k 3 \
    | tr '\n' ' ')"

# quoted strings in `options' requres `eval'
newDefaultCard="$(eval zenity --list --radiolist --title=\"Sound Card Selection\" --text=\"Select a sound card to use\" --hide-header --hide-column=2 --width=330 --height=160 --column= --column= --column= $options)"

pactl set-default-sink "$newDefaultCard"

結果は次のとおりです。

サウンドカードセレクター

関連情報