Gerbera

出自 ArchWiki

Gerbera 是一个开源的 UPnP 媒体服务器,带有 Web 界面。它允许您通过家庭网络流式传输您的数字媒体,并在各种 UPnP 兼容设备上收听/观看。它是现已停止维护的 MediaTomb 的一个分支。

安装

安装 gerbera 软件包。

默认情况下,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

在媒体播放器中隐藏完整路径

此条目或章节已过时。

原因: 这是为 MediaTomb 编写的。它仍然适用于 Gerbera 吗?(在 Talk:Gerbera 中讨论)

默认情况下,当设备浏览文件夹时,将显示完整的目录路径。

例如,如果您添加目录 /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 编写的。它仍然适用于 Gerbera 吗?(在 Talk:Gerbera 中讨论)

以下说明假定 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