2015-11-05

CentOS 7 ベースのサーバに ReadyMedia (MiniDLNA) を導入してみた話。

実際問題、Chinachu サーバを DLNA 対応する必要とか別になかったんだけど、興味からやってみた。




Linux で DLNA サーバというと「MediaTomb」がメジャーなようなのですが、なんとなく好かなかったので、NETGEAR の ReadyNAS 向けに開発されたプログラムである「ReadyMedia (MiniDLNA)」を使ってみることにした。

理由は軽量そうだということ、DLNA/UPnP-AV クライアントに完全に準拠することを目指して作成されており、製品として販売されているもの (ベース?) であることもあり、対応クライアントが多そうだと感じたため。

# もし NAS を導入することがあるなら、是非 NETGEAR 製品をば。





流れとしては、
  • MiniDLNA に必要なパッケージ・ライブラリの導入
    • FFmpeg (とそれ導入するために yasm、x264、ついでに fdk-aac)
    • 各種ライブラリ
  • MiniDLNA のインストール
  • MiniDLNA の設定
  • MiniDLNA の起動設定
  • ポート開放
てな感じかと



■ FFmpeg の導入


MiniDLNA より FFmpeg の方が大変だった。

必要なパッケージのインストール。

# yum install autoconf automake cmake freetype-devel gcc gcc-c++ git libtool make mercurial nasm pkgconfig zlib-devel

yasm を導入。 (x264 のコンパイルするために必要)

# cd /usr/local/src
# wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
# tar zxvf yasm-1.3.0.tar.gz
# cd ./yasm-1.3.0.tar.gz
# ./configure
# make
# make install

続いて x264 を導入。

# cd /usr/local/src
# git clone --depth 1 git://git.videolan.org/x264
# cd x264
# ./configure --enable-shared
# make
# make install

fdk-aac の導入。

# cd /usr/local/src
# wget http://jaist.dl.sourceforge.net/project/opencore-amr/fdk-aac/fdk-aac-0.1.4.tar.gz
# tar xzf fdk-aac-0.1.3.tar.gz
# cd fdk-aac-0.1.3
# ./configure
# make
# make install

ようやく、FFmpeg を導入。

# cd /usr/local/src
# git clone --depth 1 git://source.ffmpeg.org/ffmpeg.git
# cd ffmpeg
# ./configure --enable-gpl --enable-nonfree --enable-libfdk_aac --enable-libx264 --pkg-config-flags="--static"
# make
# make install



■ ReadyMedia (MiniDLNA) の導入


必要なパッケージを yum で導入。

# yum install libjpeg-turbo-devel sqlite-devel libexif-devel libid3tag-devel libogg-devel libvorbis-devel flac-devel

MiniDLNA をインストール。

# cd /usr/local/src
# wget http://sourceforge.net/projects/minidlna/files/minidlna/1.1.5/minidlna-1.1.5.tar.gz
# tar zxvf minidlna-1.1.5.tar.gz
# cd minidlna-1.1.5
# ldconfig        # ffmpeg の lib がリンクされてない場合に試す ("configure: error: Could not find libavformat - part of ffmpeg" というエラーで躓きまくった。これに悩まされ、時間をかなり無駄にした。)
# ./configure
# make
# make install

設定ファイルをコピー。

# cp minidlna.conf /etc/
# vi /etc/minidlna.conf

設定ファイルを編集。必要に応じて適当に変更すること。
Chinachu サーバ用なので、こんな感じにした。

# directories you want to be scanned
media_dir=V,/home/shared/recorded

# server name
friendly_name=Chinachu

systemd への対応。
新たにファイルを作成して、

# vi /lib/systemd/system/minidlna.service

下記内容を書き込む。

[Unit]
Description=MiniDLNA
After=network.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

/etc/sysconfig/minidlna に必要な情報を書き込む。

# echo "CONFIG_FILE=/etc/minidlna.conf" > /etc/sysconfig/minidlna

サービスを起動&登録。

# systemctl start minidlna
# systemctl enable minidlna

firewalld の設定をする。
とりあえず dlna 用の設定ファイルを1つ作る。

# vi /usr/lib/firewalld/services/dlna.xml

中身はこんな感じでいいかと。 (設定ファイルでポート番号を 8200 から変えた場合には、それに合わせて変えること。そもそも、8200 は不要な場合もあるかもだが、とりあえずこんな感じでいいかと。)

<?xml version="1.0" encoding="utf-8"?>
<service>
        <short>DLNA</short>
        <description>For DLNA server service</description>
        <port protocol="udp" port="1900" />
        <port protocol="tcp" port="5000" />
        <port protocol="tcp" port="8200" />
</service>

設定を反映しておきます。

# firewall-cmd --add-service=dlna --permanent
# firewall-cmd --reload



設定が終わったら、適当な DLNA クライアント (PS3 とか) からアクセスしてみるといいかなと。

というわけで、以上。



参考サイト

0 件のコメント :

コメントを投稿