树莓派01 家庭影音中心

树莓派01 家庭影音中心

将 RaspBerry Pi 4B 作为家庭影视中心/机顶盒的核心就是 KODI 软件,这是考虑到以下的几点:遥控器的控制、对挂载 webdav 和其他的支持

最方便的方式可以选择以 KODI 为核心的两个 OS:LibreELEC、OSMC(推荐),这两个系统以 KODI 为默认启动,同时也支持远程登录和 Docker 部署等 Linux 的功能。后者更为推荐应该是前者的官方改进版本。

考虑到后续可能会将该 SD 卡用于其他用处,因此本文选择的是使用 RaspBerryPi OS 的方案,以下围绕该方案进行展开:

RaspBerry Pi OS+Kodi+Alist 方案探究

可以参考 trouble shooting,可以发现实际上安装 kodi 最简单的方式就是直接使用 apt,无需做其他的 PPA 添加。

安装Kodi

1
sudo apt-get install kodi

安装完后,使用 kodi 命令开启或者在开始菜单的软件中心中选择 kodi 打开。

设置 GPU 显存(硬解相关)

首先做一下固件的升级

1
sudo rpi-update

然后调整一下显存:系统设置里面将 gpu_mem 调高一些,我使用的是 4G,调整到了 256MB,切记不要调整太高,否则可能会开机失败,重启后查看显存是否设置成功。

查看 GPU 显存的方式:

1
vcgencmd get_mem arm && vcgencmd get_mem gpu

最后在 kodi 中查看相关的选项的开关情况:

参考资料:树莓派RaspberryPi 4B设置显存开启硬件加速 支持Emby|Plex|JellyFin转码 LiuJason’sBlog

KODI 界面设置(中文)

里面 Interface 选项 -> 皮肤 -> 字体选择 Arial(支持中文,不然会乱码)

image.png

如果皮肤下面没有字体的子项,可以选择切换左下角的模式,切换到专家就可看到

image.png

切换完字体,选择皮肤下面的区域 Region-> Language -> Chinese 即可。

KODI 添加 WebDav

首先选择资料库中的进入文件区 -> 添加视频 -> 添加视频源处选择浏览 -> 添加网络位置处

image.png

  • 如果是本地挂载的协议一般选择 HTTP,服务器地址填写局域网 IP 即可,远程路径填写 Dav,端口是设定好的端口;
  • 如果是远程的一些 Alist 网站,可以选择 WebDav 的 HTTPs ,其他的参考相关网站给出的设置即可。

本地就一葫芦画瓢就行,添加完后可以看到相关的源,然后选择文件夹和对应显示的名称即可,需要注意的是,这里我们最好不启用刮削服务(Alist 等网盘的情况下),避免被封号等一系列问题。

Kodi 设置 iptv 播放

kodi 支持 iptv 播放主要依赖于PVR IPTV Simple Client 插件,通过该插件设置 m3u 直播源即可实现 iptv 的播放。

PVR IPTV Simple Client的几种安装方法:

  1. kodi 直接询问是否启用;
  2. kodi->设置->插件->从库安装->pvr clients-> PVR IPTV Simple Client
  3. 如果上述两个方法都失效,使用插件中的从 zip 安装,相关的 zip 文件可以从此处安装:Kodi中文网

安装后在插件的设置目录中,设置 m3u 的获取方式是本地文件还是 url 即可。

设置完成后可在首页的 TV 观看电视直播,iptv 源的获取参照 Windows App01 Potplayer & Alist 一文中的 iptv 列表获取。

KODI 手机遥控器设置和添加

手机端直接下载 Kodi remote control ,参考设置进行配置即可

image.png

image.png

这里可能需要设置以下用户名和密码,来允许 HTTP 控制。

树莓派投屏方案

根据 kodi 的 wiki 已知其已经不支持 ios8 以上的 Airplay 功能,因此针对投屏的需求,只能通过视频软件或者播放器的 UpnP/DLNA 支持进行投屏。

  • 在 kodi 的设置界面->服务->UpnP/DLNA 中选择启用的相关选项
  • 在 ios 中设置->对应的视频软件(如bilibili)->本地网络选择启用

播放视频时左上角 tv 的按钮,并选中本地局域网中的 kodi 即可。

Trouble Shooting 问题解决

Kodi 官方教程安装失败原因及解决

问题描述与分析

尝试了 Ubuntu22.04+RaspBerry 4B+Kodi+Alist 的方案,发现这种方案遵循官方教程无法在 Ubuntu 中成功的安装 Kodi,成功安装后出现以下的问题:

  • command not found
  • 无对应的 desktop app
  • desktop app 无法打开

该原因是由于基于官方PPAUbuntu 上安装的 Kodi 似乎无法在 RaspBerry 的架构上执行,因此无法成功安装,具体可以参考如下的几个连接,其中的讨论对该原因也会有所讲解。

同时官方指出,这种方式不适用于 armhf,(似乎 raspberry 4b 的 arm64 也无法执行

Note that this PPA only provides builds for Ubuntu i386 and Ubuntu amd64 but not for Ubuntu armhf, which can run on a Raspberry Pi.

可以以此查看系统的架构查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号-菜鸟笔记 (coonote.com)

架构间的区别如下:安装包amd,amd64,arm,arm64都有什么区别? - Cloudreve Forum

  1. amd64是 X86架构的 CPU,64位版。amd64又叫 X86_64。主流的桌面 PC,笔记本电脑,服务器(包括虚拟机)都在用 X86_64的 CPU。
  2. arm64是 ARM 架构的 CPU,64位版。苹果新出的电脑在用 ARM 架构的 CPU。有些路由器和嵌入式设备在用 arm64的 CPU。手机和安卓平板电脑最常用的 CPU 也是 ARM 架构的。
  3. MIPS 是 MIPS 架构的 CPU。有些嵌入式设备和家用路由器在用 MIPS 架构的 CPU。

简单的说就是:

  • AMD64=linux-64bit=X86
  • ARM64=linux- Aarch64 =ARM

Aarch 指的就是 ARM architecture

解决方案

发现是架构不匹配的原因导致的时候,去查询相关的源是否有对应架构的安装包:Kodi Download (APK, DEB, EOPKG, PKG, RPM, TXZ, XBPS, ZST) (pkgs.org) 找到了 Arm64 的版本

image.png

但是进去看可以发现实际上该安装还是指向了官方 PPA,安装的 ARCH 描述为 ALL(not true),不过好在后面有别的选项:

image.png

找到下面的 arm64 的版本,详情页就能找到下载说明,由于是官方软件源,只需要 apt 安装就行,前提是将之前安装的会导致错误版本的 PPA 源卸载干净。

可以到/etc/apt/sources.list.d/检查并将不需要的软件源删掉,再 sudo apt-get update 一下

Ubuntu 播放 4k 视频卡顿掉帧

这部分可能是由于 Ubuntu 和 RaspBerryPi 一起用的时候,对于硬件的控制比较麻烦,导致功能中的硬解没有开启的地方导致,而在后续开启 Ubuntu 22.04 硬解的时候,需要去修改 Bios 文件,导致我这边系统损坏了无法开机,就没有做进一步的测试。

20.04 和之前的版本有找到对应的文档, 22.04 好像暂时没有,参考之前的方案进行修改的时候出现了开机损坏的情况,所以还是要慎重。

检查硬解是否启用

1
2
cat /proc/device-tree/soc/firmwarekms@7e600000/status
cat /proc/device-tree/v3dbus/v3d@7ec04000/status

设置的参考资料:RPI4 & Ubuntu MATE - How to enable video acceleration (dedoimedo.com)

树莓派 HDMI 热插拔

树莓派的 HDMI 接口在长时间未使用,或者在开机的时候未连接显示器的时候,会默认以无显示输出的情况启动,导致电视无法正常输出图像。

为此,我们需要开启设置中的 hdmi_force_hotplug=1,无论是否检测到 Hdmi 显示器,都默认有 hdmi 连接,确保无需每次需要视频输出的时候都重启树莓派,具体的操作步骤如下:

适用于 RaspBerryPi OS

1
vim /boot/config.txt # 默认配置文件的地址

如果不在该地址,就需要找到启动分区所在的目录,应该在该目录下,找到该文件后修改将以下两项打开或新增之后重启树莓派即可;

1
2
hdmi_force_hotplug=1  
hdmi_drive=2
  • hdmi_force_hotplug=1 设置树莓派使用 HDMI 热插拔模式,即使没有检测到 HDMI 显示器。
  • hdmi_drive=2 将树莓派设置为正常的 HDMI 模式(如果支持和启用,将发送声音)。如果没有这条线,树莓派将默认切换到 DVI(无音频)模式。

但是热插拔的情况下,可能会导致在最终使用 hdmi 输出的时候,树莓派自动设定的分辨率不符合我们的使用和设备预期,因此我们可能还要基于设备对树莓派的分辨率和输出模式做一个限制;

1
2
hdmi_group=1
hdmi_mode=16
  • hdmi_group 指定分辨率格式1为 CEA,电视规格的分辨率;2为 DMT,计算机显示器使用的分辨率
  • hdmi_mode 不同分辨率格式下的指定分辨率和刷新率情况,具体可以见表

image.png

参考资料:

FI

Author

AikenH

Posted on

2023-06-28

Updated on

2023-10-30

Licensed under


Comments