接前文 PVE 直接安装最新版 Kodi
为Kodi适配遥控器
虽然安装好Kodi后,可以在手机上使用Yatse、Kore等软件来遥控Kodi(当然这需要在Kodi设置中启用“允许通过 HTTP 远程控制”),但家人、朋友怎么办,难道为每个人都装一下?所以还是需要有一个实体遥控器来控制Kodi。
有两种方式,一是2.4G无线遥控器,一是蓝牙遥控器,经过本人踩坑,我更推荐2.4G无线遥控器。对比如下:
-
蓝牙遥控器即使设置好了永远保持连接,但毕竟需要蓝牙适配器和蓝牙遥控器两个配合,事实上在我的环境中5分钟左右遥控器没有动作二者就失联了,总是需要多按几次遥控器才会有反应。而2.4G无线遥控器就没这问题,它自带接收器,不存在配合问题。
-
如果买的是2.4G无线飞鼠遥控器的话,还可以点出鼠标来,在普通上下左右键不好操作的时候鼠标就比较好用了。
-
2.4G飞鼠遥控器成本25块,而蓝牙适配器加蓝牙遥控器加起来要50块,显然前者更划算。
-
如果需要蓝牙连接多个设备,比如还要连接音响、耳机、键盘、鼠标等等啥的,再考虑用蓝牙的方式,因为适配器可以同时接收多个蓝牙设备信号,而2.4G无线遥控器和接收器就只能一对一。
2.4G无线遥控器
谈不上适配,如果是直接在PVE中安装Kodi,插上USB接收器就能用了。如果是直通显卡和声卡给 LibreELEC/CoreELEC 虚拟机的话,就设置下USB接口直通。其他方式安装的Kodi/LibreELEC/CoreELEC,只要该系统能访问USB接口,就可以用这种方式。
购买关键词:遥控器
2.4G
飞鼠
空中鼠标
空中键鼠
Air Mouse
键鼠
,注意要自带接收器的。
蓝牙遥控器
注:我购买的是胜为蓝牙适配器5.0和小米蓝牙语音遥控器这两样东西。但我现在不推荐用这种方式,除非你需要连接多个蓝牙设备才考虑。
以下为蓝牙遥控器适配流程:
- 在USB接口上插入蓝牙适配器,可以在PVE打开的情况下插入。插入后可以命令检测一下:
$ lsusb | grep bluetooth -i
Bus 003 Device 003: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
- 安装蓝牙管理器:
$ apt install -y bluez
- 适配遥控器,请自行将以下的mac地址更改你的设备的mac地址:
## 进入蓝牙管理器
$ bluetoothctl
[NEW] Controller 00:10:20:30:40:50 hostname [default]
## 设置agent
[bluetooth]# default-agent
Default agent request successful
## 开启蓝牙适配器
[bluetooth]# power on
Changing power on succeeded
[CHG] Controller 00:10:20:30:40:50 Powered: yes
## 使蓝牙遥控器进入待配对状态,比如我购买的小米蓝牙语音遥控器是同时按住遥控器上的主页键和菜单键不放,其他遥控器根据其说明操作
## 然后再让蓝牙适配器开始扫描,要配对好后再松开遥控器
[bluetooth]# scan on
Discovery started
[CHG] Controller 00:10:20:30:40:50 Discovering: yes
[NEW] Device 00:12:34:56:78:90 device name
[CHG] Device 00:12:34:56:78:90 LegacyPairing: yes
## 扫描到你的蓝牙遥控器后,开始配对,配对完成就可以松开遥控器了
[bluetooth]# pair 00:12:34:56:78:90
Attempting to pair with 00:12:34:56:78:90
[CHG] Device 00:12:34:56:78:90 Connected: yes
[CHG] Device 00:12:34:56:78:90 Paired: yes
Pairing successful
## 配对并连接成功后提示符会变成这样
[小米蓝牙语音遥控器]#
## 可以信任该遥控器
[小米蓝牙语音遥控器]# trust 00:12:34:56:78:90
# 如想了解更多信息,请自行查看帮助
[小米蓝牙语音遥控器]# help
## 退出蓝牙管理器
[小米蓝牙语音遥控器]# exit
- 让遥控器一直保持连接不断开,修改
/etc/bluetooth/main.conf
,找到对应的行取消注释并修改为以下内容:
[General]
DiscoverableTimeout = 0
- 设置好后重启蓝牙服务
systemctl restart bluetooth.service
在这里也简单的提一下 LibreELEC/CoreELEC 如何适配蓝牙遥控器,安装好适配器后,进入LibreELEC/CoreELEC系统设置菜单的蓝牙子菜单后,根据遥控器说明书使遥控器进入待配对状态,然后在LibreELEC/CoreELEC中开始扫描,扫描到后点击配对即可。
修改Kodi字幕字体
注:下文中路径仅针对PVE等Debian系统。
如需要修改字幕字体,将你的ttf字体文件放在~/.kodi/media/Fonts
之下(如果是非root用户,注意修改字体文件所有者),然后在Kodi设置中 播放器 -> 语言 -> 文本字幕字体
中选择即可,注意该字体仅对文本类字幕有效,即ass/ssa/srt
后缀,其他字幕格式是无效的。
修改Kodi皮肤字体
注:下文中路径仅针对PVE等Debian系统。
-
将ttf字体文件放在下面列出的对应的皮肤目录下的
fonts
子文件夹中:-
~/.kodi/addons/skin.XXXX
(用户自己安装的皮肤) -
/usr/share/kodi/addons/skin.XXXX
(系统自带的皮肤)
-
-
并在皮肤的配置子目录(不同皮肤的配置子目录不一样,比如
skin.estuary
在xml
子目录下,skin.aeon.nox.silvo
在16x9
或其他比例的目录下)中找到Font.xml
,复制一组完整的fontset
(从<fontset>
到</fontset>
),然后将新增加的这组fontset
的字体文件名改成你放进去的字体文件名,并保存即可(自行做好原始文件备份)。
<?xml version="1.0" encoding="UTF-8"?>
<fonts>
<fontset id="Default" idloc="31390">
...原有的fontset,应该有多组...
</fontset>
<fontset id="FZZYJT">
...新增加的fontset...
</fontset>
</fonts>
- 编辑保存好后重启Kodi即可在皮肤设置中选择新增加的字体。
屏蔽Kodi的关机、重启按钮
注:下文中路径仅针对PVE等Debian系统。
如果在PVE系统中安装Kodi,并且是以root用户启动Kodi,那么Kodi具有很高的权限,可以关机、重启主机等等,这就需要防止不小心用遥控器或者键盘把PVE系统给关闭了。修改之处主要分为两部分:
1. 屏蔽键盘的s键、屏蔽遥控器的电源键
注意,下面的方法只是屏蔽掉键盘的s键(可以呼出关机菜单),以及遥控器的电源键的功能,但实际上Kodi还有具有关闭主机的权限的,通过Yatse、Kore等手机软件直接呼出关机菜单仍然可以实现关机或重启。
注意,下面的方法只是屏蔽掉键盘的s键(可以呼出关机菜单),以及遥控器的电源键的功能,但实际上Kodi还有具有关闭主机的权限的,通过Yatse、Kore等手机软件直接呼出关机菜单仍然可以实现关机或重启。
注意,下面的方法只是屏蔽掉键盘的s键(可以呼出关机菜单),以及遥控器的电源键的功能,但实际上Kodi还有具有关闭主机的权限的,通过Yatse、Kore等手机软件直接呼出关机菜单仍然可以实现关机或重启。
keymaps的WIKI见:https://kodi.wiki/view/Keymap ,keymaps文件位于:/usr/share/kodi/system/keymaps
。如果是屏蔽键盘和蓝牙遥控器的关机菜单,就修改该目录下的keyboard.xml
(请自行做好备份),将所有含有Shutdown
的内容注释掉/删除掉,或者参考上述WIKI用noop
值代替。比如:
原来的
<s>ActivateWindow(ShutdownMenu)</s>
注释掉
<!-- <s>ActivateWindow(ShutdownMenu)</s> -->
原来的
<power>ActivateWindow(ShutdownMenu)</power>
<sleep>ActivateWindow(ShutdownMenu)</sleep>
注释掉
<!-- <power>ActivateWindow(ShutdownMenu)</power> -->
<!-- <sleep>ActivateWindow(ShutdownMenu)</sleep> -->
其他地方类似,这里就不继续列举了。如有其他控制设备,如游戏手柄、操纵杆等,修改/usr/share/kodi/system/keymaps
下对应的xml
文件即可。
2. 在Kodi界面中隐藏关机、重启等按钮
最后,为了保证在Kodi界面中也只能看见退出
,并且看不到关机
、重启
等按钮(注意:这只是在界面中隐藏掉而已,Kodi本身还是有关机、重启的权限的),可以在皮肤设置中将相关按钮隐藏掉,比如使用的Aeon Nox: SiLVO
皮肤的话,可以在进入系统设置 -> 皮肤设置 -> 主菜单设置
后这样操作:
在上图中的“管理子菜单”按钮下,以及在主菜单“系统”的“管理子菜单”下,也要将“关闭系统电源”“重启”“待机”“休眠”“注销”给禁用了,这里本文就不截图了。
Screenshot_20220713_094821.png Screenshot_20220713_094832.png Screenshot_20220713_094844.png最后的效果,主菜单中也只有退出按钮了。
Screenshot_20220713_094656.png设置Kodi启动的前置条件
如果Kodi依赖其他服务,比如需要访问smb共享等等,可以在前文设置的/etc/systemd/system/kodi.service
中ExecStart
这一行前面添加一行:
ExecStartPre = /usr/local/bin/kodi-pre.sh
/usr/local/bin/kodi-pre.sh
需要可执行权限,内容提供一个参考(下面的示例是先判断Jellyfin容器是否已经处于running
状态、健康状态是否是healthy
,并且远端10.0.0.13的名为multimedia的samba共享是否已经可以挂载了),请根据你所需要的前置条件进行修改:
#!/usr/bin/env bash
while :; do
jellyfin_state=$(/usr/bin/docker inspect jellyfin | /usr/bin/jq .[].State)
jellyfin_status=$(echo "$jellyfin_state" | /usr/bin/jq -r .Status)
jellyfin_health=$(echo "$jellyfin_state" | /usr/bin/jq -r .Health.Status)
smb_status=$(/usr/bin/smbclient -N -L //10.0.0.13 | /usr/bin/grep 'multimedia')
if [[ $jellyfin_status == running && $jellyfin_health == healthy && -n $smb_status ]]; then
echo "Jellyfin is ready, samba is ready."
break
else
echo "Jellyfin or samba is not ready, wait 30 second."
/usr/bin/sleep 30
fi
done
网友评论