MythTV
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 安装已存在,必须将其精炼为后端、前端或两者兼有。
后端设置
在设置后端之前,请确保您有一个正常工作的 _视频采集卡_ 或 _来自 STB 的火线输入_。遗憾的是,这部分设置超出了本文的范围。如果您在美国,请在 Schedules Direct 注册一个账户(此服务以极低的成本提供电视节目列表)。美国以外的用户需要使用屏幕抓取器(xmltv)来完成相同的工作。
设置数据库
安装 mariadb 并启动 mysqld.service。
如果 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 -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
如果您的后端运行在无头服务器上,可以通过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)”选项,并填写其登录信息。为了验证是否正确,请继续获取列表。
- 输入连接菜单
- 此菜单不言自明。您只需要在采集卡上选择一个输入,然后告诉 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"
- 为
mythbackend.service创建一个覆盖单元文件,如下所示:
/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 文件中找到以下行:
id:3:initdefault:
更改为:
id:5:initdefault:
然后在下面(或文件中的任何位置)添加以下内容:
x:5:respawn:su - MYTHUSER -c startx
如果您想在启动 Xorg 时启动 mythfrontend,请编辑(如果不存在则创建)您的 MYTHUSER 的 .xinitrc 文件并添加以下行:
mythfrontend
优化您的系统
请务必查看 MythTV Wiki 上的 优化性能,了解如何保持数据存储健康,以及如何以各种其他方式优化您的系统,以充分利用您的 Myth 机。
参考
- https://www.mythtv.org/
- https://www.mythtv.org/wiki/
- http://www.linhes.org 一个用户友好的 MythTV 和 Linux 安装,使用 Arch Linux。