Gentoo Linux VDR指南
1.
DVB简介
什么是DVB?
DVB是Digital 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
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
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。请用您的实际驱动名和设备名替换devinput和event1。
代码 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 |
127.0.0.1
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: 激活客户端的软件解码器 |
# ShmClient
# vdr-sxfe xvdr://hostname
|
VDR最有用的键是:
- 方向键(左/右/上/下)
- 菜单/退出/选择
- 颜色设置(红/绿/黄/蓝)
- 数字键(0-9)
重要:
如果您没有很多键备选,保证分配这些键。(某些遥控器的播放/暂停等键和颜色设置共用同样的键,用它们设置颜色。)
|
基本的安装已经结束,您还需要配置VDR。切换到输出屏幕,按照屏幕上的指令配置操作。VDR会要求您按下遥控器上的键来学习正确的键值。如果您没有遥控器,您也可以使用您的键盘。
现在您可以把VDR启动脚本加入到默认运行级,在您的计算机启动的时候自动运行。
代码 7.3: 将vdr加入默认运行级 |
# rc-update add vdr default
|
8.
排错
注意:
如果您需要任何帮助,您可以在#gentoo-vdr发问,或者查看我们的论坛。
|
本文档的内容遵循知识共享-署名-相同方式共享许可协议
|