LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1472|回复: 1

UBUNTU下观看DVB数字电视

[复制链接]
发表于 2008-11-27 21:42:05 | 显示全部楼层 |阅读模式
(作者ylinon[link])
现在,数字电视逐渐走入我们的生活,很多城市都有了数字电视的信号。弄一张数字电视卡,在计算机上观看数字电视也成为了很方便的事。Windows下我们可以用 DvbViewer、altdvb等软件来方便的观看电视节目。可是在linux下怎么做才能看呢?本文以Ubuntu 8.04 为操作系统蓝本,进行说明。

#linux技术相关,不感兴趣的请无视

首先,解说一下本文用到的基础知识:
DVB-C、DVB-T、DVB-S、ATSC:
DVB-S用于卫星数字电视广播
DVB-C用于有线(同轴电缆)数字电视广播的
DVB-T用于地面数字电视广播的
其中DVB-S标准已为全球所认同(现在很多卫星都使用这种标准传输视频);DVB-C为欧洲,澳大利亚,北美,南美等一些国家接受(我国一些城市也是采用这种标准,比如上海市,听说就可以收到不少标清和高清频道);DVB-T则用于地面无线数字电视。
ATSC:ATSC是美国的数字电视国家标准,深圳似乎有这个信号
#其实在无线数字电视领域,最广泛的还是国内的几个标准:清华大学的dmb-t、上海交大 adtb-t,以及针对手机电视的cmmb,与本文涉及不大,感兴趣的童鞋请自行去查阅。
===================================
下面开始正文:
因为我人在哈尔滨,使用的linux系统是Ubuntu 8.04,所以都以这些为基本条件。请灵活一些,不要生搬硬套
电视卡是 FlyDVB-T Hybrid CardBus工包,没有遥控器,所以关于遥控的部分也没有
1.驱动:
接上电视卡,如果系统能够自动识别并配置好,那么恭喜你,直接跳过本部分即可(由于电视卡的多重多样,很多人没有这么幸运)如果不是,请继续
输入命令
$ sudo lspci -vvv

能看到电视卡的信息,根据这个找驱动,我用的的卡是这样的(由于我这个卡同时支持模拟和dvb-t信号,仅供参考):

    * ①到下面这几个网址去看电视卡列表,这里面包括了电视卡的驱动信息,也就是要找电视卡对应的序号(也不用都看,如果能确认电视卡的芯片,比如philips芯片只要看第三个就可以),如果你的电视卡幸好在这几个列表之中,那么同样恭喜你,可以很容易的解决驱动问题

http://linuxtv.org/hg/v4l-dvb?cm ... enode=-1;style=/raw
http://linuxtv.org/hg/v4l-dvb?cm ... lenode=-1;style=raw
http://linuxtv.org/hg/v4l-dvb?cm ... lenode=-1;style=raw
②高频头型号(自己想办法找到自己用的高频头型号,然后到下面的地址去找):
http://linuxtv.org/hg/v4l-dvb?cm ... lenode=-1;style=raw
③到 http://linuxtv.org/downloads/firmware/ 下载 firmware ,并复制到 /lib/firmware/ 目录下
如果你不知道下载哪些文件,那就都下载下来吧反正也占用不了多少空间

我的电视卡芯片是philips saa7131e,型号是 FlyDVB-T Hybrid CardBus在型号列表中正好有,是第序号94的那个 高频头是TDA8275a 序号是54
我就在提示符下这样写:
$ modprobe saa7134 card=94 tuner=54
这样驱动就安装好了

$ dmesg

可以看到安装成功与否的相关信息

#假如没有驱动成功,可能是电视卡型号比较偏门,到http://linuxtv.org/ 去找一下相关信息吧。应该能够解决绝大部分问题。

2.安装软件
①安装 dvb-utils
$ sudo apt-get install dvb-utils
②然后就可以尝试搜寻可用的电视台
建立一个文件
如果您和我一样在哈尔滨 内容就可以这样(只有一行):
T 618000000 8MHz 2/3 AUTO QAM16 8k 1/8 NONE
保存文件名为 haerb

扫描:
$ scan haerb > ~/channels.conf
这样,在用户目录里channels.conf 就保存了相关的频道参数,可能有乱码情况,请自己修改一下
(我的内容如下,已经经过修改了 哈尔滨的朋友可以直接拿来用,三个标清频道,记住是DVB-T信号)

a001f:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTOAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:111:112:31
a0020:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTOAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:121:122:32
a0021:618000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTOAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE:131:132:33

如果你安装了mplayer,这时候就可以把 channels.conf 拷贝到 你用户目录中的 .mplayer 里面(mplayer前面有个点)
$ cp channels.conf .mplayer
输入下面的命令就可以看数字电视了 键盘 h 和 l 换频道
$ mplayer dvb://
===============================

注意:这里面有个两个关键,就是我的那个haerb文件 和channels.conf 文件

① 如果您可以在 /usr/share/doc/dvb-utils/examples/scan/dvb-t/ 目录里保存了很多城市的接收参数

能在里面找到你的城市 就最好了 扫描的时候就可以这样(我看了,没有中国大陆的,就以中国台北为例了)
$ scan /usr/share/doc/dvb-utils/examples/scan/dvb-t/tw-Taipei ~/channels.conf
如果没有,就只能自己写一个,不过这就需要知道频道所在频率等等信息,简单的办法就是去windows下把频道扫描了,然后记录下来频率
如果是标清的信号,用你所在地的dvb-t频道频率 直接替换haerb的频率应该就可以 也就是替换掉 618000000
然后按照上面所说的操作即可

如你果成功了,请把频道列表和扫描频道的频率信息文件内容发给我,留言就可以,我汇总一下,这样就可以给更多人打开方便之门

② 关于channels.conf,由于 一个频率能传输好几套标清信号,比如哈尔滨在618000000有6个频道,但是只有3个频道是有节目信号的,所以还需要手动的编辑一下,给频道改个名称(最好是英文的,而且不要带 [ 和 ] )。

至于怎么判断有没有信号,可以每个频道都录制几秒钟,看录制下来的文件大小就很容易判别。
===============================

我安装了一个叫me-tv的小软件,把channels.conf 拷贝到 ~/.me-tv目录里,就可以很方便用了

如果您嫌功能不够 那还有mythtv 这个非常好的软件, 功能非常强大

如果感兴趣的人多,我有空写一个mythtv 的使用说明

===============================

到这里,基本上就完结了,我用的是dvb-t,但是对于dvb-s dvb-c atsc 也应该是适用的,只是扫描频率用的文件和频道等等有些不同(个人更期待有用锅接收卫星dvb-s的朋友,这样节目就会很丰富了)。

还有一些应用,比如把接收到的电视节目,用网络广播出去等等还没有时间去搞。抛砖引玉,有不当之处还请提出,我会尽快修改。

还有,成功之后,请不要忘记把频道列表和扫描频道的频率信息文件贴出来,我会整理出来 帮助更多的人。
发表于 2008-11-29 12:08:23 | 显示全部楼层
谢谢兄弟的分享,可惜我没有电视卡
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表