搭建 dlna 服务器主要作为 samba 的补充,简单方便。windows 7 已经自带流媒体共享,设置也很简单,可以自行上网搜索。
在linux搭建的目地主要是作为家庭媒体共享服务器,手机和智能电视访问比较方便。
我之所以没有用 CentOS 而用了 fedora 系统,主要是因为在笔记本上仅添加 rpmfusion 这个repo就够了,安装驱动什么的比较方便,全部使用 dnf 安装不需要自己编译,其他发行版也是大同小异。


如果没有安装的得先装上 rpmfusion-free-release rpmfusion-nofree-release 这两个包,再刷新 dnf 缓存就行。
在国内的话按下面操作就行,要修改成对应的操作系统版本,我这里用的是 fedora 22。

[root@fedora ~]# wget http://mirrors.aliyun.com/rpmfusion/free/fedora/rpmfusion-free-release-22.noarch.rpm
[root@fedora ~]# wget http://mirrors.aliyun.com/rpmfusion/nonfree/fedora/rpmfusion-nonfree-release-22.noarch.rpm
[root@fedora ~]# rpm -ivh rpmfusion-free-release-22.noarch.rpm rpmfusion-nonfree-release-22.noarch.rpm
[root@fedora ~]# dnf update

所有的 repo 文件放在 /etc/yum.repos.d/ 下面,如果嫌速度不够快可以自行配置使用国内的镜像站点,怎么修改可以上网查查,更新后先重启。


首先先搜索一下有关 dlna 的软件。

[root@fedora ~]# dnf search dlna
上次元数据过期检查在 2:58:13 前执行于 Mon Dec 21 13:13:02 2015。
=========================N/S 匹配:dlna ==========================================
gupnp-dlna-docs.noarch : Development package for gupnp-dlna
gupnp-dlna-devel.i686 : Development package for gupnp-dlna
gupnp-dlna-devel.x86_64 : Development package for gupnp-dlna
minidlna.x86_64 : Lightweight DLNA/UPnP-AV server targeted at embedded systems
gupnp-dlna.i686 : A collection of helpers for building UPnP AV applications
gupnp-dlna.x86_64 : A collection of helpers for building UPnP AV applications
rygel.i686 : A collection of UPnP/DLNA services
rygel.x86_64 : A collection of UPnP/DLNA services


安装 minidlna 软件

[root@fedora ~]# dnf install minidlna.x86_64


查看软件包文件列表

[root@fedora ~]# rpm -ql minidlna.x86_64
/etc/minidlna.conf
/run/minidlna
/usr/lib/systemd/system/minidlna.service
/usr/lib/tmpfiles.d/minidlna.conf
/usr/sbin/minidlnad
…………省略…………
/usr/share/man/man5/minidlna.conf.5.gz
/usr/share/man/man8/minidlnad.8.gz
/var/cache/minidlna
/var/log/minidlna

软件文件很简单的。

可以自己看看 minidlnad 的 man 手册

[root@fedora ~]# man minidlnad



运行 minidlnad -h 也差不多

[root@fedora ~]# minidlnad -h



也可以再看看 minidlna.conf 手册。

[root@fedora ~]# man minidlna.conf



接着看看 minidlnad 的 service 文件

[root@fedora ~]# cat /usr/lib/systemd/system/minidlna.service
[Unit]
Description=MiniDLNA is a DLNA/UPnP-AV server software
After=syslog.target local-fs.target network.target
[Service]
User=minidlna
Group=minidlna
Type=simple
ExecStart=/usr/sbin/minidlnad -S
[Install]
WantedBy=multi-user.target

看来最主要的就是执行 /usr/sbin/minidlnad -S 这个命令。之前运行 minidlnad -h 有说明,“-S”代表以systemd的方式运行服务。
看来是一个比较简单的服务。

配置文件路径一般在 /etc/minidlna.conf,使用常用的编辑器修改就行。
我们可以基本了解所有的设置都可以在 minidlna.conf 配置文件中修改,重点就主要看看 minidlna.conf 的配置选项。


接下来修改配置文件 minidlna.conf。

[root@fedora ~]# vi /etc/minidlna.conf
# 自定义网页访问的端口,用于状态信息等。默认端口号为8200,那么访问 http://127.0.0.1:8200,就可以看到相关的状态信息(其实是一个很简单的网页)。
port=8200
# 指定服务网络接口,默认所有接口。多个接口用“逗号”分开,例如 network_interface=eth0,enp3s0。
#network_interface=eth0
# 指定使用哪个系统用户来运行服务。用户名或 UID 都可以。systemd 方式不需要修改这个,在 /usr/lib/systemd/system/minidlna.service 已经指定了。
#user=jmaggard
# 设置共享目录。多个目录需要多次指定。
# 可以通过下面的方式限定目录存放的媒体类型
#   + "A" 代表音乐  (例如:media_dir=A,/home/jmaggard/Music)
#   + "V" 代表视频  (例如:media_dir=V,/home/jmaggard/Videos)
#   + "P" 代表照片  (例如:media_dir=P,/home/jmaggard/Pictures)
#   + "PV" 代表照片和视频 (例如:media_dir=PV,/home/jmaggard/digital_camera)
# media_dir=/opt    代表 /opt 目录下有多种类型的文件。
# 是否将上面多个 media_dir= 合并到一个根目录下。默认为 merge_media_dirs=no 不合并,如果  media_dir= 比较多比较乱可以选择合并。
#merge_media_dirs=no
# 自定义客户端显示的主机名称,可以理解为你自己的网络邻居的名称,不设置的话会使用当前的主机名。
#friendly_name=My DLNA Server
# 指定存放专辑封面等缓存数据的路径,一般不需要修改。确保对这个目录有写权限就行。
#db_dir=/var/cache/minidlna
# 指定日至存放目录,一般不需要修改。确保对这个目录有写权限就行。
#log_dir=/var/log/minidlna
# 指定日志记录等级,每个 section 可以使用不同的等级:off, fatal, error, warn, info, debug。看着不太重要,具体没仔细研究。
#log_level=general,artwork,database,inotify,scanner,metadata,http,ssdp,tivo=warn
# 使用斜杠 "/" 分隔的可能存在的专辑封面的文件名。如果发现有其他的文件就再再加上去。默认已提供了下面的设置。
album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg
# 是否使用 inotify 通知来自动发现新的文件。默认 inotify=yes。
# 一般 linux 发行版设定 inotify 为 8196,启动服务后会报错,实际并不影响使用,本文最后附有解决方法。
inotify=yes
# 好象是数字录像机支持,没用到过。默认 enable_tivo=no。
# set this to yes to enable support for streaming .jpg and .mp3 files to a TiVo supporting HMO
enable_tivo=no
# 是否严格遵守 DLNA 标准,默认 strict_dlna=no。
# 这会允许服务器自动缩放非常大的图片,会影响图片保存的质量(至少)在 Sony DLNA 产品中会有这类情况。
# 对硬盘上的图片文件是否影响有待测试。还是建议为 strict_dlna=no。
strict_dlna=no
# default presentation url is http address on port 80
#presentation_url=http://www.mylan/index.php
# 通知时间间隔,默认895秒。
#notify_interval=900
# serial and model number the daemon will report to clients
# in its XML description
serial=12345678
model_number=1
# 指定 MiniSSDPd socket 的路径,好像没用到过。
#minissdpdsocket=/var/run/minissdpd.sock
# use different container as root of the tree
# possible values:
#   + "." - use standard container (this is the default)
#   + "B" - "Browse Directory"
#   + "M" - "Music"
#   + "V" - "Video"
#   + "P" - "Pictures"
#   + Or, you can specify the ObjectID of your desired root container (eg. 1$F for Music/Playlists)
# if you specify "B" and client device is audio-only then "Music/Folders" will be used as root
#root_container=.
# 按照指定的排序条件进行,忽略客户端的要求。
#force_sort_criteria=+upnp:class,+upnp:originalTrackNumber,+dc:title
# 允许最大同时连接数,注意:一个客户端会打开多个连接。
#max_connections=50


设置开机自动启动

[root@fedora ~]# systemctl enable minidlnad.service



启动服务

[root@fedora ~]# systemctl start minidlnad.service



重启服务

[root@fedora ~]# systemctl restart minidlnad.service



禁用开机自动启动

[root@fedora ~]# systemctl disenable minidlnad.service




如果遇到这个警告:

WARNING: Inotify max_user_watches [8192] is low or close to the number of used watches [4] and I do not have permission to increase this limit.  Please do so manually by writing a higher value into /proc/sys/fs/inotify/max_user_watches.


下面这些都能搞定。

[root@fedora ~]# echo 65538 > /proc/sys/fs/inotify/max_user_watches
[root@fedora ~]# sysctl fs.inotify.max_user_watches=66538

永久生效需新建编辑 /etc/sysctl.d/90-inotify.conf

[root@fedora ~]# vi /etc/sysctl.d/90-inotify.conf
fs.inotify.max_user_watches = 66538

如果遇到这个警告:

upnphttp.c:1054: warn: HTTP Connection closed unexpectedly


请检查电源管理软件设置包括但不限于 powertop、tuned等,一般是处于省电考虑把网卡给关掉了。

minidlna 适合服务器安装,依赖很少,只要改改配置文件就成。
其他类似的软件:
rygel 适合图形界面用户,有专门的图形界面配置,也很简单。
mediatomb 带有网页接口配置,适合服务器安装。

找着找着发现有个 kodi 的软件,搜索一下之后顿时眼前一亮,等有时间再玩玩了。