ラズパイで出力先を指定してオーディオ再生をするには

Raspbian 2016-03-18版で確認したところ、aplayコマンドの -D オプションを使ってHDMI出力とヘッドフォンジャック出力を切り替えることができないようです。いまのところ、amixerコマンドと組み合わせるしかなさそうです。もしくは、omxplayerコマンドを使うかです。

amixerコマンドを使う場合は次のように、aplayコマンドを実行する前に出力先を指定します。amixerは、raspi-configでAudioの出力先を指定するのと同じことになるので、raspi-configで指定した設定は上書きされる点に注意しましょう。

# 出力先自動
$ amixer cset numid=3 0; aplay /usr/share/sounds/alsa/Front_Center.wav
# ヘッドフォンジャック出力
$ amixer cset numid=3 1; aplay /usr/share/sounds/alsa/Front_Center.wav
# HDMI出力
$ amixer cset numid=3 2; aplay /usr/share/sounds/alsa/Front_Center.wav

なお、GUIだと上部のシステムメニューにスピーカーアイコンがあり、ここで出力先を変更できます。これはraspi-configでAudioの出力先を指定すると連動しているので、内部でamixerを実行しているのと同じはずです。ALSAの設定は、$HOME/.asoundrcに書けばよいのですが、amixerの設定はここには反映されていないようなので、どこか他の設定ファイルが書き換わっているのだと思います。($ sudo alsactl store 0 でamixerで指定したカード0の設定を保存できるのですが、これを実行すると /var/lib/alsa/asound.state ファイルを更新するので、これが設定ファイルなのだと思われます)

omxplayerコマンドの「-o」で出力先は指定できました。

# 出力先自動
$ omxplayer /usr/share/sounds/alsa/Front_Center.wav
# ヘッドフォンジャック出力
$ omxplayer -o local /usr/share/sounds/alsa/Front_Center.wav
# HDMI出力
$ omxplayer -o hdmi /usr/share/sounds/alsa/Front_Center.wav

個人的には、omxplayerコマンドの方がmp3も再生できますし、そちらを使えばいいかな、と思っています。

Rasbperry Pi関連商品には下記があります。

同じタグの記事: Raspberry Pi
同じタグの記事: Raspbian
同じカテゴリの記事: Linux