Raspberry piのgmediarenderをgmrender-resurrectに入れ替え
今までRaspberry piのDLNA (UPnP)のrendererをgmediarenderにしてきました。
しかし、gmediarenderは古くてメンテナンスされていないせいか、Raspberry piには荷が重く、挙動がおかしくなります。
挙動がおかしくなる一例として
・再生後、停止や一時停止ができない。
・次の曲に行かない。
・DMCのシークバーも再生時間も動かない。
・曲が停止してもALSAを占有し続ける。
4項目はPulseAudioにでもすればよいのでしょうが、そでも1~3は解決しません。
(PluseAudioは今、悪戦苦闘中)
で、これを解決する軽量レンダラーとしてgmrender-resurrectがgitに上がっています。
一般的なインストール方法が書かれていますが、Raspberry pi向けに参考にしたのがコチラ
英語で書かれているのですが、わかりやすいです。
Raspberry piでmakeするので、だいぶ時間かかるかと思いましたが、ものの数分でした。(離席している間に終わってました。)
まず、古いgmediarenderとその時入れた関連パッケージをpurgeします。
apt purge gstreamer1.0-alsa gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-plugins-bad gmediarender
そして、事前に必要なパッケージをインストールします。
apt install libupnp-dev libgstreamer1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-alsa gstreamer1.0-pulseaudio
んでgitからgmrender-resurrectのソースを拾ってきてmakeします。
あ、途中でautoconfもインストールしますが、先にインストールしても構いません。
git clone https://github.com/hzeller/gmrender-resurrect.git
cd gmrender-resurrect
apt install autoconf
./autogen.sh
./configure
make
make install
続いて、systemd用の起動スクリプトをコピーします。
(OpenRC派なんですけど、最近の主流はsystemdですね・・・。)
cp dist-scripts/debian/gmrender-resurrect.service /etc/systemd/system chmod 775 /etc/systemd/system/gmrender-resurrect.service
設定ファイルはないようなので、etc/systemd/system/gmrender-resurrect.serviceのファイルを直接編集する必要があるようです。
デフォルトでは、
ExecStart=/usr/local/bin/gmediarender -f "$UPNP_DEVICE_NAME" -u "$UPNP_UUID" \ --gstout-audiosink=alsasink --gstout-audiodevice=sysdefault \ --logfile=/tmp/gmediarenderer.log --gstout-initial-volume-db=-10
というふうになってますので、ボリュームを0.0にしたり、アウトプットを変えたりしましょう。
また、pluseaudioを出力にする際は、pulsesinkに変更し、デバイスはpulseaudioで検出されたデバイス番号を指定します。
ExecStart=/usr/local/bin/gmediarender -f "$UPNP_DEVICE_NAME" -u "$UPNP_UUID" \ --gstout-audiosink=pulsesink --gstout-audiodevice=0 \ --logfile=/tmp/gmediarenderer.log --gstout-initial-volume-db=0.0
PulseAudioのデバイス番号の調べ方は
pactl list sinks
で、ずらーっと出てきますので、先頭のSink #0とかSink #1とかがデバイス番号のようです。