Raspberry Piで簡易メディアサーバーを作成する

Raspberry Pi(RetroPie)にDLNAサーバー機能を導入したのち、音楽ファイルをAndroidのメディアプレイヤーで聞くまでの備忘録です。SAMBAと違ってアーティストやジャンルで分類してくれたり、何よりアートワークが出るのが良いですね。

miniDLNAのインストール

ターミナルから以下のコマンドを実行してminiDLNAをインストールします。TeraTermやPuTTY、RetroPieの場合はEmulationStationの画面でF4を押しても開けます。元の画面に戻るにはEmulationStationと入力してEnter。

sudo apt-get update
sudo apt-get install minidlna

minidlna.confの初期設定

minidlna.confを編集して共有したいフォルダやデータベースの更新間隔などの設定を行います。

sudo nano /etc/minidlna.conf

最低限設定しておかなければならないのは以下の項目。

media_dir=A,/home/pi/RetroPie/NAS/Music
inotify=yes
notify_interval=60
force_sort_criteria=+upnp:class,+upnp:originalTrackNumber,+dc:title

media_dirには共有したいディレクトリのパスを指定します。パスの前に接頭辞を書いておくと、共有したいファイルタイプを明示的に指定できます(画像を共有したい場合はP、音楽を共有したい場合はA)。

inotify=yesは、フォルダにファイルが追加された時にデータベースを自動更新するための設定です。行頭のコメントアウトを削除すればOK。

notify_interval=60はファイルの監視間隔。

force_sort_critatiaは、DLNAクライアントからアルバムを表示した時の曲順を指定する書式です。これを設定しないと、ディスクが2枚以上存在するアルバムを開いた時にトラック番号01の曲が先頭に2つ連続で並んだりします。

変更したらCtrl+Xで保存します。

inotifyの監視数を増やす

変更しない場合、ファイルを追加した際にアートワークが変更されないなどの不具合が発生すると思います。自分の場合、/var/log/minidlna.logにアートワークが見つからない(正常にキャッシュが生成されていない)旨のエラーログが大量に出ました。

sysctl fs.inotify.max_user_watches=100000を実行したのち、

sudo nano /etc/sysctl.d/90-inotify.confで、以下の文字列を追加してCtrl+Xで保存します。

# Increase inotify max watchs per user for local minidlna
fs.inotify.max_user_watches = 100000

どうやらLinuxの仕様が関係。

[sc_Linkcard url=”https://wiki.archlinux.jp/index.php/ReadyMedia”]

サービスの再起動

最後に以下のコマンドを実行してminiDLNAを再起動すれば、DLNAクライアントで新たにサーバーを選択できるようになります。

sudo systemctl stop minidlna
sudo systemctl restart minidlna