跳转至内容

Kodi

来自 ArchWiki

Kodi (前身为 XBMC) 是一款屡获殊荣的免费开源 (GPL) 软件媒体播放器和娱乐中心,可安装在 Linux, OSX, Windows, iOS 和 Android 上,拥有一个 10 英尺的用户界面,可与电视和遥控器配合使用。所有这些都可以直接从 CD/DVD 或硬盘播放。Kodi 还可以通过局域网 (LAN) 播放计算机上的多媒体,或直接从互联网播放媒体流。它还可以通过调谐器、后端服务器和 PVR 插件来播放和录制直播电视;更多信息可在 Kodi wiki 上找到。

安装

安装 kodi 包。想要 HDR 支持的用户应安装 kodi-gles 包。务必查看/安装 pacman 列出的可选依赖项以启用其他功能。

设置

这两个包都支持多种合成器,功能级别不同

GBM
目前功能最丰富。它是三种选择中唯一能够显示 HDR 内容的,由于它直接在 GPU 上运行而无需额外的 X11 层,因此对于独立操作来说可能是一个不错的选择。与其他后端相比,缺少功能的完整列表可以在 Kodi issue 14876 中找到。
Xorg
应被视为与 GBM 相当。
Wayland
已知的限制是分辨率和帧率在合成器中设置,而不是在 Kodi 的 GUI 中设置;并且目前不支持 VT 切换。

kodi-addons 组中的所有官方插件默认禁用,安装后需要在 Kodi 的插件菜单中启用。

硬件视频加速

启用并配置 硬件视频加速 以提高播放性能。安装后,硬件后端将在 _设置 > 播放器 > 视频_ 下显示。

注意 需要将级别设置为“高级”或“专家”才能显示所有选项。

运行

有两种通用用例

  1. /usr/bin/kodi 用于任何用户按需运行。将其视为系统上的任何其他程序一样使用。
  2. /usr/bin/kodi-standalone 用于作为唯一的图形应用程序运行,例如在 HTPC 上。有关更多信息,请参阅 #Running standalone

独立运行

使用独立模式有几个优势

  1. 可以定义一个非特权用户来运行 Kodi,并且该用户没有 shell 访问权限。
  2. 当与 systemd 单元(或等效程序,见下文)配对时,此设置使 Kodi 运行的盒子更像一个设备。
警告 仅选择以下列出的方法之一。

kodi-standalone 服务

kodi-standalone-serviceAUR 提供三个服务,并自动创建和配置非特权用户以独立模式运行 Kodi。

  • kodi-x11.service
  • kodi-gbm.service
  • kodi-wayland.service
  • 假定正确的视频驱动程序和可选的 硬件视频加速 是依赖项。
  • 创建的 kodi 用户的 home/userdata 目录是 /var/lib/kodi/
  • 某些用例可能需要将环境变量传递给服务。在 /etc/conf.d/kodi-standalone 中定义这些变量,它们将被传递给服务。
  • 如果 kodi-x11.service 启动失败,请参阅 Xorg#Rootless Xorg 以获取可能的解决方法(这很不常见)。
  • kodi-gbm.servicekodi-wayland.service 不允许退出到另一个虚拟控制台。
警告 请注意,这些服务是在 systemd 的 _system.slice_ 而不是 _user.slice_ 中运行 Kodi 的。为了使 Kodi 正常退出,请使用相应的 Kodi 操作来启动系统重启/关机,而不是使用 _systemctl_。否则将导致 Kodi 非正常退出,并可能丢失 GUI 设置、Kodi 运行时间等。

原则上,这与用户在系统管理员在未事先警告的情况下发出重启命令时进行工作而导致的数据丢失没有区别。虽然可以改为在 systemd 的 _user.slice_ 中运行 Kodi,但这样做会使 Kodi 难以使用 USB 挂载以及为 Kodi 会话使用 PulseAudio

  • Kodi GUI:在 Kodi GUI 的电源菜单下选择相应的选项。
  • 移动设备:Android/iOS 官方应用也可以执行这些操作(假设 Kodi 中启用了相应选项)。
  • CLI:使用 kodi-send(由 kodi-eventclients 提供)从 shell 发送 ShutDown()Reboot 命令。语法是:
$ kodi-send -a Reboot
$ kodi-send -a ShutDown()

使用 LightDM 的 Xsession

注意 此假设系统中存在一个名为 kodi 的 kodi 用户,并且存在以下文件,如所述。

要使用带有自动登录的 LightDM,请参阅 LightDM#Enabling autologinLightDM#Enabling interactive passwordless login。 _Kodi_ 包含 kodi.desktop 作为 xsession

/etc/lightdm/lightdm.conf
[Seat:seat0]
pam-service=lightdm-autologin
autologin-user=kodi
autologin-user-timeout=0
user-session=kodi

使用 NoDM 的 Xsession

Nodm 是一个自动显示管理器,它在系统启动时自动启动 X 会话。

通过创建一个 Kodi 用户(例如 useradd -mU kodi)并安装 nodm,我们只需在以下文件中指定 kodi 用户:

/etc/nodm.conf
NODM_USER=kodi
NODM_XSESSION=/home/kodi/.xinitrc

确保在 _xinitrc_ 文件中执行 kodi

注意 _.xinitrc_ 文件必须是可执行的,因此 kodi 用户的 home 不能以 noexec 选项挂载。

套接字激活 (Socket activation)

当用户从 Kore 等遥控器应用发出 Wakeup 命令,或连接到 Kodi 的 html 控制端口时,可以使用套接字激活来启动 Kodi。通过启动 kodi@user.socket(将 _user_ 替换为运行 Kodi 以启动的用户)来开始监听。

没有打包的 kodi@.servicekodi@.socket 文件,需要手动创建。根据设置,可以选择在 kodi@.socket 中更改端口。

/etc/systemd/system/kodi@.service
# This fails if the user does not have an X session.
[Unit]
Description=Launch Kodi on main display
Conflicts=kodi.socket

[Service]
Type=simple
Environment=DISPLAY=:0.0
Nice=-1
ExecStart=/usr/bin/su %i /usr/bin/kodi
ExecStopPost=/usr/bin/systemctl --no-block start kodi@%i.socket

[Install]
WantedBy=multi-user.target
/etc/systemd/system/kodi@.socket
[Unit]
Conflicts=kodi@%i.service

[Socket]
# Unset 
ListenStream=
# Start when receiving a TCP request on the http control port
ListenStream=8080
# start when receiving an UDP datagram (Wakeup/WOL)
ListenDatagram=9

[Install]
WantedBy=sockets.target

使用 LIRC / irexec 从遥控器启动

Kodi 可以配置为通过按键启动。用户需要 kodi-standalone-serviceAURlirc。这对于 24/7 运行并在需要时启动 Kodi 的设置很有用。

请参阅相应的 LIRC 文章,并创建功能齐全的遥控器设置。此外,还必须安装 kodi-standalone-serviceAUR 包。

生成文件 /var/lib/kodi/.lircrc,内容如下:

/var/lib/kodi/.lircrc
begin
prog = irexec
remote = devinput
button = KEY_MEDIA
config = pgrep kodi-standalone || /usr/bin/kodi-standalone -l /run/lirc/lircd
repeat = 0
end

根据遥控器上用于启动 Kodi 的按钮来调整 button。可以使用 _irw_(参阅 LIRC#Testing)来找出 remotebutton 的正确值。

kodi-xxx.service 创建一个 drop-in 文件。

/etc/systemd/system/kodi-xxx.service.d/lirc.conf
[Service]
ExecStart =
ExecStart = /usr/bin/irexec

启动 kodi-xxx.service启用它以便在启动时运行。

使用遥控器

Kodi 被设计为通过官方应用、物理遥控器或 USB/蓝牙键盘/鼠标进行遥控的媒体中心。

使用 Android 或 iOS 应用

Android 和 iOS 用户都可以使用官方应用(目前免费)来控制 Kodi,前提是 Kodi 已正确设置为支持。Kodi 和应用配置步骤的详细信息可在 _Official Kodi Remote_ 和 _Kore Manual_ 页面上找到:Official Kodi RemoteKore Manual

提示 Kore 提供了电源管理操作,可用于远程挂起/休眠网络唤醒 (WoL)。

使用物理遥控器

任何带有支持的红外接收器/遥控器的 PC 都可以使用 LIRC 甚至内核支持的模块来驱动它。配置特定遥控器与 lirc 的详细信息已包含在 LIRC 文章中。

为了与 Kodi 正常工作,需要一个将 lirc 事件映射到 Kodi 按键的文件。在 ~/.kodi/userdata/Lircmap.xml (注意 'L' 大写) 创建一个 XML 文件。

注意 使用 kodi-standalone-serviceAUR 启动 Kodi 的用户会发现 kodi 用户的 home (~) 在 /var/lib/kodi/ 下,应在上面的快捷方式中进行替换。另外,请确保如果以 root 用户创建此文件,完成后将其所有权设置为 kodi:kodi

Lircmap.xml 的格式如下:

<lircmap>
  <remote device="devicename">
      <XBMC_button>LIRC_button</XBMC_button>
      ...
  </remote>
</lircmap>
  • 设备名称 是 LIRC 如何称呼遥控器的名称。这通过 lircd.conf 中的 Name 指令设置,并且可以通过运行 irw 并按下遥控器上的几个按钮来查看。IRW 将报告按下按钮的名称,遥控器的名称将出现在行的末尾。
  • XBMC_button 是在 keymap.xml 中定义的按钮名称。
  • LIRC_buttonlircd.conf 中定义的名称。如果 lircd.conf 是使用 irrecord 自动生成的,则这些是为按钮选择的名称。有关更多信息,请参考 LIRC
  • 应参考 Kodi Wiki 上hosted的非常全面的 LIRC 页面,以获取有关此主题的更多帮助和信息,因为这超出了本文档的范围。

HDMI-CEC

使用支持的 USB-CEC 适配器,Kodi 可以用于自动打开和关闭电视及其他家庭影院设备。Kodi 的音量控制可以发送到支持的功放,用户可以从 Kodi 内部管理 DVD 或蓝光播放器,并将电视上的活动源重定向到任何需要的设备,所有这些都可通过一个遥控器完成。有关更多信息,请参阅 _官方 Kodi CEC wiki 页面_ 和 _libCEC FAQ_:official Kodi wiki page on CEClibCEC FAQ

安装 libcec

本文章或章节需要扩充。

原因:添加引用,说明需要将用户添加到这些组。(在 Talk:Kodi 中讨论)

连接后,USB-CEC 的 /dev 条目(通常是 /dev/ttyACM*)默认由 uucp 组拥有,因此为了使用该设备,运行 Kodi 的用户需要属于该组。有关如何将用户添加到组的说明,请参阅 Users and groups#Group management

  • 将所有将使用 Kodi 的用户添加到 uucp 用户组
注意 尝试在不属于上述组的情况下使用 USB-CEC 可能会导致问题,包括 Kodi 崩溃,因此请确保正确用户属于这两个组。

使用游戏手柄

安装 kodi-addon-peripheral-joystick

首先,确认游戏手柄被操作系统检测到,导航到 _Kodi 设置 > 输入 > 外设_ 并确认您的设备已列出。然后,进入 _配置连接的控制器_ 子菜单。Kodi 会提示您依次按下控制器上的按钮。映射完成后,游戏手柄应该就能控制 UI 了。

在多个节点间共享媒体和集中式数据库

如果同一网络上的多个 PC 正在运行 Kodi,它们可以配置为共享单个媒体库(视频和音乐)。这样做的优点是媒体和关键元数据存储在一个地方,并在网络上的所有节点之间共享/更新。例如,此设置的用户可以

  • 在一个房间停止观看电影或节目,然后在另一个房间自动完成观看。
  • 在所有节点上共享媒体的观看和未观看状态。
  • 简化设置,只需维护一个库。

此外,媒体本身可以位于一个空间中,从而允许客户端系统占用更少的空间(即不需要大的硬盘空间)。

要实现这一点需要几项内容:

  • 网络暴露的媒体(通过 Kodi 可以读取的协议,例如 NFS 或 Samba)。
  • 一个 MariaDB 服务器。
警告 共享数据库时,所有客户端都需要是同一主版本的 Kodi,因为数据库模式有版本要求。有关数据库版本列表,请参阅 database version table
注意 以下指南只是一个配置示例,并非旨在限制,而是说明性的。关键步骤已显示,但未提供详细讨论。

本指南使用以下假设,根据需要进行替换:

  • 媒体位于以下挂载点下:/mnt/shows /mnt/movies /mnt/music
  • 所有节点的网络地址都在 192.168.0.* 子网范围内。
  • 运行 NFS 导出和 MariaDB 数据库的机器的 IP 地址是 192.168.0.105。
  • 每个 Kodi 盒子称为一个节点。
  • 运行 Kodi 的 Linux 用户在所有节点上都是 'kodi'。

有关其他信息,请参阅 _官方 Kodi wiki_:official Kodi wiki

NFS 服务器导出示例

本节提供了一个使用导出的示例,有关安装和用法请参阅 NFS。Nexus v20.0 版本的 Kodi 包含对 NFSv4 导出的初步支持。一个限制是,NFSv4 导出的用户必须手动添加导出/浏览 NFS 网络,这目前不支持。用户在添加源后还需要重启 Kodi。使用 NFSv3 导出没有这些限制。

想要纯 NFSv4 设置的用户应参阅 NFS#Starting the server 以保持整洁。当然,这仅适用于运行 NFSv4 导出的机器。

注意 LAN 上只有一个盒子需要服务内容,因此不要为每个节点重复此操作。以下示例假定用户正在运行 Arch Linux,但任何 NFS 服务器都可以工作,无论是 Linux 还是 BSD 等。

为每个要共享的媒体目录在 NFS 根目录中创建一个空目录。例如:

# mkdir -p /srv/nfs/{shows,movies,music}

绑定挂载媒体目录到 /srv/nfs/ 中的空目录。

以下示例适用于 NFSv3 导出

/etc/exports.d/kodi.exports
/srv/nfs          192.168.0.0/24(ro,fsid=0,no_subtree_check)
/srv/nfs/shows    192.168.0.0/24(ro,no_subtree_check,insecure)
/srv/nfs/movies   192.168.0.0/24(ro,no_subtree_check,insecure)
/srv/nfs/music    192.168.0.0/24(ro,no_subtree_check,insecure)

以下示例适用于 NFSv4 导出

/etc/exports.d/kodi.exports
/srv/nfs          192.168.0.0/24(ro,fsid=0,no_subtree_check,insecure,async,all_squash,pnfs,anonuid=99,anongid=99)
/srv/nfs/shows    192.168.0.0/24(ro,no_subtree_check,insecure,async,all_squash,pnfs,anonuid=99,anongid=99)
/srv/nfs/movies   192.168.0.0/24(ro,no_subtree_check,insecure,async,all_squash,pnfs,anonuid=99,anongid=99)
/srv/nfs/music    192.168.0.0/24(ro,no_subtree_check,insecure,async,all_squash,pnfs,anonuid=99,anongid=99)

安装和设置 MariaDB 服务器

有关安装和配置说明,请参阅 MariaDB

要为 Kodi 创建数据库,请使用以下命令:

$ mysql -u root -p
   <<enter the mariadb root password assigned in the first step>>
MariaDB [(none)]> CREATE USER 'kodi' IDENTIFIED BY 'kodi';
MariaDB [(none)]> GRANT ALL ON *.* TO 'kodi';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> \q

设置 Kodi 以使用 MariaDB 库和 NFS 导出

设置 Kodi 以使用公共 SQL 数据库

要告诉 Kodi 使用公共数据库,请确保 Kodi 未运行,然后创建以下文件:

~/.kodi/userdata/advancedsettings.xml
<advancedsettings>
  <videodatabase>
    <type>mysql</type>
    <host>192.168.0.105</host>
    <port>3306</port>
    <user>kodi</user>
    <pass>kodi</pass>
  </videodatabase>

  <musicdatabase>
    <type>mysql</type>
    <host>192.168.0.105</host>
    <port>3306</port>
    <user>kodi</user>
    <pass>kodi</pass>
  </musicdatabase>

  <videolibrary>
    <importwatchedstate>true</importwatchedstate>
    <importresumepoint>true</importresumepoint>
  </videolibrary>
</advancedsettings>
提示 如果使用 kodi-standalone-serviceAUR,则配置文件的默认路径为 /var/lib/kodi/.kodi,请务必将新创建的文件所有权更改为 kodi 用户和组,即 chown kodi:kodi /var/lib/kodi/.kodi/userdata/advancedsettings.xml

设置网络共享

对于 NFSv3 共享,加载 Kodi 并通过在界面 _视频 > 文件 > 添加视频 > 浏览 > 网络文件系统 (NFS)_ 中导航来定义与导出对应的网络共享。

几秒钟后,应出现对应于 NFS 服务器的 IP 地址。

从列表中选择 /srv/nfs/shows 共享,然后从右侧菜单中选择 _确定_。将此共享分配给 _电视节目_ 类别,以设置合适的刮削器并将正确的元数据填充到 SQL 数据库中。

对“电影”和“音乐”重复此浏览过程,然后正确配置后退出 Kodi。此时,SQL 表应该已被创建。

对于 NFSv4 共享,用户无法浏览网络,但必须在 _视频 > 文件 > 添加视频 > 浏览 > 添加网络位置..._ 下手动定义它们。在那里,将协议更改为“网络文件系统 (NFS)”,然后定义服务器地址(数字 IP 或主机名),然后定义远程路径部分下的共享。对每个导出重复此操作。

注意 即使 Kodi 运行在运行 NFS 导出和 SQL 服务器的同一台机器上,用户也必须仅通过 nfs 共享来设置媒体。

将配置克隆到网络上的其他节点

要在网络上设置另一个 Kodi 节点来使用此库,只需将 ~/.kodi/userdata/advancedsettings.xml 复制到该机器并重启 Kodi。无需在新的 Kodi 节点上复制任何其他文件或执行任何其他设置步骤。NFS 导出、节目元数据、任何停止/开始时间、观看状态等都存储在 SQL 表中。

注意 用户可以选择定义由 Kodi 数据库未管理的其他媒体源,但这些源将特定于该特定节点。

技巧与提示

记录观看内容

使用 kodi-loggerAUR 跟踪 Kodi 上观看的每个视频。

加速视频播放(音画同步)最高 1.5 倍

要启用带音频/视频同步的加速和减速(0.8 倍 - 1.5 倍),请执行以下操作:

  • 创建以下文件,将 [] 键映射到 tempo downtempo up 操作:
~/.kodi/userdata/keymaps/custom.xml
<keymap>
  <FullscreenVideo>
    <keyboard>
      <opensquarebracket>PlayerControl(tempodown)</opensquarebracket>
      <closesquarebracket>PlayerControl(tempoup)</closesquarebracket>
    </keyboard>
  </FullscreenVideo>
  <VideoMenu>
    <keyboard>
      <opensquarebracket>PlayerControl(tempodown)</opensquarebracket>
      <closesquarebracket>PlayerControl(tempoup)</closesquarebracket>
    </keyboard>
  </VideoMenu>
</keymap>
  • 重启 Kodi,它将读取这些更改。
  • 导航到 _系统 > 播放器 > 视频 > 播放_ 并启用“同步播放到显示器”选项。
注意 以下影响 GBM(但不影响 X11)的错误是由启用此选项触发的。该错误表现为零星的 A/V 同步错误,并在 kodi.log 中出现类似以下条目:WARNING <general>: ActiveAE - large audio sync error: -89449.339487,请参阅 upstream bug #22625

修改观看和续播点的默认值

一些用户可能希望更改 Kodi 用于创建续播点/认为视频“已观看”的阈值。通过编辑 ~/.kodi/userdata/advancedsettings.xml 来实现,插入以下三个 XML 字段:

ignoresecondsatstart
在记录开始点之前等待的秒数。如果用户观看的值低于定义的那个,则不会记录开始点。默认为 180。
playcountminimumpercent
被视为已观看的播放总时长的百分比。如果用户观看视频的时长超过此数字但未观看完整视频,则在停止后将其视为已观看,并且之前记录的任何续播点都会被删除,最后,视频会被标记为已观看。默认为 90。
ignorepercentatend
视频末尾的播放总时长的百分比,用于忽略创建续播点。这与上一个设置相关,但它考虑了视频的最后 x%。如果用户观看的内容足以进入文件的此区域,则不会保存续播点,并且视频会被标记为已观看。默认为 8。
~/.kodi/userdata/advancedsettings.xml
<advancedsettings>
  <video>
    <!-- see https://kodi.wiki/view/HOW-TO:Modify_automatic_watch_and_resume_points -->
    <ignoresecondsatstart>10</ignoresecondsatstart>
    <playcountminimumpercent>90</playcountminimumpercent>
    <ignorepercentatend>8</ignorepercentatend>
  </video>
</advancedsettings>

Kodi 的命令行接口

  • texturecacheAUR 可以处理库管理的许多方面,从清理未使用的图像到搜索,再到查询当前正在播放的内容。

使用 Kodi 查看安全摄像头流(rtsp 或 rtmp)

由于 Kodi 使用 ffmpeg 进行视频播放,因此它能够播放 rtsp 和 rtmp 等流。要做到这一点,只需在 Kodi 用户可以访问的文件系统中创建一个包含流的 txt 文件。例如:

$ cat front-door.strm
rtsp://username:password@10.1.10.101

可选的元数据,如封面艺术和摘要,也可以与 _ .strm _ 文件关联,就像库中的普通条目一样,使用 NFO 文件。

UPnP 和 DLNA

转到 _设置 > 服务 > UPnP/DLNA_ 并切换 _启用 UPnP 支持_。

调整 CD/DVD 驱动器速度

来自 util-linux 包的 _eject_ 程序对此做得很好,但它的设置一旦更换介质就会被清除。

这个 udev 规则永久降低了速度。

/etc/udev/rules.d/dvd-speed.rules
KERNEL=="sr0", ACTION=="change", ENV{DISK_MEDIA_CHANGE}=="1", RUN+="/usr/bin/eject -x 2 /dev/sr0"

sr0 替换为光驱的设备名称。如果偏好是 4 倍速而不是 2 倍速,则将 -x 2 替换为 -x 4

创建文件后,使用以下命令重新加载 udev 规则:

# udevadm control --reload

为 Web 服务器使用端口 80

Kodi 有一个可以通过 Web 界面进行交互的 Web 服务。默认情况下,它使用端口 8080,因为 80 需要 root 权限。使用以下命令允许它使用低端口号:

# setcap 'cap_net_bind_service=+ep' /usr/lib/kodi/kodi.bin

重启 Kodi,并在配置菜单( _服务 > Web 服务器 > 端口_)中将端口设置为 80

从命令行设置 Wireplumber HDMI 音量

Kodi 界面在 _设置 -> 系统 -> 音频_ 以及播放过程中提供音量控制,但 Wireplumber/Pipewire 级别的数字输出也有一个音量级别。在无头系统上,可以在 alsamixer 中调整许多音频音量级别,但 HDMI 或数字输出通常只有开关而没有级别。

要通过 shell 在独立的媒体中心设置中调整 HDMI 接口的音频音量,可以按照以下步骤操作:

本文或本章节的准确性存在争议。

原因:kodi 用户设置登录 shell 对于使用 su/sudo 不是必需的。(在 Talk:Kodi 中讨论)
  1. kodi 用户提供一个有效的 shell,如果它被分配为 nologin,这在一个独立的媒体中心设置中应该是如此。
  2. 通过 HDMI 开始播放视频,以便正确的输出出现在 wpctl status 中。
  3. 登录到机器并使用 su 切换到 kodi 用户。
  4. 设置 XDG_RUNTIME_DIR 环境变量:export XDG_RUNTIME_DIR="/run/user/${UID}"
  5. 使用 wpctl status 检查输出,它们的编号和音量级别。
  6. 将正确输出的音量设置为 100%:wpctl set-volume sink_number 100%
  7. kodi 用户的 shell 重置为 /usr/bin/nologin

使用 ALSA

如果 PulseAudioPipeWire 工作不正常,请尝试通过用 --audio-backend=alsa 标志启动 Kodi 来强制使用 ALSA

永久设置音频后端的一种方法是创建自定义 systemd 单元,或者,或者,编辑来自 kodi-standalone-serviceAUR 的一个。

Kodi 21+ 中的音频直通输出设备列表

通过启用直通,可以允许外部接收器或条形音箱解码音频。这对于编码为 TrueHD 或 Atmos 的文件很有用。如果使用 PulseAudio,请遵循 https://kodi.wiki/view/PulseAudio 上的说明,首先在 PulseAudio 中启用直通。完成后,相应的直通选项应出现在 Kodi 中。当通过使用 --audio-backend=alsa 启动 Kodi 来强制 ALSA 时,直通选项将自动出现在 Kodi 中。

  • PulseAudio 要求 Kodi 的输出设置为 2 声道。编码为非直通格式的音频将仅作为立体声音频发送。使用 ALSA 支持直通和解码后的环绕音频信号传输。
  • PulseAudio 不支持 TrueHD、DTS-MA 或 Atmos 直通。请使用 ALSA 将它们通过接收器进行直通。

另一种在不禁用 PulseAudio 或 pipewire-pulse 的情况下实现 TrueHD 和 DTS-MA 直通的方法是使用 MPV 等外部播放器。首先创建文件 ~/.kodi/userdata/playercorefactory.xml,然后将以下内容粘贴到其中。

<playercorefactory>
  <players>
    <player name="MPV" type="ExternalPlayer" audio="false" video="true">
      <filename>/usr/bin/mpv</filename>
      <args>--fs=yes "{1}"</args>
      <hidexbmc>true</hidexbmc>
    </player>
  </players>
  <rules action="prepend">
    <rule video="true" player="MPV"/>
  </rules>
</playercorefactory>

本文档或章节建议合并到 mpv

注意:似乎部分重复了 mpv#指定音频输出mpv#HD 音频直通。(请在 Talk:Kodi 中讨论)

MPV 现在应该是 Kodi 的默认媒体播放器。要为 MPV 设置正确的音频输出设备,请使用以下命令显示可用音频设备列表。

$ mpv --audio-device=help

例如:

alsa/hdmi:CARD=NVidia,DEV=1

现在编辑 ~/.config/mpv/mpv.conf 并添加以下行。

audio-spdif=ac3,eac3,dts-hd,truehd
audio-device=alsa/hdmi:CARD=NVidia,DEV=1

要实现刷新率自动切换,请创建以下文件夹 ~/.config/mpv/scripts,然后下载并将 mpv-plugin-xrandr/xrandr.lua 放入该文件夹。

Kodi JSON-RPC API,用于从外部工具修改设置

用户可以通过使用 JSON-RPC API 直接与 Kodi 进行交互,无论是通过命令行还是 Python 脚本等。

例如,使用 curl

$ curl -v -H "Content-type: application/json" -d \
  '{"jsonrpc":"2.0","id":1,"method":"Settings.GetSettingValue","params":{"setting":"audiooutput.audiodevice"}}' \
  https://:8080/jsonrpc -u xbmc:xbmc

另一个例子是 这个 Python 脚本,它只是在两组设置之间切换,在本例中,是在 HDMI 和光纤输出之间来回切换音频源。

Wi-Fi 延迟启动的修复

本文或本节正考虑移除。

原因:重复了 systemd-networkd#systemd-networkd-wait-online。(请在 Talk:Kodi 中讨论)

如果仅在 Wi-Fi 下运行(有线网络未插拔),并且在 #跨多节点共享媒体和集中式数据库时,Kodi 可能会在无线网络启动之前启动,这将导致无法连接到共享和 SQL 服务器。假设网络由 systemd-networkd 管理,则可以通过使用 drop-in 文件来解决此问题。

/etc/systemd/system/systemd-networkd-wait-online.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/lib/systemd/systemd-networkd-wait-online --ignore eth0

在窗口管理器中运行 Kodi

窗口管理器中运行 Kodi 的用户可能会在退出时看到黑屏。要解决此问题,请尝试切换到另一个 TTY。一种可能的解决方案是使用以下脚本运行 Kodi(以 root 用户身份运行)。

kodi.sh
#!/bin/sh
kodi-standalone
sudo chvt 2 
sleep 1
sudo chvt 1

为确保 sudo 不会提示输入 chvt 的密码,请将以下行添加到 sudoers 文件中。

/etc/sudoers
UserNameHere ALL=NOPASSWD: /usr/bin/chvt

USB DAC 不工作

USB DAC/声卡用户在从音频设置中选择它时,可能会遇到声音失真/咔哒声/爆音或根本没有声音的情况。可能的修复方法。

打开 guisettings.xml(如果使用提供的 kodi-xxx.service,它应该位于 /var/lib/kodi/.kodi/userdata/ 下),然后进行更改。

<processquality default="true">101</processquality>

更改为

<processquality default="false">100</processquality>

虚拟文件系统支持

Kodi 提供插件,用于从 Kodi 内部访问各种虚拟文件系统。可以使用 kodi-addon-vfs-rarAUR 访问 RAR 存档。可以使用 kodi-addon-vfs-sftpAUR 访问 SFTP 共享。可以使用 kodi-addon-vfs-sacdAUR 访问 Super Audio CD ISO 文件。为了能够使用这些插件,必须在 Kodi 的插件管理器中启用它们。

播放时阻止 KDE 自动休眠

通过使用插件 ossscreensavermanager 并结合使用 kwriteconfig6 的命令,可以在播放期间阻止 KDE 的省电功能。安装插件,然后在其高级设置中,在“用于暂停屏幕保护程序的命令”下写入。

kwriteconfig6 --file powermanagementprofilesrc --group AC --group SuspendSession --key idleTime 1800000

在“用于恢复屏幕保护程序的命令”下,写入。

kwriteconfig6 --file powermanagementprofilesrc --group AC --group SuspendSession --key idleTime 86400000

在此示例中,系统在播放期间会在 360 分钟后暂停,在没有播放的情况下会在 30 分钟后暂停。

故障排除

访问 Kodi 日志

如果发生错误,首先可以开始调查的地方是 ~/.kodi/temp/kodi.log

全屏模式将 Kodi 拉伸到多个显示器

对于多显示器设置,Kodi 可能会默认将屏幕拉伸到所有屏幕。可以通过将 环境变量 SDL_VIDEO_FULLSCREEN_HEAD 设置为所需目标显示器的编号来将全屏模式限制在一个显示器上。例如,要在显示器 0 上显示 Kodi,请将以下行添加到 Kodi 用户的 ~/.bashrc 配置中。

SDL_VIDEO_FULLSCREEN_HEAD=0
注意:鼠标光标将在 Kodi 屏幕内保持。

H.264 播放仅使用一个核心

提示:默认情况下,在播放期间按 O 键可显示编解码器信息和 CPU 使用率。有关此覆盖的更多信息,请参阅 https://kodi.wiki/view/Player_process_info

如果硬件不使用或无法使用硬件加速,请禁用它并明确将视频解码设置为软件。这是因为 H.264 解码仅在视频解码设置为软件时才支持多线程

要实现这一点,请转到 *系统设置 > 视频*。将 设置级别 设置为 高级专家。然后转到 *加速* 并将 解码方法 设置为 软件

Kodi 退出时挂起,完全占用一个 CPU 核心,UI 无响应

此问题可能由第三方插件引起,其终止存在问题[1][2]

解决方法:找到正确的 UI 描述文件(DialogButtonMenu.xml)并将退出按钮类型从内部 Kodi 的 Quit() 函数调用调整为从外部系统向 Kodi 发送信号。以下是一行命令,可以修改默认 Kodi 包中的任何皮肤。

# find /usr/share/kodi/addons/skin.* -name DialogButtonMenu.xml -exec sed -i 's%<onclick>Quit()</onclick>%<onclick>System.Exec ("killall --signal SIGHUP kodi.bin")</onclick>%' {} \;

kodi-standalone 无法播放 DVD

如果 kodi-standalone 无法播放 DVD,安装 udisks 可能会有帮助。

参见

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.