跳转至内容

MythTV

来自 ArchWiki

MythTV 是一套旨在提供卓越多媒体体验的应用程序。它为基于 Linux 的计算机提供 PVR(个人视频录像机)功能,并且还支持其他媒体类型。结合一台漂亮、安静的计算机和一台体面的电视,它就可以成为家庭影院系统的绝佳核心。

结构

MythTV 系统分为后端(backend)和前端(frontend)。每个组件都有其自身的功能。

mythbackend

  • 安排和录制电视节目
  • 将视频数据流式传输到前端
  • 标记广告时段
  • 将视频从一种格式转码为另一种格式

mythfrontend

  • 提供漂亮的图形用户界面
  • 播放录制的内容
  • 提供安排节目的界面

前端和后端可以位于网络上的不同计算机上,并且可以有多个前端。这种架构允许一个中央媒体分发系统,可以到达网络可达的任何地方。这是一个非常灵活的系统,甚至允许低功耗机器充当完全可用的前端。

硬件要求

所有系统都需要一个采集卡。Hauppauge PVR 系列采集卡(150、250、350 和 500)因其相当不错的 Linux 支持和较低的 CPU 使用率而与 MythTV 配合使用非常受欢迎。基于 BT878 芯片组的采集卡也得到使用。与 PVR 系列不同,基于 BT878 的采集卡在保存视频时需要大量的 CPU 功耗,因为这些采集卡输出的是原始帧而不是压缩流。

软件要求

对于后端,最好还能正常工作 LAMP,这样任何人都可以使用网络浏览器通过 MythWeb 安排节目。虽然不是必需的,但这是一个非常方便的功能。

需要一个正常的 Xorg(图形)环境。为了设置 MythTV,通过 X11 转发机制进行远程访问就足够了。

安装

安装 mythtv-gitAUR 包和任何所需的插件。该软件包会创建 _mythtv_ 用户。

此时,一个通用的 MythTV 安装已存在,必须将其精炼为后端、前端或两者兼有。

注意 您可以使用 ansible 安装您的依赖项,请参阅 [1]


后端设置

在设置后端之前,请确保您有一个正常工作的 _视频采集卡_ 或 _来自 STB 的火线输入_。遗憾的是,这部分设置超出了本文的范围。如果您在美国,请在 Schedules Direct 注册一个账户(此服务以极低的成本提供电视节目列表)。美国以外的用户需要使用屏幕抓取器(xmltv)来完成相同的工作。

设置数据库

注意 这是一个关于 MariaDB 的快速粗略 walkthrough。请务必阅读 MariaDB 文章以获取更多详细信息。

安装 mariadb启动 mysqld.service

本文或本章节已过时。

原因: 这种行为似乎已改变,现在是相反的。请参阅 MariaDB#仅通过 Unix 套接字本地启用访问。(在 Talk:MythTV 中讨论)

如果 LAN 中的其他机器预计会连接到主后端服务器,请在此处注释掉 _/etc/mysql/my.cnf_ 中的 "skip-networking" 行。

用密码设置 mysql

# mysql_secure_installation

创建数据库结构

$ mysql -u root -p </usr/share/mythtv/mc.sql

如果您丢失或覆盖了 mc.sql 文件,它始终可以在此处找到。

更新您的数据库

# mysql_upgrade -u root -p

MythTV 需要时区表在 MySQL 中,添加它们。

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p<yourpassword> mysql

一些设置会拒绝来自远程机器的前端。要解决此问题

# mysql -u root -p
mysql> GRANT ALL ON mythconverg.* TO 'user'@'host.net' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
  • 将 _user_ 替换为前端上运行的用户(默认:mythtv)。
  • 将 _host.net_ 替换为需要访问的主机的主机名或 IP 地址。其他常见值是 _%.local_ 和 _192.168.1.%_。
  • 将 _password_ 替换为合适的密码(默认:mythtv)。
注意 MySQL / MariaDB 将 "user@host.net" 和 "user@192.168.1.1" 视为完全独立的用户,因此您可能需要同时使用这两种类型。

示例

# mysql -u root -p
mysql> GRANT ALL ON mythconverg.* TO 'mythtv'@'192.168.0.%' IDENTIFIED BY 'mythtv';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

设置主后端

加载您的 WM(lxde 是轻量级构建的一个不错的选择,但任何都可以)。

注意 希望仅演示软件且没有采集卡/硬件的用户可以遵循指南。

现在运行 mythtv-setup 程序。

$ mythtv-setup
注意 或者,在 v32 及以上版本中,您可以使用 WebUI 来设置 mythtv,https://:6544

如果您的后端运行在无头服务器上,可以通过OpenSSH#X11 转发运行 _mythtv-setup_,方法是运行

$ ssh -X user@backend '. /etc/profile.d/perlbin.sh && LANG=C.UTF-8 mythtv-setup'
  • 通用菜单
如果这是您的主后端,请将其 IP 地址填入第一个和第四个字段,将此计算机标识为主后端并提供其网络 IP 地址。
在下一页上,输入录制文件和直播缓冲区的存储路径。LVM 或 RAID 解决方案提供易于访问的大规模存储。但同样,这些超出了本文的范围。将直播缓冲区设置为您可接受的大小,并保持其他设置不变。
在下一页上,根据您的地区设置。NTSC 主要在美国使用,并确保设置您使用的是有线电视还是广播。
在接下来的两页上,除非您确定要更改,否则请保持所有设置不变。
在下一页上,如果您的后端足够快,可以同时处理录制和标记任务,建议将 CPU 使用率设置为“高”,最大同时任务数设置为 2,并勾选广告标记选项。
在下一页上,根据您的喜好设置这些选项。强烈建议自动广告标记。
忽略下一页并完成。
  • 采集卡菜单
从下拉列表中选择您的采集卡类型。Hauppauge PVR 用户将选择 MPEG-2 编码器卡选项。
将 mythtv-setup 指向正确的位置,通常是 /dev/v4l/video0
  • 视频源菜单
在这里,拥有电视节目列表来源变得很重要。Schedules Direct 用户应创建一个新的视频源,为其命名,选择“北美(Schedules Direct)”选项,并填写其登录信息。为了验证是否正确,请继续获取列表。
注意 从 MythTV v31 开始,SchedulesDirect 使用 xmltv 格式。从 AUR 安装 xmltvAUR 并按照此处的说明进行操作。
  • 输入连接菜单
此菜单不言自明。您只需要在采集卡上选择一个输入,然后告诉 myth 它连接到哪个视频源。大多数用户会选择他们的调谐器,并忽略所有其他输入。卫星用户将选择一个视频输入,然后在下一页提供使用外部频道更改程序来更改 STB 频道的命令。这也超出了本文的范围。
  • 频道编辑器菜单
此菜单可以安全地忽略。
  • 退出程序(Esc)
  • 运行 mythfilldatabase
$ mythfilldatabase

这应该会用未来两周(左右)的电视节目列表填充您的 mysql 数据库。

启用 mythbackend 服务

启用 mythbackend.service systemd 单元。

故障排除

PVR150

如果您无法打开 PVR150 的 /dev/video0,请安装固件,位于 ivtv-utilsAUR 包中。

打开 DVB 前端设备失败

内核需要时间来注册前端设备(例如 TurboSight TBS 62x1 的设备),并且在 systemd 启动 mythbackend.service 时它们可能不可用。这会导致在系统日志中记录以下错误:

# DVBChan[1](/dev/dvb/adapter0/frontend0): Opening DVB frontend device failed.
# eno:No such file or directory (2)
# DVBChan[1](/dev/dvb/adapter0/frontend0): Failed to open DVB frontend device due to fatal error or too many attempts.
# ChannelBase: CreateChannel() Error: Failed to open device /dev/dvb/adapter0/frontend0
# Problem with capture cardsCard 1failed init

解决方案包括仅在设备可用后才启动 mythbackend.service

  • 创建文件 /etc/udev/rules.d/99-mythbackend.rules
#
# Create systemd device units for capture devices
#
SUBSYSTEM=="video4linux", TAG+="systemd"
SUBSYSTEM=="dvb", TAG+="systemd"
SUBSYSTEM=="firewire", TAG+="systemd"
/etc/systemd/system/mythbackend.service.d/override.conf
# [Unit]
# After=dev-dvb-adapter0-frontend0.device
# Wants=dev-dvb-adapter0-frontend0.device

有关更多详细信息,请参阅 MythTV wiki 的页面 Systemd mythbackend 配置

前端设置

与后端相比,运行前端很简单。前端机器需要权限来访问后端机器上的数据库。在后端机器上,请按照 MariaDB 文章中授予远程访问的说明进行操作。在前端机器上,使用 pacman 安装 mythtv 包(如上所述)。之后,确保您处于普通用户的 X 环境中,并运行 mythfrontend。它会弹出一个菜单,询问后端 IP 地址以及本地计算机的名称和 IP 地址。填写这些信息,您的前端应该就可以工作了。

另一方面,前端的选项比豪华汽车还多。所有这些都值得另写一篇文章。有几个值得注意的选项,应该设置它们以确保一个良好工作的设置。如果您没有隔行扫描显示器(几乎没有人有),您将需要对电视输出进行去隔行处理。进入电视播放菜单,选择“内核去隔行”或“bob2x 去隔行”。尝试两者,看看您更喜欢哪一个。此外,在通用设置页面,设置您的 _ALSA 设置_ 是个好主意,但这非常多样,不值得在这里建议具体数值。

MythTV 插件

AUR 中有许多可用于 MythTV 的插件。它们涵盖了从 RSS 阅读器到 DVD 播放器。查看一下它们。只需在前端计算机上安装该软件包即可获得所需的功能。通常没有额外的设置,如果有,安装文件会提及。

MythWeb

MythWeb 是 MythTV 的一个 Web 界面。有关在 Arch Linux 中配置 MythWeb 的说明,可以在 MythWeb 页面上找到。

拥有一个稳定 Myth 系统的提示

但还不是完整的文章(目前)

  • 在您的后端上运行 ntpd 或 openntpd,以确保它始终拥有正确的时间。
  • 在您的前端上使用 LIRC 允许您使用遥控器,这在客厅里非常棒。
  • 使用 gdm、sddm 或 xdm 自动登录您的前端,并使用 ~/.xinitrc 在启动时加载 mythfrontend。
  • 将“自动运行 mythfilldatabase”选项设置在您的一个前端上,以确保您始终拥有节目列表。
  • 不要忘记使用 mythfrontend 的 verbosity 语句和 log 文件位置参数,以便您可以看到何时出现问题。
  • 不要以 root 用户身份运行您的前端,创建一个 mythtv 用户。

使用 GDM 自动登录您的 MythFrontend

/etc/gdm/custom.conf 中,在 [daemon] 部分下添加以下语句:

AutomaticLoginEnable=true
AutomaticLogin=mythtv (assuming your frontend user is mythtv)

FYI - GDM 不会自动以 root 用户登录。

使用 XDM 自动登录您的 MythFrontend

本文或本章节已过时。

原因: 我们不再使用 /etc/inittab 了。(在 Talk:MythTV 中讨论)

在您的 /etc/inittab 文件中找到以下行:

id:3:initdefault:

更改为:

id:5:initdefault:

然后在下面(或文件中的任何位置)添加以下内容:

x:5:respawn:su - MYTHUSER -c startx
注意 记住将 "MYTHUSER" 更改为您希望自动登录的用户名。

如果您想在启动 Xorg 时启动 mythfrontend,请编辑(如果不存在则创建)您的 MYTHUSER 的 .xinitrc 文件并添加以下行:

mythfrontend

优化您的系统

请务必查看 MythTV Wiki 上的 优化性能,了解如何保持数据存储健康,以及如何以各种其他方式优化您的系统,以充分利用您的 Myth 机。

参考

© . 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.