跳转到内容

MythTV/附加功能

来自维基教科书,开放世界中的开放书籍
MythTV
介绍 | 入门 | 安装 | 附加功能 | 故障排除 | 结论


一旦 MythTV 基本上运行起来(例如:您可以暂停、录制和播放电视),您就可以开始调整系统以完全按照您的意愿运行。可能性无穷无尽,但您可能需要调整一些事情。

遥控器

[编辑 | 编辑源代码]

要使您的遥控器工作,必须加载 LIRC。因此,在您的一个引导脚本中,您应该拥有

/sbin/modprobe lirc_i2c

这将加载 lirc_i2c 内核模块。此后,您可以使用 "/home/mythtv/.lircrc" 文件(实际上是 "/home/mythtv/.mythtv/lircrc" 的符号链接)配置您的遥控器。在这个文件中,您会发现一堆类似于

begin
   prog = mythtv
   button = Power
   config = Esc
end

这些语句应该不言自明。"prog = mythtv" 告诉 LIRC 此命令应绑定到 MythTV 应用程序。"button = Power" 告诉 LIRC 当按下遥控器上的 "Power" 按钮时,应该发出此命令。"config = Esc" 告诉 LIRC 向应用程序传递什么命令。因此,当我按下 "Power" 时,MythTV 将收到 "Esc" 信号(一个方便的映射,因为这样您就可以使用电源按钮退出 MythTV)。您可以根据自己的喜好设置这些映射。要找出特定遥控器允许的名称,请参阅 LIRC 提供的文档(在您解压缩 LIRC 源代码时创建)。例如

$ cd /home/mythtv/lirc-0.7.1/remotes/hauppauge/
$ emacs lircd.conf.hauppauge

显然,您应该导航到适合您遥控器的文档。最后,您的 lircrc 文件应该包含一堆 begin/end 语句(每个按钮一个),这些语句以您喜欢的方式绑定到 MythTV 函数。如果您的 MythTV 安装顺利,可能已经加载了一些智能默认设置。

为了充分利用特殊按钮,您可以设置按键绑定。在 MythWeb 的设置模式中,您可以设置额外的按键绑定(例如,使用 F2 直接启动 MythWeather)。然后在 LIRC 中,您可以将遥控器上的一个按钮设置为同一个按键。

在使用 MythVideo 和 MythDVD 时,mplayer 被调用来显示视频。如果您希望遥控器与 mplayer 配合使用,则可以为 mplayer 设置额外的绑定。绑定可能看起来像

begin
   prog = mplayer
   button = Vol+
   config = volume +1
   repeat = 2
end
begin
   prog = mplayer
   button = Vol-
   config = volume -1
   repeat = 2
end

程序现在是 "mplayer"。允许的键与以前相同(查找您遥控器的文档)。允许的 "config =" 行基于 mplayer 知道的命令。键入 "mplayer -input cmdlist" 以查看允许的命令列表,然后绑定您想要的命令。请注意,"repeat = 2" 命令控制按钮按住时会发生什么。也就是说,更改此数字将控制按住按钮时按钮重复的速度(数字越小,重复速度越快,数字越大,重复速度越慢)。您可以根据自己的喜好调整这些设置。您还可以找到示例其他人设置的在线设置,以获得灵感。

LIRC Config 是一个免费工具,可以在线创建自定义 lircrc。

使用 MyBlaster 控制机顶盒

[编辑 | 编辑源代码]

如果您有一个希望能够从 MythTV 内控制的机顶盒,那么您有多种选择。许多类型的红外发射器(无论是购买的还是自制的)都可以使用前面描述的LIRC 程序进行控制。

如果您使用的是My.TvMyBlaster 产品,那么您需要执行以下操作。首先,请注意 My.TV 仅保证其产品的串行版本与 linux 兼容。您可以查看他们的说明 或访问论坛 以寻求帮助。另一位 MythTV 用户编写了一个 Perl 模块,使我们能够轻松地与 MyBlaster 产品进行交互。因此,您首先应该从某个地方下载MyBlaster14.zip 文件。在 zip 文件中,您会找到各种设备(电视、卫星盒等)的文档。找到您的设备类型和品牌,您将看到许多可能适用于您的设备的代码。所以接下来,让我们测试一下哪个代码有效。让我们将 MyBlaster.pl perl 脚本放入 "/usr/local/bin"(作为 root)

# cp MyBlaster.pl /usr/local/bin

现在,在您喜欢的文本编辑器中编辑此文件。将 "$Device_Type=" 更改为您的设备类型。现在,将 "$remote_code=" 更改为您的品牌建议的代码之一。保存文件并退出。现在打开您的机顶盒(或电视,或任何其他设备),将您的红外发射器产品对准机顶盒,然后键入

# MyBlaster.pl power

这将告诉产品发送 "电源开/关" 信号。如果您的机顶盒关闭,那么很明显,代码适用于您的型号。如果什么也没有发生,请再次编辑脚本,并尝试不同的代码。最终,您会找到适用于您产品的代码。然后,在 mythtvsetup 中,您可以将 "外部频道切换命令" 选项更改为 "/usr/local/bin/MyBlaster.pl"。现在,每次 MythTV 想要更改频道(对于该视频源)时,它将调用 MyBlaster.pl,并将频道号作为参数传递。您可以重新启动您的 lirc 模块并在 MythTV 中尝试。当您更改频道时,您应该确实看到您的机顶盒更改频道(请记住将您的红外发射器对准设备!)。Mythblasterz 提供了一个更便宜的替代方案。

控制其他设备

[编辑 | 编辑源代码]

实际上,您可以使用整个设置来控制多个设备,例如您的机顶盒和电视(以及录像机等)。您所需要的只是一些想象力和修改正确脚本的时间。需要注意的一个有用选项是在 ".lircrc" 文件中设置 "prog = irexec"。这是一个简单的例子:假设我们修改 "/home/mythtv/.lircrc" 文件以包含

begin
   prog = irexec
   button = Power
   config = echo "Hello world!"
end 

如果您保存这些更改,然后从命令行运行 "irexec",您应该看到 "Hello world!" 每次您按下遥控器上的 "power" 按钮时,都会输出到提示符。irexec 程序允许我们使用遥控器上的任何键执行任意 shell 命令。唯一的缺点是 irexec 程序必须正在运行。您可以轻松地安排这种情况,例如,将 "/usr/local/bin/irexec &" 添加到您的 "/usr/local/bin/start-ivtv" 脚本中(尾部的 & 告诉命令被置于后台)。

现在我们可以更聪明一点。假设我们的遥控器按钮主要绑定到 MythTV,并且我们使用 "MyBlaster.pl" 程序来控制我们的机顶盒。现在假设我们还希望遥控器上的 "power" 按钮打开和关闭电视(但不要关闭机顶盒!)。以下是我们可以采取的措施。首先,让我们复制 MyBlaster.pl

# cd /usr/local/bin
# cp MyBlaster.pl MyBlasterTV.pl

现在在 MyBlaster 文档中找到您的电视的设备代码(与之前一样,通过修改文件并尝试 "MyBlasterTV.pl power" 直到电视关闭来确定哪个代码是正确的代码)。一旦您的 MyBlasterTV.pl 文件控制了电视,您可以编辑您的 .lircrc 文件并添加

begin
   prog = irexec
   button = Power
   config = MyBlasterTV.pl power
end 

当您按下遥控器上的电源按钮时,LIRC 守护程序 (lircd) 将命令传递给 "irexec",它只执行 "MyBlasterTV.pl power",这应该向您的红外发射器发送一个信号,使您的电视关闭。显然,您可以将遥控器上的按钮映射到各种不同的脚本。通过这种方式,您可以控制各种各样的 AV 设备。

更快地换台

[编辑 | 编辑源代码]

MythTV 的新用户通常对它切换频道时的缓慢速度感到非常恼火,尤其是在使用机顶盒的情况下。MythTV 不断缓冲直播电视。这使您可以随意暂停和倒带。但是,这也意味着您始终落后于直播电视 4-5 秒。因此,如果您想切换频道,在新的频道缓冲开始时总是会有延迟。如果您使用红外发射器控制机顶盒,那么由于红外发射器还会造成额外的延迟。有什么办法可以解决吗?

您可以对机顶盒的频道切换进行(轻微)优化。如果您使用 MyBlaster 脚本,可以对其进行优化。首先,在 "/usr/local/bin/MyBlaster.pl" 文件中,您可以通过设置 "$finalize=1;" 来启用 finalize 选项,这将使发射器发送一个按键来立即确认频道切换。对于大多数遥控器来说,有一个 “选择” 或 “确定” 按钮可以做到这一点,因此请在 "$finalize_key=" 部分中进行设置。您也可以尝试编辑 "Emit_Time=0.333;" 选项。这是每次按键红外信号持续的时间。通过减少它,按键输入将更快。但是,不要减少太多,否则按键会丢失。您可以调整这个值并查看发生了什么。现代机顶盒似乎能够在没有太多问题的情况下处理 "Emit_Time=0.2;"。 "$inter_key_delay=1;" 选项也可以更改。这是按键脉冲之间的时间。像往常一样,设置太低,您的盒子会变得困惑。默认的 1 秒是安全的,但许多盒子可以处理 0.2 秒而没有问题。这些选项可以使频道切换更快。

但是,最终您将无法消除最后的 4 秒缓冲延迟。这为您留下了两种选择。首先,您可以将电视设置为将机顶盒的直播信号直接发送到电视,并将另一个信号发送到您的 MythTV。然后,您可以通过更改电视上的输入选择在 “直播模式” 和 “Myth 模式” 之间切换。然而,这需要一些用户的智能,因为您可能在 MythTV 尝试录制时切换频道,从而破坏该录制。

另一个选择是适应!大多数 MythTV 用户发现,一段时间后,他们放弃了整个 “频道冲浪” 的习惯,因为它主要是一种在任何特定时间都无法找到有趣的电视节目或对广告感到厌烦的遗物。有了 MythTV,您希望只观看自己喜欢的已录制节目,并且会在合适的时间观看。当您坐下来看电视时,您只需查看最近录制节目的列表,然后观看您感兴趣的东西。不仅如此,您还可以使用自动跳过广告功能来避免无聊。尝试一下这种新范式,您可能会发现强迫性地切换频道的需求会消失。

如果您的 MythTV 安装顺利,那么 MythWeb 可能已经在完美运行。在您的 MythTV 盒子上,打开网页浏览器并访问 "https://127.0.0.1/mythweb/"(或 "http://127.0.0.1/mythweb/")。不要忘记尾部的斜杠,否则您只会得到 “页面未找到” 错误!如果您能看到您的 MythWeb,那么一切正常。请参阅下一节以获取有关使其在互联网上全球可访问的信息。如果您无法看到您的 MythWeb,那么您可能应该查看运行您的 MythWeb 的 Web 服务器 Apache 的 选项(请注意,Apache 进程/服务根据您的版本称为 httpd 或 httpd2)。要修改 MythWeb 的行为,您需要修改以下文件

/var/www/html/mythweb/.htaccess
/var/www/html/mythweb/config/conf.php

这些文档还建议您将选项 “UseCanonicalName on” 添加到您的 Apache 配置文件,该文件位于:"/etc/httpd/conf/httpd2.conf"。但是,在现代版本的 Apache 中,默认值为 “on”,因此添加此指令通常没有必要。

如果您在本地网络之外遇到无法查看 MythWeb 页面,那么可能是您的 ISP 阻止了默认的 http 端口 (80)。您可以通过在另一个端口上运行 MythWeb 来解决此问题(任何大于 1024 的端口,例如 8050)。请记住也要调整任何路由器设置以进行端口转发。有关更多帮助,请参阅本文档中的其他地方。

如果您在本地网络内遇到无法查看 MythWeb 页面,但可以在外部查看,那么可能是您的路由器没有正确传递内部请求。一个简单的解决方法是在您的网络内使用 MythTV 的内部 IP 地址(而不是使用您在家庭网络之外使用的域名)。如果您这样做,您可能需要将 MythTV 设置为使用静态 IP 地址。您也可以通过调整路由器设置来解决此问题(但可能无法解决)。或者,您可以购买一个能够正确执行端口转发的路由器(据报道 思科 路由器在这方面是一个不错的选择)。

动态 DNS

[编辑 | 编辑源代码]

MythWeb 允许您通过互联网访问您的 MythTV。但是,要从房屋外(工作、度假等)访问您的 MythTV,您需要让您的计算机充当 Web 服务器。Linux 使运行 Web 服务器变得容易。一个名为 Apache(以 “httpd” 运行)的程序将为您完成所有工作。如果您已正确安装 MythTV 和 MythWeb,那么 Apache 已经在运行。

但是,如果您使用使用 DHCP 的 ISP 连接到互联网,那么您可能会从池中分配一个随机 IP。这意味着您的 IP 地址将定期更改。这被称为拥有 “动态 IP 地址”。随着您的地址不断更改,其他计算机如何知道在哪里才能访问您的 MythWeb?

解决方法是使用一个 DNS 服务,该服务会在您的 IP 地址更改时更新。幸运的是,有许多免费的订阅服务可以让您在 Linux 上做到这一点。最知名的似乎是 no-ip.comDynDNS一个广泛的选项列表 可供使用。选择适合您的!大多数这些服务将允许您从一个简短的列表中选择域名,然后将您的用户名映射到该域名。因此,如果您在他们的服务中的用户名是 “user155”,那么您最终可能会得到一个像 “user155.no-ip.com” 这样的域名。然后,您可以在任何地方访问您的 MythWeb。它的地址将是:http://user155.no-ip.com/mythweb/

如果您注册了自己的域名,即使您的 MythTV 盒子具有动态 IP,您也可以将自定义子域名指向您的 MythTV 盒子。一旦您确认 user155.no-ip.com 指向您的盒子。在您的 "myMostFavoritestDomain.com." DNS 区域中添加一个 cname 记录,将 mythtv.myMostFavoritestDomain.com 指向 user155.no-ip.com。确保您在域名的末尾加上一个点。否则,它会将 DNS 区域的名称附加到您指定的名称。例如:在 myMostFavoritestDomain.com 的 DNS 区域条目中,像 "mythtv.myMostFavoritestDomain.com cname user155.no-ip.com" 这样的记录实际上将 "mythtv.myMostFavoritestDomain.com.myMostFavoritestDomain.com" 指向 "user155.no-ip.com.myMostFavoritestDomain.com",这不是我们想要的。

如果您遇到 ISP 阻止端口 80 的情况,您可能需要调整 Apache 中的端口选项。有关详细信息,请参阅本文档中的其他帮助。这些服务将为您提供一个在 Linux 盒子上运行的程序。每当它的 IP 地址更改时,它都会更新服务,以便 DNS 查找始终被发送回您当前的 IP 地址。这是一种简单(且经济高效)的方法来获得您自己的(半定制)域名。如果您想要一个功能齐全的域名,可以轻松升级您的服务。

DVD 菜单

[编辑 | 编辑源代码]

默认情况下,MythTV 使用 mplayer 播放 DVD。但是,mplayer 不支持 DVD 菜单。您可以尝试安装 xine,然后配置 MythTV 来调用 xine(有关命令行语法,请参阅 xine 手册页)。

华夏公益教科书