サービスとして実行する場合のデフォルトのサウンドデバイスが異なる

サービスとして実行する場合のデフォルトのサウンドデバイスが異なる

私が使うスクイーズライトノート PC でオーディオ ストリームを再生します。ノート PC には Intel サウンド カードが内蔵されていますが、モニターへの HDMI 接続を使用して、モニターのスピーカーでサウンドを再生しています。これはうまく機能し、キーボードのメディア ボタンを使用できます。
ただし、これは、squeezelite をバックグラウンド ジョブとして実行した場合にのみ機能します。squeezelite をサービスとして実行しようとすると問題が発生します。その後、サウンドはノート PC のスピーカーで再生されます。ただし、squeezelite で使用するサウンド デバイスを指定できます。オプションには、「default」、「front」、「hdmi」があります。「default」と「front」はノート PC のスピーカーに送られ、「hdmi」はモニターのスピーカーに送られますが、メディア キーはバイパスされます。手動で実行すると、メディア キーが機能し、「default」と「hdmi」の両方がモニターのスピーカーに送られます。

私の質問は、squeezelite をサービスとして実行し、出力を HDMI スピーカーに送信し、メディア キーを機能させるにはどうすればよいかということです。
squeezelite をサービスとして (root として) 実行しているため、「default」の意味が異なり、メディア キーがバイパスされているのでしょうか?start-stop-daemonユーザーとして実行しようとしましたが、うまくいきませんでした。

以下は、サウンド デバイスの一覧です。

Output devices:
  default                        - Playback/recording through the PulseAudio sound server
  null                           - Discard all samples (playback) or generate zero samples (capture)
  pulse                          - PulseAudio Sound Server
  sysdefault:CARD=Intel          - HDA Intel, ALC272 Analog - Default Audio Device
  front:CARD=Intel,DEV=0         - HDA Intel, ALC272 Analog - Front speakers
  surround40:CARD=Intel,DEV=0    - HDA Intel, ALC272 Analog - 4.0 Surround output to Front and Rear speakers
  surround41:CARD=Intel,DEV=0    - HDA Intel, ALC272 Analog - 4.1 Surround output to Front, Rear and Subwoofer speakers
  surround50:CARD=Intel,DEV=0    - HDA Intel, ALC272 Analog - 5.0 Surround output to Front, Center and Rear speakers
  surround51:CARD=Intel,DEV=0    - HDA Intel, ALC272 Analog - 5.1 Surround output to Front, Center, Rear and Subwoofer speakers
  surround71:CARD=Intel,DEV=0    - HDA Intel, ALC272 Analog - 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
  dmix:CARD=Intel,DEV=0          - HDA Intel, ALC272 Analog - Direct sample mixing device
  dsnoop:CARD=Intel,DEV=0        - HDA Intel, ALC272 Analog - Direct sample snooping device
  hw:CARD=Intel,DEV=0            - HDA Intel, ALC272 Analog - Direct hardware device without any conversions
  plughw:CARD=Intel,DEV=0        - HDA Intel, ALC272 Analog - Hardware device with all software conversions
  hdmi:CARD=HDMI,DEV=0           - HDA ATI HDMI, HDMI 0 - HDMI Audio Output
  dmix:CARD=HDMI,DEV=3           - HDA ATI HDMI, HDMI 0 - Direct sample mixing device
  dsnoop:CARD=HDMI,DEV=3         - HDA ATI HDMI, HDMI 0 - Direct sample snooping device
  hw:CARD=HDMI,DEV=3             - HDA ATI HDMI, HDMI 0 - Direct hardware device without any conversions
  plughw:CARD=HDMI,DEV=3         - HDA ATI HDMI, HDMI 0 - Hardware device with all software conversions

何か案は?

答え1

squeezelite エミュレーターの経験はありませんが、ALSA を直接使用するようです。

メディアキーでALSAを制御するには、次のように定義します。キーボードショートカットsqeezelite を実行しているユーザーの場合 (あなたの場合root):

amixer set Master 10%+ ## for Volume UP 10%
amixer set Master 10%- ## for Volume DOWN 10%
amixer set Master toggle ## for Mute

デスクトップユーザーのキーボード設定、またはその他のユーザーごとのオーディオ設定(例:デフォルトのオーディオデバイス)は、ユーザーセッションからsqueezliteを実行した後にのみ機能します(例:ログイン時)。

関連情報