Gerbera
Gerbera 是一个开源的 UPnP 媒体服务器,带有 Web 界面。它允许您通过家庭网络流式传输您的数字媒体,并在各种 UPnP 兼容设备上收听/观看。它是现已停止维护的 MediaTomb 的一个分支。
安装
默认情况下,Gerbera 会设置自己的 sqlite 数据库。或者,要将其与外部 MariaDB 服务器一起使用,请在构建之前取消注释包含 WITH_MYSQL
的行,并参阅 官方文档 以获取更多信息。
配置
Gerbera 可以配置为按用户运行或作为系统范围的守护进程运行。
用户级别
要为当前用户创建配置文件
$ mkdir -p ~/.config/gerbera $ gerbera --create-config > ~/.config/gerbera/config.xml
然后运行 gerbera 以启动它。
系统级别
系统范围的配置文件应由 gerbera 用户创建
[gerbera]$ gerbera --create-config > /etc/gerbera/config.xml
然后启动/启用 gerbera.service
以启动守护进程。
使用
守护进程默认监听端口 50500
。要访问 Web 界面并开始导入媒体,请在您喜欢的浏览器中导航至 https://127.0.0.1:50500/。
如果运行的是用户级别的实例,则默认端口为 49152
。但是,端口可能会在服务器重启后更改。Web 界面的 URL 在启动期间输出。用户也可以手动指定端口
$ gerbera -p 50500
在媒体播放器中隐藏完整路径
默认情况下,当设备浏览文件夹时,将显示完整的目录路径。
例如,如果您添加目录 /media/my_media/video_data/videos/movies
,任何连接的用户都必须从根目录导航到“movies”目录。
要隐藏所有这些,并且仅显示添加的目录,您可以更改导入脚本。
例如,此脚本将自动截断变量 video_root 中指定的整个目录结构。直接在视频根路径下添加的任何目录都将在 UPnP 设备上从该文件夹而不是 /
开始显示。
function addVideo(obj) { var video_root = "/media/main_core/Server_Core_Folder/FTP_Services/Media/"; var absolute_path = obj.location; var relative_path = absolute_path; if(absolute_path.indexOf(video_root) == 0) relative_path = absolute_path.replace(video_root, "") var chain = new Array(); var pathSplit = relative_path.split("/"); for(var i = 0; i < pathSplit.length - 1; i++) chain.push(pathSplit[i]); addCdsObject(obj, createContainerChain(chain)); }
要同时从 UPnP 设备目录列表中隐藏默认的 PC Directory 文件夹,请将以下内容直接添加到 config.xml
文件的 server 节点下。
<pc-directory upnp-hide="yes"/>
Playstation 3 支持
以下说明假定 MediaTomb 作为系统范围的守护进程运行。对于用户级别的安装,配置文件的位置将有所不同(请参见上文)。
对于 PlayStation 3 支持,用户必须设置 <protocolInfo extend="yes"/>
。还应取消注释 “avi” mimetype 映射以获得 DivX 支持。
/var/lib/mediatomb/.mediatomb/config.xml
... <protocolInfo extend="yes"/> ... <map from="avi" to="video/divx"/> ...
当将媒体导入数据库时,MediaTomb 将创建一个由 <virtual-layout type="...">
选项定义的虚拟容器布局。也就是说,媒体将根据元数据(专辑、艺术家等)通过创建虚拟数据库对象进行组织。如果您的媒体已在文件系统上组织好,您可以禁用此功能以显着提高导入性能
/var/lib/mediatomb/.mediatomb/config.xml
... <virtual-layout type="disabled"/> ...
用户可以自定义导入脚本以微调虚拟布局。MediaTomb wiki 的脚本编写部分提供了几个示例。从 /usr/share/mediatomb/js/import.js
提供的内置脚本开始
$ cp /usr/share/mediatomb/js/import.js /var/lib/mediatomb/.mediatomb/
... 并根据需要编辑 /var/lib/mediatomb/.mediatomb/import.js
。要使用自定义脚本,用户必须设置 <virtual-layout type="js">
并指定脚本的位置。
/var/lib/mediatomb/.mediatomb/config.xml
... <virtual-layout type="js"> <import-script>/var/lib/mediatomb/.mediatomb/import.js</import-script> </virtual-layout> ...
您可能需要先指定网络接口,MediaTomb 才能被识别
/var/lib/mediatomb/.mediatomb/config.xml
<server> ... <interface>network interface</interface> ... </server>
在根据您的喜好配置 MediaTomb 后,重启 mediatomb.service
。
故障排除
即使在 Web 界面中添加了内容,Gerbera 也没有提供内容
请注意,运行 Gerbera 的用户必须对要添加的文件具有读取权限才能提供它们。
因此,如果 Gerbera 在用户“gerbera”下运行,则(视频)文件要么必须由用户“gerbera”拥有并可读,要么文件和用户“gerbera”必须属于同一组,并且文件是可读的(“gerbera”必须在文件所属的组中(然后文件需要设置组的读取权限))。
客户端在 30 分钟后失去连接
显然,这与 SSNP 消息仅发送一次有关,这导致客户端在 30 分钟后断开连接,因为它认为服务器已消失。
在 config.xml
中添加 alive 标签
<alive>180</alive>
默认为 180
。请参阅 https://docs.gerbera.io/en/stable/config-server.html#alive。