moOde audio 7.0.1 (chromium-browser pulseaudio)

moOde audio 7.0.1に更新(新規インストール)しました。バグ修正のようですが当サイトの環境では特に変わったところは気が付きませんでした。
Raspberry Pi 3はほかの目的に使いたいことからRaspberry Pi 2に変更。WiFi Bluetoothは使っていないためSDカードは全く同じでいけます。Raspberry Pi 2ではStreamlink radikoの再生開始が若干長くなった以外特に違いは無いようです。

chromium-browser

当サイトのmoOde audioは常時稼働、moOde audio7からvnc server上でchromium-browserを起動しています。通常日中は問題ないのですが夜間翌日にはメモリを喰いつぶしています。
system(syslog)が関係していると思いますがcron,swapを有効にして指定時間にchromium-browserを終了するようにしました。
デフォルトではcron,swap共有効になっていません。
0時30分 chromium-browser終了

$ crontab -e
30 00 * * * /bin/killall -q /usr/lib/chromium-browser/chromium-browser-v7

SDカードは7GiBに拡張 デフォルトは100MBですが不足なのでコメントにすることで1.15GB
/etc/dphys-swapfile

#CONF_SWAPSIZE=100

有効にする

# systemctl enable cron dphys-swapfile
# systemctl start cron dphys-swapfile

pulseaudio control (pulse.php)

pulseaudio control(pulse.php)からmpc volumeを変更できるようにしてみました。

見た目は変わりませんがmpdモード時も音量を変更できます。ほかエリアで作業中音量を変更したい時便利です。
mpc volumeは%値になっています。
参考 pulse.php

moOde audioとpulseaudio

moOde audioのmpdとpulseaudioの関係について簡単に整理してみます。
通常moOde audioは使いやすいクライアントのwebブラウザからmoOde playerにアクセスすることになると思います。
moOde audioにpulseaudioを導入、pulseaudioがキルのときデフォルトのmoOde playerは正常動作、pulseaudioをスタートするとmoOde player(mpd)は再生不可になります。
pulseaudioをスタート、キルするためには誰かがログインしてスタート、キルを実行しなければいけません。webサーバーの実行ユーザーであるwww-dataに権限を与えることでwebブラウザからpulseaudioをスタート、キルしています。

pulseaudioサーバー(moOde audio)

以前moOde audio 630(PulseAudio)作業時の記録

pulse.phpは操作性などからskyblue cssを利用しています。最初にダウンロード展開、mvして/var/www/htmlとして保存。pulseaudioの設定関連をhtml以下に保存します。
moOde audioにpulseaudioをインストール、/etc/pulse/default.paに自ネットワーク帯とデバイス情報を追記
当サイトのES9023,PCM5102A,TDA1543は下記の設定で動いています。

load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24 auth-anonymous=1
set-default-source alsa_output.platform-soc_sound.stereo-fallback.monitor
set-default-sink alsa_output.platform-soc_sound.stereo-fallback

www-dataからpulseaudioをスタートするにはwww-dataのホームディレクトリをhtml以下に作成、設定
www-dataにはsudo権限(visudo)とaudioグループに所属、設定
pulseaudioをwww-dataでスタート

# runuser -l www-data -c "pulseaudio --start"

/var/www/html/www-data/.config/pulseが作成されます。
/var/www/html/www-data/.config/pulse/client.conf作成

autospawn = no
daemon-binary = /bin/true
auto-connect-localhost = yes

www-dataのホームディレクトリ、ファイルのパーミッションを揃えておきます。(確認)
基本www-dataから~/.config/pulseを読み書きできるようにします。

-rw-r--r-- 1 www-data www-data    70  1月 11 16:49 client.conf

以前はdefault.paを作成していましたがclient.confのみでOK
/var/www/html/killall.sh (pulse.php用のkillall.shを作成設定 chmod 755 killall.sh)

#!/bin/sh
sudo killall -q mplayer
sudo killall -q mpv
sudo killall -q ffplay
mpc stop > /dev/null 2>&1

www-dataのユーザー登録が正常にできれば以下のようになります。

$ id www-data
uid=33(www-data) gid=33(www-data) groups=33(www-data),29(audio)

pulseaudioクライアント

クライアントのraspberry pi4にclient.confを設定
~/.config/pulse/client.conf (default-serverはmoOde audioのIPアドレス)

autospawn = no
daemon-binary = /bin/true
default-server = 192.168.0.113

クライアントはpulseaudioがインストールされているならclient.confの設定のみでOK
pulse.php実行(サイズ、位置はdevilspie2で設定しておくといいでしょう)

surf moode/html/pulse.php &

moOde playerはクライアントのwebブラウザからアクセスします。
pulseaudio(pulse.php)のみを導入した環境(vnc serverなし)のpulseaudio再生はクライアント側でアプリケーションを実行、再生します。
基本は最初にpulseaudioをスタートしておいてアプリケーションを実行します。アプリケーションによって挙動は若干違います。chromium-browserでは自マシンのalsaに向いてしまった場合はchromium-browserを再立ち上げします。
moOde audio内部からは基本pulseaudio再生をしないのでpulseaudioの設定が正しければ安全に運用することが出来ます。

pulseaudioクライアント(moOde audio user)

moOde audioのユーザー(pi)からpulseaudio再生をする場合は~/.config/pulse/client.confのdefault-serverをローカルホスト(127.0.0.1)に向けます。

autospawn = no
daemon-binary = /bin/true
default-server = 127.0.0.1

simul.pyやstreamlink radikoのpython3-tkはX環境(vnc server)が必要です。
サイマルラジオをmoOde playerに登録することでsimul.pyからは音量コントロールを含めて連携することが出来ます。
またsimul.pyやstreamlink radikoを正しく設定することでpulseaudioを自動でスタート、キルします。
動画はvnc server(moOde audio)では無理そうなのでPi4で再生、音声をmoOde audioのpulseaudioで再生します。

外部のクライアントマシンは物理的なaudio deviceが無いSBCからもネットワーク経由のpulseaudio音声出力が可能です。(当サイトのSBCで確認、多分pcmをサポート)
moOde playerが必要なければRaspberryPiOSなどでもpulseaudioサーバーを構築できます。(pulse.phpはwebサーバー、phpが必要)
Lan内にサブのシステムとして設置しても有効と思います。
やはりradikoは前回の記事の時点(ジャストタイミング)でflashサポートを停止したようですね。