有时候需要把一些文件比如图片、视频、音乐放在一个服务器上共享给所有设备,比如电脑、手机等使用。在Linux环境比如ubuntu、debian、树莓派等搭建一个DLNA服务器,把资源分享出去就可以实现这个需求了。本文写的是使用的是minidlna这个软件包配置一个DLNA服务。


安装

sudo apt install minidlna



配置

sudo vi /etc/default/minidlna,添加配置USER="root"
sudo vi /etc/minidlna.conf配置参数说明:

参数作用举例
port使用的端口号port=8200
media_dir媒体目录,可设置多个目录首,大写的首字母代表类型A(audio音频),V(video视频),P(picture图像)media_dir=A,/home/xxx/files/dlna/music
media_dir=P,/home/xxx/files/dlna/pictures
media_dir=V,/home/xxx/files/dlna/videos
friendly_name在其它设备中看到的本DLNA服务设备名称friendly_name=dlna_server
inotify如果为值yes将自动发现扫描媒体目录中的新文件inotify=yes
inotify_interval扫描检测文件变动周期,单位为秒。该配置和inotify互斥,只能配置其中一项inotify_interval=60



minidlna常用命令

  1. 启动:systemctl start minidlna
  2. 停止:systemctl stop minidlna
  3. 查看状态:systemctl status minidlna或者/etc/init.d/minidlna status
  4. 手动更新minidlna数据库并重启服务:sudo minidlnad -R && sudo service minidlna restart
  5. 强行修改配置:sudo service minidlna force-reload或者sudo /etc/init.d/minidlna force-reload



管理

访问:http://ip:8200,ip就是你开启DLNA服务所在的设备ip。打开可以看到如下界面,说明服务开启成功。
image.png



可能遇到的问题

连接上了但是看不到任何文件,可能是哪个配置项错了,比如我就把media_dir写成了media,另外如果执行命令,一定要注意是否有error的信息,有要仔细看。



APP

可以使用以下App连接搭建的DLNA服务器,浏览音乐、视频、图片:

  1. 海贝音乐
  2. Allconnect
  3. BubbleUPnP



[转载]详细配置文件说明/命令说明

# HTTP 流量端口 (描述,SOAP,媒体传输)
port=8200
 
# 服务的网络接口,逗号分隔
#network_interface=eth0
 
# 指定以哪个用户运行(用户名或UID)
#user=jmaggard
 
# 设置要扫描的目录
# * 如果你有多个目录,你可以添加多行 media_dir=
# * 如果你要限制 media_dir 目录特定文件类型,
可以在目前名前添加类型标识:
#   + "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
 
# 将媒体目录内容合并到根目录
# 注意:默认为 no
#merge_media_dirs=no
 
# 自定义名称
#friendly_name=My DLNA Server
 
# 设置 MiniDLNA 数据和专辑封面缓存目录
#db_dir=/var/cache/minidlna
 
# 设置 MiniDLNA 日志目录
#log_dir=/var/log
 
# 设置日志记录级别
# 级别有: off, fatal, error, warn, info, or 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
 
# 监视文件变动
# 注意:默认值是 yes
inotify=yes
 
# 是否支持将 .jpg 和 .mp3文件传输到支持 HMO的 TiVo上。
enable_tivo=yes
 
# 设置 beacon 以传统广播方式发现
# 默认 bonjour,如果 avahi 可用
tivo_discovery=bonjour
 
# 使用严格的 DLNA 标准
# * 这将允许服务端缩小非常大的 JPEG图像
#   这可能影响索尼 Sony DLNA 产品性能
strict_dlna=no
 
# 默认演示文稿地址 (默认在 80端口上)
#presentation_url=http://www.mylan/index.php
 
# 通知间隔
# 默认 895 秒
notify_interval=900
 
# 在XML描述中向客户端报告序列号和型号
serial=12345678
model_number=1
 
# MiniSSDPd 套接字路径
#minissdpdsocket=/var/run/minissdpd.sock
 
# 使用不同的目录做为根容器
# 值有:
#   + "." - 标准容器(默认值)
#   + "B" - "浏览目录"
#   + "M" - "音乐"
#   + "V" - "视频"
#   + "P" - "图片"
#   + 或者,你可以指定根容器的 ObjectID(如,1$F 是 Music/Playlists)
# 如果你指定为 "B" 并且客户端设备是音频,则,"Music/Folders" 将 将做为根
#root_container=.
 
# 无论客户端传递的 SortCriteria 如何,始终强制 SortCriteria 为此值
#force_sort_criteria=+upnp:class,+upnp:originalTrackNumber,+dc:title
 
# 最大同时连接数
# 注意:许多客户端在流式传输时会打开多个连接
#max_connections=50
 
# 允许访问媒体目录外的文件
# 如果媒体目录中包含符号链接,设置为 no 将不允许访问媒体目录以外的文件。
#wide_links=no
[root@host www]# minidlnad -h
用法:
        minidlnad [-d] [-v] [-f config_file] [-p port]
                [-i network_interface] [-u uid_to_run_as]
                [-t notify_interval] [-P pid_filename]
                [-s serial] [-m model_number]
                [-w url] [-r] [-R] [-L] [-S] [-V] [-h]
 
注:
        通知以秒为单位,默认为 895 秒。
        默认 pid 文件在 /var/run/minidlna/minidlna.pid。
        使用 -d 时,minidlna 将在调试模式下运行(而不是后台运行)。
        -w 设置展示 URL,默认在 http 的 80 端口
        -v 启用详细输出
        -h 显示帮助并退出
        -r 强制重新扫描
        -R 强制重建
        -L 不创建播放列表
        -S 更改 systemd 行为
        -V 打印版本号

Q.E.D.


做一个热爱生活的人