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/lirc.conf。请用您的实际驱动名和设备名替换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年 3月 21日

本文档的原始版本最后更新于2008年 6月 12日

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

Norman Golisz
作者

Dimitry Bradt
作者

Matthias Schwarzott
作者

Joshua Saddler
编辑

奚焜
译者

陆冠群
译者

Donate to support our development efforts.

Support OSL

Support OSL

Gentoo Centric Hosting: vr.org

VR Hosted

Tek Alchemy

Tek Alchemy

SevenL.net

SevenL.net

Global Netoptex Inc.

Global Netoptex Inc.

Bytemark

Bytemark

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