ページ

2020年2月15日土曜日

【ALSA】 Linuxで音が出ないときの設定

Linuxで音設定と言えば,ALSA.(Advanced Linux Sound Architectureの略らしい.)

大抵の場合は,音量がミュートになっているだけなので,ALSAをインストールし,alsamixerで音量のミュートを解除する.
$ sudo apt install alsa-utils
$ alsamixer

それでも音が出ない場合は,デバイスの指定が間違っている可能性が高い.
試しにaplayコマンドでwavファイルを再生してみると,以下のようなエラーが表示されるので,デバイスの指定を変更する.
$ aplay -D default /usr/share/sounds/alsa/Rear_Center.wav 
ALSA lib pcm_dmix.c:1108:(snd_pcm_dmix_open) unable to open slave
aplay: main:828: audio open error: No such file or directory

まずは,指定するデバイスを確認するために,-l オプションを追加してaplayコマンドを実行する.
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: HDMI [HDA Intel HDMI], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: PCH [HDA Intel PCH], device 0: ALC3220 Analog [ALC3220 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

この中から指定したいデバイスを選択する.私の場合は,HDA Intel PCH だったので,cardが 1,deviceが 0 になる.これを踏まえてデバイスを指定して再度,aplayコマンドでwavファイルを再生すると,今度はうまく再生される.
$ aplay -D plughw:1,0 /usr/share/sounds/alsa/Rear_Center.wav 
Playing WAVE '/usr/share/sounds/alsa/Rear_Center.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
※plughwでうまく行かない場合は,hwにしてみるとうまくいく.

これをデフォルトに反映するため,ホームディレクトリ以下に.asoundrcファイルを作成して,以下のように記述する.
(deviceはデフォルトが0のため,記述しなくても問題ないかもしれない)
defaults.pcm.card 1
defaults.pcm.device 0
defaults.ctl.card 1

最後に,デフォルト指定で wavファイルを再生し,うまく再生できれば設定は完了.
$ aplay -D default /usr/share/sounds/alsa/Rear_Center.wav 
Playing WAVE '/usr/share/sounds/alsa/Rear_Center.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono

もし,ブラウザや動画プレイヤーなどをすでに開いている場合は,再起動すると音設定が反映される.

0 件のコメント:

コメントを投稿