MythTV
MythTV 是一个应用程序套件,旨在提供惊人的多媒体体验。它为基于 Linux 的计算机提供 PVR 功能,并且还支持其他媒体类型。结合安静、性能不错的计算机和体面的电视,它成为了家庭影院系统的绝佳核心。
结构
MythTV 系统分为后端和前端。每个组件都有其自身的功能
mythbackend
- 计划和录制电视节目
- 将视频数据流式传输到前端
- 标记商业广告插播
- 将视频从一种格式转码为另一种格式
mythfrontend
- 提供漂亮的 GUI
- 播放录制的内容
- 提供用于安排节目的界面
前端和后端可能位于网络上的不同计算机上,并且也可能存在多个前端。这种架构允许构建一个中央媒体分发系统,该系统可以到达网络可以到达的任何地方。这是一个非常灵活的系统,它甚至允许非常低功耗的机器充当完全可用的前端。
硬件需求
所有系统都需要调谐器卡。Hauppauge PVR 系列卡(150、250、350 和 500)由于相当不错的 Linux 支持和低 CPU 使用率,因此非常受 MythTV 用户欢迎。也使用其他卡,例如基于 BT878 芯片组的卡。与 PVR 系列不同,基于 BT878 的卡需要大量的 CPU 功率来保存视频,因为这些卡输出原始帧而不是压缩流。
软件需求
对于后端,最好也让 LAMP 正常工作,以便任何人都可以使用 Web 浏览器通过 MythWeb 安排节目。虽然不是必需的,但这是一个非常方便的功能。
工作正常的 Xorg(图形)环境是必要的。对于设置 MythTV,通过 X11 转发机制进行远程访问就足够了。
安装
安装 mythtv-gitAUR 软件包和 任何需要的插件。该软件包创建了 mythtv 用户。
此时,通用的 MythTV 安装已经存在,必须将其细化为后端、前端或两者兼有。
后端设置
在设置后端之前,请确保你拥有功能正常的视频采集卡或来自 STB 的火线输入。不幸的是,设置的这一部分不在本文的范围之内。如果你在美国,请在 Schedules Direct 上注册一个帐户(此服务以最低的成本提供电视节目列表)。美国境外的用户将需要使用屏幕抓取器 (xmltv) 来完成相同的工作。
设置数据库
安装 mariadb 并 启动 mysqld.service
。
如果局域网中的其他计算机有望连接到主后端服务器,请在此处注释掉 /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 是轻量级构建的不错选择,但任何 WM 都可以)。
现在运行 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
创建一个 drop-in 单元文件,如下所示
/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 使用详细级别语句和日志文件位置参数,以便你可以查看何时出现问题。
- 不要以 root 用户身份运行前端,创建一个 mythtv 用户
使用 GDM 自动登录 Mythfrontend
在 /etc/gdm/custom.conf
中,在 [daemon] 标题下添加以下语句
AutomaticLoginEnable=true AutomaticLogin=mythtv (assuming your frontend user is mythtv)
注意 - 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