UbuntuでDLNAサーバーの構築 (とりあえず動けば良い編)


# そもそもDLNAって何
テレビのレコーダーとかでよくある「録画した番組をスマホで見れる！」的な機能。
パナソニックの「お部屋ジャンプリンク」とかあの辺
DLNAサーバーに動画を置くと、クライアント端末側で任意の動画を再生できる機能



# 今回の前提条件
**◆環境面**
　OS ： Ubuntu　(20.04 64bit)
　DLNA機能 ： MiniDLNA　(focal,now 1.2.1+dfsg-1build1 amd64)

**◆方向性**
　ゴール：動画(mp4)、音楽(mp3)、画像(jpg)が見れればいい
　qiita上にあるDLNA構築のページが、ラズパイ向けとかざっくりしか書かれてないとかで
　最初から最後までまとまった記事がなさそうだったので書いた
  

# 1. MiniDLNAのインストール

# aptでMiniDLNAをインストールする

```
sudo apt update
sudo apt-get install -y minidlna
```

#2. MiniDLNAの設定変更
##### 配信したい動画などを格納するフォルダを作成
　今回はルート直下に「dlna」というフォルダを作って動画などを格納することにする。
　(格納場所にこだわりがあれば任意で変更/読み替えてください)

```
sudo mkdir -p /dlna/video
sudo mkdir -p /dlna/picture
sudo mkdir -p /dlna/audio
```

##### 設定ファイルの編集

エディタにて「/etc/minidlna.conf」を編集する。

```
sudo vi /etc/minidlna.conf
```

編集する部分は以下の3ヵ所。
minidlna.confを全部乗せると長いので要所のみ抜き出し
  

**・26行目**
　配信したい動画などの格納フォルダの変更。
　最後の行にある「media_dir=/var/lib/minidlna」のフォルダ部分を
　最初に作っておいた動画格納用のフォルダ名(/dlna/video)に書き換える。
　(フォルダパスの前に「V,」を入れておかないとdlnaが動画を認識してくれない？ので注意)
さらに追加で画像用の「P,/dlna/picture」、音楽用の「A,/dlna/audio」も追加する

```python
# Path to the directory you want scanned for media files.
#
# This option can be specified more than once if you want multiple directories
# scanned.
#
# 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=V,/dlna/video
media_dir=P,/dlna/picture
media_dir=A,/dlna/audio
```

　
**・97行目**
　各フォルダ内に新しいファイルが追加されたら自動で認識するようにする。
　ここはチェック外すだけ。

```
# Automatic discovery of new files in the media_dir directory.
#inotify=yes
↓
inotify=yes
```

　

**・119行目**
フォルダに新しい動画が追加されたかどうかを確認しに行く間隔 (単位：秒)
今回は10秒に1回更新かけたいので「=10」にした。時間はお好みで。

```python
# SSDP notify interval, in seconds.
# notify_interval=895
↓
notify_interval=10
```


**ここまで変更出来たら保存する。**

# 3. MiniDLNAの起動

サービスの起動とPC起動時にも自動実行させる設定

```
sudo systemctl start minidlna
sudo systemctl enable minidlna
```

※以下のように言われても自動起動の設定はできているので気にしなくてOK。
$ sudo systemctl enable minidlna
minidlna.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable minidlna


# 3. 動作確認

ubuntuのデスクトップ、もしくは同一ネットワーク内のPCでブラウザを起動し、
「http://\<dlnaマシンのホスト名>:8200」へアクセスする (例：http://hogehoge:8200)　

以下のような画面が出ればとりあえずOK。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/594444/20827600-85c7-d493-b7b7-764c124f7e65.png)





画面を確認出来たらMiniDLNAを一旦停止させ、DBを削除して起動する。
なぜか最初は追加ファイルの自動認識が行われないため 

```
sudo systemctl stop minidlna
sudo rm /var/cache/minidlna/files.db
sudo systemctl start minidlna
```


サービスが起動したら、各格納用フォルダ(/dlna/video等)に適当なファイルを格納し、
先ほどのブラウザのページをF5キー等で更新する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/594444/d7630826-0979-bb5c-4fa2-446e6c57aa5a.png)
追加した動画が認識されていれば「Video files」のカウントが1つ上がっているはず
同様に画像用フォルダ(/dlna/picture)、音楽用フォルダ(/dlna/audio)にも任意のファイルを格納する。


# 4. 動画などの再生
ここから先は任意のDLNAクライアントを使用して、DLNAサーバーにアクセスしてください。

今回は例としてandroid端末上の[VLC for Android](https://play.google.com/store/apps/details?id=org.videolan.vlc&hl=ja&gl=US)で再生します。
※クライアント端末は構築したサーバーと同じネットワークに接続してください。

スマホ版であれば、VLCの下部にあるフォルダマークの「参照」をタップして、
「ローカルネットワーク」の欄に構築したDLNAサーバーが見えると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/594444/93903a30-386f-6d8a-0ae7-ce282ead181b.png)


タブレット版であれば左上の「三」から「ローカルネットワーク」をタップすれば
上記と同じようなアイコンが見えると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/594444/5683f04a-196f-5787-cc8d-62b6ced4a9dd.png)


DLNAサーバーに接続出来たら「Brows Folders」配下にある「video」「picture」「audio」等の階層を潜っていけば
格納したファイルが出てくるのでタップして再生できれば構築完了となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/594444/397af3a3-17e4-5f55-1498-e0f7007522de.png)