Gentoo Logo

Gentoo Linux VDR指南

内容:

1.  DVB简介

什么是DVB?

DVBDigital Video Broadcasting,数字视频广播的简称。DVB描述了如何传播电视,广播和交互服务,比如MHP(多媒体家庭平台),EPG(数字节目向导)和teletext。采用MPEG-2数据压缩技术(HDTV采用H.264),使得在同一个频带上传输多路电视信号成为可能。数据压缩率越高,能够传输的频道越多,同时图像质量的损失也越大。

DVB可以通过多种方法传播。末尾的字母标志了传播的方式,比如DVB-T是陆基传播。此外还有其他的传播方式:

  • DVB-S是通过卫星传播
  • DVB-C是通过光纤传播
  • DVB-H是面向移动设备的传播(陆基)
  • DVB-IPI是通过基于IP网络的传播,比如互联网
  • DVB-RC(S/C/T)指定了用于传输数据服务的回馈频道,比如宽带互联网

DVB卡的种类和要求

除了根据DVB流的接收方式外,DVB卡还根据输出分为两类。第一类卡内置了解码器,可以通过/dev/video直接访问视频流,我们称其为全功能卡。另外一类卡没有解码器,需要主机提供软件解码,即简装版卡。这通常意味着较高的系统需求。您的计算机至少要配备600MHz主频以上的CPU,256MB以上的内存。此表可以帮助您找到您的板卡。

2.  准备系统

配置内核

首先,我们必须保证您的内核支持DVB以及您的DVB设备。自2.6系列内核起,所需的驱动已经包含在内核源代码中。检查您的内核配置,保证下列的选项被编译进内核或者模块。

代码 2.1: 需要的内核选项

Input Device Support --->
* Event Interface
Device Drivers --->
Multimedia Devices --->
Digital Video Broadcasting Devices --->
    [*] DVB For Linux
     *  DVB Core Support
   M  [您的驱动]

此外,我们还需要为您的硬件选择合适的驱动。为了找出您的卡的正确驱动,我们将所有的驱动都编译成模块。如果您使用的是PCI设备,请安装pciutils。如果您希望将驱动编入内核或者您没有PCI卡,您可以跳过这个步骤,前进至检查内核输出

代码 2.2: 安装pciutils

# emerge pciutils

在启动了新内核后,我们运行pcimodules来列出所需的驱动。

代码 2.3: 列出所需的模块

# pcimodules
ohci-hcd
ehci-hcd
sis900
snd-emu10k1
b2c2-flexcop-pci
nvidia
nvidiafb

在这种情况下,我们需要加载内核模块b2c2-flexcop-pci。我们在/etc/modules.autoload.d/kernel-2.6里加入这个驱动模块名。

代码 2.4: 加入驱动模块名

# echo b2c2-flexcop-pci >> /etc/modules.autoload.d/kernel-2.6

检查内核输出

推荐将所有的驱动都编译成模块,这样您就以动态地加载所需的模块,这在您不清楚所需模块名的时候特别有用。如果您已经知道了模块名,您可以将这个驱动编译进内核。编译内核,安装模块,重启系统。您可以用dmesg来检查是否您的内核成功地探测到您的板卡。

代码 2.5: 检查内核输出

# dmesg | grep DVB
(如果您的系统配备了TerraTec Ciergy T2,您的输出可能是这样:)
DVB: registering new adaptor (TerraTec/qanu USB2.0 Highspeed DVB-T Receiver).
input: TerraTec/qanu USB2.0 Highspeed DVB-T Receiver remote control as /class/input/input2

3.  安装VDR

要安装VDR,我们只需要emerge它。

代码 3.1: 安装VDR

# emerge vdr

我们现在继续安装遥控

4.  安装遥控

有两种方法可以通过红外遥控您的VDR。如果您的电视卡内置支持红外接收器,您可以用vdr-remote。否则,您很有可能需要LIRC。

安装vdr-remote

我们首先通过emerge来安装插件:

代码 4.1: 安装vdr-remote

# emerge vdr-remote
# eselect vdr-plugin enable remote

当使用遥控插件来管理您DVB卡上的红外端口,默认的配置应该工作正常。它将自动使用包含"dvb"的输入设备。高级用户可以看一下/etc/conf.d/vdr.remote配置文件。

现在继续视频输出方案

其他方法:安装LIRC

如果您的卡支持遥控(但是您无法或者不愿意使用vdr-remote),您也许希望配置LIRC。LIRC会分析按下的键,为每一个键返回一个名字。支持LIRC的程序会等待键盘信息,然后运行配置文件中指定的动作,配置文件大多保存在可执行文件的配置目录中(比如,mplayer加载~/.mplayer/lircrc)。安装LIRC之前,您先要把lirc加入到您的USE标记中,并在/etc/make.conf加入一个新的条目:LIRC_DEVICES。用下表来找到这个选项的合适参数。

代码 4.2: 安装LIRC

# nano -w /etc/make.conf
(用合适的驱动替代"devinput")
LIRC_DEVICES="devinput"
USE="lirc"
# emerge lirc

首先,我们要为每个键值定义一个名字。大多数支持的遥控器已经正确的配置了。请参考遥控器列表,下载所需的文件,保存为/etc/lircd.conf。然后,我们要找出用什么设备来访问我们的遥控器。运行下述命令来获得当前的输入设备列表(请确保您的设备在运行中)。

代码 4.3: 当前的输入设备列表

# cat /proc/bus/input/devices
I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="TerraTec/qanu USB2.0 Highspeed DVB-T Receiver remote control"
P: Phys=usb-0000:00:1d.7-1/input0
S: Sysfs=/class/input/input2
H: Handlers=kbd event1
B: EV=100003
B: KEY=108fc210 2043 0 0 0 0 8000 2080 1 9e1680 0 0 ffc

本例中的设备是Terratec Cinergy T2,所以我们可以通过/dev/input/event1来访问设备。用您的输出中相应的设备来替换event1

lircd需要知道设备名。加入此行到/etc/conf.d/lircd。请用您的实际驱动名和设备名替换devinputevent1

代码 4.4: 加入lircd选项

LIRCD_OPTS="-H devinput -d /dev/input/event1"

是时候启动lircd了:

代码 4.5: 启动lircd

# /etc/init.d/lircd start

现在您应该可以看到lircd捕捉,解码按键了。运行irw,查看完毕后用Ctrl+C来结束应用程序。

代码 4.6: 测试LIRC

# irw
0000000000001aa2 00 Exit Technisat_TTS35AI.conf
0000000000001a8d 00 Mute Technisat_TTS35AI.conf
0000000000000a97 00 OK Technisat_TTS35AI.conf
0000000000000a97 01 OK Technisat_TTS35AI.conf
0000000000000a92 00 Menu Technisat_TTS35AI.conf

下一步,将它加入到默认运行级,以便在启动时自动运行。

代码 4.7: 将lircd加入到默认运行级

# rc-update add lircd default

要使用您的遥控器,您必须启用VDR的LIRC支持。把此行加入到/etc/conf.d/vdr

代码 4.8: 启用LIRC支持

# nano -w /etc/conf.d/vdr
IR_CTRL="lirc"

5.  视频输出方案

您需要决定在下列视频输出设备中选择一种(仅仅一种!)输出图像和屏幕显示(OSD)。

硬解压:全功能DVB卡

使用这些昂贵的高档卡的用户不需要额外安装任何软件,您可以前进至配置您的频道列表

硬解压:DXR3/Hollywood+ 卡

使用DXR3卡,我们需要vdr-dxr3插件。

代码 5.1: 安装插件

# emerge vdr-dxr3
# echo em8300 >> /etc/modules.autoload.d/kernel-2.6

em8300模块需要根据卡的版本号作一些配置。

继续 配置您的频道列表

硬解压:PVR350卡

既然PVR350卡配备了板载的MPEG解码芯片,我们当然希望用到它。我们需要安装vdr-prv350插件。如果ivtv-driver还没有安装,emerge会自动为您安装它。我们把ivtv加入到/etc/modules.autoload.d/kernel-2.6使得它在每次启动时自动加载:

代码 5.2: 安装PVR350插件

# emerge vdr-pvr350
# echo ivtv >> /etc/modules.autoload.d/kernel-2.6

继续 配置您的频道列表

软解压: vdr-softdevice

要安装它,我们需要emergevdr-softdevice。不要忘了启用这个插件。

代码 5.3: 安装软解压插件

# emerge vdr-softdevice
# eselect vdr-plugin enable softdevice

要选择正确的音频/视频输出,请编辑/etc/conf.d/vdr.softdevice

到此为止,我们只介绍了shm("shared memory",共享内存)的方案。安装的配置文件(设置SOFTDEVICE_VIDEO_OUT)已经启用此选项。稍后您需要启动ShmClient打开观看窗口。

注意: 如果您不希望采用一个独立的键盘布局来控制VDR,您可以用Matthias Schwarzott的devspace,其中包括适用于softdevice/shm和xineliboutput的文件,更多的正在添加中。复制上述文件到/etc/vdr/remote.conf,对其运行chown vdr:vdr使其能正常工作。

继续配置您的频道列表

软解压: vdr-xineliboutput

一些用户青睐vdr-xineliboutput,因为它支持远程访问。我们现在就教您如何在主机和客户机上配置vdr-xineliboutput。首先,主机的设置:

代码 5.4: 安装vdr-xineliboutput

# emerge vdr-xineliboutput
# eselect vdr-plugin enable xineliboutput

加入下列命令行参数对于xinliboutput的运行至关重要。更多的选项清参考vdr --help

代码 5.5: 加入命令行参数到/etc/conf.d/vdr.xineliboutput

_EXTRAOPTS="--local=none --remote=37890"

下一步是编辑/etc/vdr/svdrphosts.conf。这个文件描述了哪些客户端允许访问主机系统上运行的VDR的SVDRP端口。

代码 5.6: 编辑/etc/vdr/svdrphosts.conf

(正确地语法是:IP地址[/子网掩码])
127.0.0.1             (localhost永远是被支持的)
192.168.1.0/24        (本地网的任何主机)
#204.152.189.113      (一个特定的主机)
#0.0.0.0/0            (任何网络的任何主机 - 请谨慎使用此选项!)

如果您只需要在运行VDR的计算机上用vdr-xineliboutput观看,您可以继续配置您的频道列表

否则,您只需要在您的客户端emerge media-plugins/vdr-xineliboutput

代码 5.7: 客户端设置

# emerge vdr-xineliboutput

在启动VDR后,您可以用vdr-sxfe xvdr://hostname命令来连接VDR,观看图像和屏幕显示。

继续配置您的频道列表

注意: 还有一个插件vdr-dummydevice可以模拟真实的输出设备,用于特殊的场合,比如专用的视频录制服务器,这些高级的应用并非常见的VDR设定。

6.  创建频道列表

要使得VDR真正有用,您还需要创建合适的频道列表。除了下载以外,还有多种方法来获得一个可用的频道列表。默认的安装包含了Astra 19.2°E的DVB-S频道列表。

用linuxtv-dvb-apps的dvbscan

代码 6.1: 安装linuxtv-dvb-apps

# emerge linuxtv-dvb-apps

为您所在区域设定正确的频率以及接收类型。这些文件在/usr/share/dvb/scan。比如在德国纽伦堡地区接受DVB-T,您需要用/usr/share/dvb/scan/dvb-t/de-Nuernberg

代码 6.2: 用dvbscan来扫描频道

$ dvbscan -o vdr /usr/share/dvb/scan/dvb-t/de-Nuernberg > /etc/vdr/channels.conf

使用vdr-reelchannelscan

首先,删除已有的频道列表。

代码 6.3: 清除旧的频道列表

# rm /etc/vdr/channels.conf

代码 6.4: 安装并激活vdr-reelchannelscan

# emerge vdr-reelchannelscan
# eselect vdr-plugin enable reelchannelscan

采用vdr-analogtv系统的频道

您也许在此要设置您的频道列表。如果您安装了>=media-plugins/vdr-analogtv-1.0.00-r1,VDR项目在/usr/share/doc/vdr-analogtv-$version/examples/提供了一些例子。

7.  启动VDR

完成了所有基础的软件部分,您还需要配置VDR的屏幕输出(OSD)。

如果你使用硬件解码器,您现在可以切换到连着的电视了。如果您使用软件解码器,客户端必须在VDR启动后运行。

首先,您必须学习键盘定义;即把按键和VDR内部命令联系起来。

注意: 考虑到您也许需要编辑键盘配置,或者更有可能的是删除配置,回到键盘学习的状态,友情提醒:VDR在/etc/vdr/remote.conf保存按键定义。

我们首先启动VDR:

代码 7.1: 启动VDR

# /etc/init.d/vdr start
* Preparing start of vdr:
*   config files ...                                        [ ok ]
*   Waiting for prerequisites (devices nodes etc.) ...      [ ok ]
* Starting vdr ...                                          [ ok ]
* First start of vdr: No check for running vdr possible
* until control device (remote/keyboard) keys are learnt!

注意: 使用软件解码器的用户可以开启客户端程序,它会打开一个窗口显示电视画面和OSD

代码 7.2: 激活客户端的软件解码器

(使用vdr-softdevice的用户)
# ShmClient
(使用vdr-xineliboutput的用户)
# vdr-sxfe xvdr://hostname

VDR最有用的键是:

  • 方向键(左/右/上/下)
  • 菜单/退出/选择
  • 颜色设置(红/绿/黄/蓝)
  • 数字键(0-9)

重要: 如果您没有很多键备选,保证分配这些键。(某些遥控器的播放/暂停等键和颜色设置共用同样的键,用它们设置颜色。)

基本的安装已经结束,您还需要配置VDR。切换到输出屏幕,按照屏幕上的指令配置操作。VDR会要求您按下遥控器上的键来学习正确的键值。如果您没有遥控器,您也可以使用您的键盘。

现在您可以把VDR启动脚本加入到默认运行级,在您的计算机启动的时候自动运行。

代码 7.3: 将vdr加入默认运行级

# rc-update add vdr default

8.  排错

注意: 如果您需要任何帮助,您可以在#gentoo-vdr发问,或者查看我们的论坛



打印

更新于2008年 12月 12日

本翻译的原始版本已经不再被维护

总结: 本指南向您展示如何配置Gentoo Linux来支持DVB和VDR。

Norman Golisz
作者

Dimitry Bradt
作者

Matthias Schwarzott
作者

Joshua Saddler
编辑

奚焜
译者

陆冠群
译者

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.