Raspberry Piに構築したNASには写真・動画・音楽が無数に置いてある。
普段はWindowsの標準アプリの他、iTunesやAIMPといったアプリケーションからNAS上のディレクトリを直接参照して利用している。
それでも問題ないのだが、せっかくなのでDLNAサーバを構築して、リソースを有効活用してみようと思う。
普段はWindowsの標準アプリの他、iTunesやAIMPといったアプリケーションからNAS上のディレクトリを直接参照して利用している。
それでも問題ないのだが、せっかくなのでDLNAサーバを構築して、リソースを有効活用してみようと思う。
■本日の目標
Raspberry Pi 3にDLNAサーバを構築する
■主な作業環境
・HW:Raspberry Pi 3 Model B
・OS:CentOS Linux release 7.9.2009 (AltArch)
・OS:CentOS Linux release 7.9.2009 (AltArch)
■インストールするアプリケーション
・MiniDLNA
■参考サイト
■事前準備
色々なサイトで情報を集めていたところ、yumで簡単にインストールできるようだったのだが、「Raspberry Pi 3 + CentOS7」の環境が特殊だったせいか、リポジトリに見当たらず・・・泣く泣くソースからビルドしてインストールすることにした・・・。
ざっと調べたところ、必要なアプリケーションやライブラリは次の通り。
早速インストールして、開発環境を構築していく。
・libexif
・libjpeg
・sqlite3
・libid3tag
・libFLAC
・libvorbis
・libuuid
・flac
・ffmpeg
ざっと調べたところ、必要なアプリケーションやライブラリは次の通り。
早速インストールして、開発環境を構築していく。
・libexif
・libjpeg
・sqlite3
・libid3tag
・libFLAC
・libvorbis
・libuuid
・flac
・ffmpeg
■不足ライブラリを追加する
「yum list」で探していく・・・。
無印版(devel無し)もあるにはあるのだが、あとの作業でうまくビルドできなかったので、開発版(develあり)で代替した。
$ yum install libexif-devel $ yum install libjpeg-turbo-devel $ yum install sqlite-devel $ yum install libid3tag-devel $ yum install flac-devel $ yum install libvorbis-devel $ yum install libuuid-devel $ yum install flac-devel
■ffmpegをインストールする
これもリポジトリに無く・・・gitから入手したソースでインストールした。
$ git clone git://source.ffmpeg.org/ffmpeg.git $ ./configure --enable-shared --disable-programs $ make $ make install
お決まりの「configure→make→make install」の3コマンドをポンポンポンと実行しているように見えるが、「make」が2時間くらい掛かった・・・。
↓インストール完了↓
↓インストール完了↓
$ ffmpeg ffmpeg version N-86222-g9fb293c Copyright (c) 2000-2017 the FFmpeg developers built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-11) configuration: --enable-gpl --enable-nonfree --enable-libx264 --enable-libmp3lame --enable-libfdk-aac --enable-libfreetype libavutil 55. 63.100 / 55. 63.100 libavcodec 57. 96.101 / 57. 96.101 libavformat 57. 72.101 / 57. 72.101 libavdevice 57. 7.100 / 57. 7.100 libavfilter 6. 90.100 / 6. 90.100 libswscale 4. 7.101 / 4. 7.101 libswresample 2. 8.100 / 2. 8.100 libpostproc 54. 6.100 / 54. 6.100 Hyper fast Audio and Video encoder usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
■MiniDLNAのインストール
一通り揃ったのでMiniDLNAをインストールする。
これもgitから。
これもgitから。
$ git clone https://git.code.sf.net/p/minidlna/git minidlna-git $ autoreconf -i $ ./configure $ make $ make install $ ll /usr/local/sbin/ ・・・中略・・・ -rwxr-xr-x. 1 root root 868304 1月 25 19:55 minidlnad $ /usr/local/sbin/minidlnad -V Version 1.2.1
■ライブラリの参照箇所を追加する
インストール作業で各種モジュールが /usr/local/lib に配置されたので、MiniDLNA用にパスを通し、リロードする。
$ echo '/usr/local/lib' > /etc/ld.so.conf.d/minidlna.conf $ ldconfig
■MiniDLNA:環境設定ファイルを配置する
gitから取得した環境設定ファイルを /etc/minidlna.conf にコピーする。
$ cp ./minidlna.conf /etc/
■MiniDLNA:環境設定ファイルに個別設定を加える
$ vi /etc/minidlna.conf
当方は次の3点を変更した。
・media_dir:MiniDLNAが読み込むディレクトリと、読み込み対象ファイルの種類を指定する。
・friendly_name:利用クライアント上での表示名
・notify_interval:データベースの更新間隔
※ファイル内のコメントを読めば要領はわかる
・media_dir:MiniDLNAが読み込むディレクトリと、読み込み対象ファイルの種類を指定する。
・friendly_name:利用クライアント上での表示名
・notify_interval:データベースの更新間隔
※ファイル内のコメントを読めば要領はわかる
■MiniDLNA:Serviceファイルを作成する
中身は概ね参考サイトそのままだが、自動起動できなかったので、「Type」を「forking」に変更し、末尾に「Install」の記述を追加した。
$ touch /usr/lib/systemd/system/minidlna.service $ chmod 755 /usr/lib/systemd/system/minidlna.service $ vi /usr/lib/systemd/system/minidlna.service [Unit] Description=minidlna server After=network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/var/run/minidlna/minidlna.pid EnvironmentFile=/etc/sysconfig/minidlna ExecStart=/usr/local/sbin/minidlnad -R -f $CONFIG_FILE ExecStop=/bin/kill -SIGTERM $MAINPID [Install] WantedBy=multi-user.target
■MiniDLNA:Serviceファイルが読み込む設定ファイルを作成する
$ touch /etc/sysconfig/minidlna $ vi /etc/sysconfig/minidlna CONFIG_FILE=/etc/minidlna.conf
■MiniDLNA:Serviceを有効化&開始する
ここからはServiceの有効化&起動のお作法。
$ systemctl enable minidlna $ systemctl start minidlna $ systemctl status minidlna ● minidlna.service - minidlna server Loaded: loaded (/usr/lib/systemd/system/minidlna.service; enabled; vendor preset: disabled) Active: active (running) since 木 1970-01-01 09:00:26 JST; 51 years 0 months ago Process: 648 ExecStart=/usr/local/sbin/minidlnad -R -f $CONFIG_FILE (code=exited, status=0/SUCCESS) Main PID: 678 (minidlnad) CGroup: /system.slice/minidlna.service tq678 /usr/local/sbin/minidlnad -R -f /etc/minidlna.conf mq685 /usr/local/sbin/minidlnad -R -f /etc/minidlna.conf 1月 01 09:00:26 WSTD-RPI3 systemd[1]: Starting minidlna server... 1月 01 09:00:26 WSTD-RPI3 systemd[1]: Started minidlna server.
■MiniDLNA:文字化け対策
日本語で指定したファイルやフォルダが文字化けしてしまった。
ビルドのやり直しみたいな記事も見たが、こちらの環境ではデータベースファイルを再作成しただけで解消した。
ビルドのやり直しみたいな記事も見たが、こちらの環境ではデータベースファイルを再作成しただけで解消した。
$ systemctl stop minidlna $ rm /var/cache/minidlna/files.db rm: 通常ファイル `/var/cache/minidlna/files.db' を削除しますか? y $ systemctl start minidlna