我正在开发一个MiniDLNA服务器来通过WiFi传输媒体。现有文件正确显示。但是,当我向媒体文件夹添加新文件时,MiniDLNA客户端不会更新更改。我也尝试重新启动服务器,但它没有反映出这些变化。
我更改了inotify_interval = 60
但它仍然没有更新files.db
这是MiniDLNA媒体列表数据库。如果我删除此数据库并重新启动服务器,则会显示更改。
有谁知道问题可能是什么?
答案 0 :(得分:39)
总之,让MiniDLNA重新扫描所有媒体文件的最可靠方法是发出以下命令集:
$ sudo minidlnad -R
$ sudo service minidlna restart
但是,MiniDLNA经常会在服务器上运行。以下是在此类服务器上请求重新扫描的客户端脚本:
#!/usr/bin/env bash
ssh -t server.on.lan 'sudo minidlnad -R && sudo service minidlna restart'
答案 1 :(得分:28)
AzP已经提供了大部分信息,但有些信息不正确。
首先,没有这样的选项inotify_interval
。唯一存在的选项是notify_interval
,与inotify
无关。
因此,为了澄清,notify_interval
控制(迷你)dlna服务器在网络中宣布自己的频率。默认值895意味着它将每15分钟宣布一次,这意味着客户最多需要15分钟才能找到服务器。我个人使用1-5分钟,具体取决于客户在网络中的波动性。
在获取minidlna以查找已添加的文件方面,有两个选项:
files.db
,并且在传递-R
参数时重新启动minidlna,这会强制完全重新扫描并从头开始构建数据库。从版本1.2.0开始,现在还有-r
参数执行重建操作。这将保留所有现有数据库,并分别删除和添加新旧记录。inotify
并重新启动minidlna来依赖inotify=yes
个事件。如果inotify
设置为=no
,则更新文件数据库的唯一选项是强制完全重新扫描。此外,为了使inotify
正常工作,文件系统必须支持inotify
个事件,而在大多数远程文件系统中并非如此。如果您在minidlna上运行NFS,则不会看到任何inotify事件,因为这些事件是在服务器端生成的,而不是在客户端上生成的。
最后,即使inotify
正在运行并且受文件系统支持,运行minidlna的用户也必须能够读取该文件,否则将无法检索必要的元数据。在这种情况下,日志文件(通常为/var/log/minidlna.log
)应包含有用的信息。
答案 2 :(得分:5)
MiniDLNA使用inotify
,这是Linux内核中的一项功能,用于发现文件系统上特定文件和目录的更改。要使其工作,您需要在内核中启用inotify支持。
notify_interval
(注意缺少一个领先的'i'),据我所知,只有在禁用inotify的情况下才会使用。要使用notify_interval
(即让服务器“轮询”文件系统以进行更改而不是自动通知它们),您必须禁用inotify
功能。
这就是我在/etc/minidlna.conf
中的看法:
# set this to no to disable inotify monitoring to automatically discover new files
# note: the default is yes
inotify=yes
确保在内核中启用了inotify。
如果未启用,并且您不想启用它,则强制重新扫描是强制MiniDLNA重新扫描驱动器的方法。
答案 3 :(得分:2)
我最近发现,如果媒体文件是硬链接,minidlna不会更新数据库。如果您希望这些文件显示在数据库中,则需要完全重新扫描。
例如:如果你有/home/movies/foo.mkv文件和/home/minidlna/video/foo.mkv中的硬链接,其中'/ home / minidlna'是你的minidlna共享,你将不得不这样做重新扫描直到该文件出现在db(以及随后的dlna客户端)中。
我仍在努力寻找解决方法。如果有人有任何意见,那就非常欢迎。
答案 4 :(得分:1)
在sourceforge上有一个minidlna源代码的补丁,它不能完全重新扫描,而是一种增量扫描。这很好,但是在一些更新的版本中,补丁被打破了。见Link to SF
此致 格里
答案 5 :(得分:-1)
使用crontab根解析
10 * * * * /usr/bin/minidlnad -r