14. DLNA(UPnP)サーバーとレンダラー導入

使用しているルーターにメディアサーバの機能が有り、USB HDをルーターに接続して使ってみたが、mp3やm4a(AAC)はOKだったがハイレゾのflacに対応していなかったので、raspiで何かできないかと調べたら、DLNA(UPnP)サーバー(DMS)とレンダラー(DMR)にそれぞれ対応したプログラム(minidlna, gmediarender)が有ることが分かり導入してみた。(raspi3pに導入したVolumioは対応しているのだが、IoTCAPが使えないので、raspi0のOS raspbianで稼働するものを探した)
意外とすんなり導入が完了し、iPadのDLNA対応AppをDMCとして導入したDMSとDMRを問題無く検出する事ができ、音楽もどうにか再生することができた。(Windowsのfoobar2000でもDMS、DMR検出し再生させることができた)
ただ、raspi0のDMSとDMRの組み合わせではパワー不足の所為でサンプリングレート192kHzのファイルはダメで、96kHzも曲によってはダメだった。(raspi3に同じものを導入して再生させた場合は192kHzも問題無く再生できた)
DMSは外部でDMRはraspi0の組み合わせなら192kHzも問題無く再生できた。

●DLNAサーバー(minidlna)導入

raspi0のローカル容量が少ないので、ルーターのNASをマウントして、DLNAサーバーにする。
  1. ルーターのNASに入れた"HiRes Sound"フォルダをマウント
    
    $ sudo mount.cifs "//(NAS Addr)/HiRes Sound" /mnt/music -o username=(name),password=(word),uid=1000,gid=1000,sec=ntlm,vers=1.0
    
  2. "MiniDLNA"(Version 1.1.6)のインストール
    
    $ sudo apt-get install -y minidlna
    
  3. コンフィグ設定
    
    $ sudo nano /etc/minidlna.conf
    
     :
     :
    # Specify the user name or uid to run as.
    #user=minidlna
    user=root  ←追加(フォルダアクセスに必要)
     :
     :
    # If you want to restrict a media_dir to a specific content type, you can
    # prepend the directory name with a letter representing the type (A, P or V),
    # followed by a comma, as so:
    #   * "A" for audio    (eg. media_dir=A,/var/lib/minidlna/music)
    #   * "P" for pictures (eg. media_dir=P,/var/lib/minidlna/pictures)
    #   * "V" for video    (eg. media_dir=V,/var/lib/minidlna/videos)
    #   * "PV" for pictures and video (eg. media_dir=PV,/var/lib/minidlna/digital_camera)
    #media_dir=/var/lib/minidlna  ←コメントアウト
    media_dir=A,/mnt/music     ←追加(マウントパス)
     :
    # Path to the directory that should hold the database and album art cache.
    #db_dir=/var/cache/minidlna  ←デフォルトのまま
    
    # Path to the directory that should hold the log file.
    #log_dir=/var/log      ←取り敢えずデフォルトのまま
     :
    # Automatic discovery of new files in the media_dir directory.
    inotify=yes      ←コメント(#)を外す
     :
    # SSDP notify interval, in seconds.
    notify_interval=895  ←コメント(#)を外す
    
  4. minidlnaサービスの起動/停止/再起動
    
    $ sudo systemctl start minidlna
    $ sudo systemctl status minidlna    ←ステータスが"Running"になっていることを確認する
    $ sudo systemctl stop minidlna
    $ sudo systemctl restart minidlna
    

●DLNAレンダラー(gmediarender)導入

raspiをrenderer(player)にしてアンプにUSB接続してDLNA再生
  1. gmediarender関連のインストール
    
    $ sudo apt install gstreamer1.0-alsa gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-plugins-bad gmediarender
    
  2. UUIDを得る
    
    $ uuid
    aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee   ←複数raspiに導入する場合に必要
    
  3. コンフィグ設定
    
    $ sudo nano /etc/default/gmediarender
    
    #Start daemon automatically? (1= yes, all other valures are "not enabled")
    # defaults to "not enabled"
    ENABLED=1    ←コメント(#)を外す
     :
     :
    # Initial volume in decibel. 0.0 is 'full volume', -10 correspondents to '75' on
    # the exported volume scale (Note, this does not change the ALSA volume, only
    # internal to gmrender. So make sure to leave the ALSA volume always to 100%).
    #INITIAL_VOLUME_DB=-10    ←コメントアウト
    INITIAL_VOLUME_DB=0.0    ←追加 最大にする
    
    # If you explicitly choose a specific ALSA device here (find them with 'aplay -L'), then
    # gmediarenderer will use that ALSA device to play audio.
    # Otherwise, whatever default is configured for gstreamer for the '$DAEMON_USER' is
    # used.
    #ALSA_DEVICE="sysdefault"    ←コメントアウト
    #ALSA_DEVICE="iec958"      ←初期値のまま
    ALSA_DEVICE="hw:1,0"      ←追加 USBデバイ指定 カード:1、デバイス:0
    
    # You can pass extra arguments to the daemon
    # For example, you can specify a logfile with this line
    # (though you need to ensure correct permissions for a log file yourself.)
    # DAEMON_EXTRA_ARGS="--logfile /var/log/gmediarender.log"
    
    DAEMON_EXTRA_ARGS="--uuid aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"  ←追加 uuidコマンドで得た値で個別化(単体使用なら不要)
    
  4. gmediarenderサービスの起動/停止/再起動
    
    $ sudo systemctl start gmediarender
    $ sudo systemctl status gmediarender    ←ステータスが"Running"になっていることを確認する
    $ sudo systemctl stop gmediarender
    $ sudo systemctl restart gmediarender
    

【参考】下記サイトの情報を参考にさせて頂きました。
  1. MiniDLNAのインストールと設定方法(Ubuntu16.04)
  2. メディア・ストリーミング-2
  3. CentOS7でReadyMedia(MiniDLNA)を使ってDLNAミュージックストリーミングサーバを作る
  4. Howto install DLNA media renderer
  5. Raspberry Piのメディアレンダー化作戦 DLNA編

2018/12/20