高清数字电视走进校园网系列之二
2007年8月1日开始实施的数字电视地面传输标准名为DMB-TH标准。作为中国地面数字电视传输的国家标准,DMB-TH既突破了美国地面数字电视ATSC标准不支持移动接收的局限,又超越了欧洲地面数字电视DVB-T标准抗噪声和多径干扰的能力。该标准支持高清晰度电视、标准清晰度电视和多媒体数据广播等多种业务,满足大范围固定覆盖和移动接收需要。目前国内不少大中城市都开通了DMB-TH地面数字高清电视信号(见表1),无线开路不加密播出。绝大部分高清频道都是以MPEG2编码方式播出。由于带宽关系,一个频段只能容纳一个20Mbps左右码率的高清频道。
|
城市 |
接收频率 |
高清频道名称 |
|
上海 |
522Mhz |
CCTV-HD |
|
666Mhz |
东方高清 |
|
|
北京 |
674Mhz |
CCTV-1高清频道 |
|
482Mhz |
纪实高清频道 |
|
|
天津 |
674Mhz |
CCTV-HD |
|
济南 |
674Mhz |
CCTV-HD |
|
沈阳 |
794Mhz |
CCTV-HD |
|
南京 |
546Mhz |
江苏卫视高清 |
|
广州 |
786Mhz |
CCTV-HD |
表1: 国内部分开通高清频道城市
家庭用户如果想通过地面无线传输收看这些高清频道有三种选择。1.内置接收模块的高清数字电视一体机。2.支持DMB-TH接收的数字机顶盒+高清电视机。3.支持DMB-TH接收的电视卡+电脑+高清电视机(可选) 。对于电视普及率极低,电脑普及率接近100%,用户高度密集的高校校园网来说,如果想让校内师生都能够欣赏高清数字电视节目,每人买一块电视卡实在不现实。建议的一种做法是学校的信息化部门可以通过支持DMB-TH的电视卡或数字机顶盒(支持网络TS流输出),把高清数字电视信号IP流化引入校园网,然后通过单播组播技术传递到校园网每个桌面用户。如果使用接收地面波的数字机顶盒,可以考虑选择F304,但是这种方式成本相对高一点,本文不做过多讨论。我们下面详细说明使用电视卡的低成本实现过程。

图2: VLC 1.0.x 的图形化配置接收电视信号界面

图3: VLC 1.0.x 的命令行配置接收电视信号界面
VLC接收时要指定频率,上图就是上海地区接收666Mhz的东方高清的写法。VLC接收到信号之后,有两种方式可以把其转变为MPEG2的TS流分发出去。1.本地打开监听端口。如图2或图3打开TCP的1234端口,接受服务器端VLC程序发过来的请求并把电视流信号传过去,接收端不直接面对最终用户提供服务。2. 接收端在本地VLC接收信号的同时,以IPv4组播的方式把电视流信号发送进校园网。IPv6组播虽然也可以实现,但目前大部分三层交换机和桌面交换机对IPv6组播支持都不佳,所以实验网里跑跑测试可以,正式网络中几乎无法部署。IPv4组播相对比较成熟,虽然调试过程中可能会比较麻烦,但大都可以完成在校园网内的正式部署。
根据我们的经验,组播必定会有很多到不了的地方,比如交换机不支持组播的地区,各处自建的局域网内部,另外用户端的防火墙配置也可能会影响正常组播报文。所以为了大面积推广使用,单播也是必须要提供的一种方式。上面提到的两种分发TS流的做法可以互相结合,前者服务器拿到流之后可以再次组播发出去,后者在校园网内的服务器收到组播流之后又可以单播方式向用户提供服务。服务器端使用的软件还是VLC,不过版本不再局限于 1.0.x ,也可以使用 0.9.x 系列版本。
有一点需要特别提及的是无论在Windows平台还是Linux平台,VLC长期工作稳定性都欠佳。一个建议的做法是使用监护进程来循环检测VLC进程是否正常工作,正常工作就不动作,如果发现进程异常退出就将其重新启动。以下为Windows平台下一个计划任务加简单批处理脚本的例子,Linux下使用crontab加脚本做定时检查实现起来也非常方便。
Daemon.bat (计划任务里定义每分钟运行一次)
@echo off
netstat -an|find /c /i “0.0.0.0:1234″ > null
if “%errorlevel%” == “1″ goto startvlc
goto exit
:startvlc
vlc.exe –meta-title “HD666″ dvb-t://frequency=666000000 :dvb-bandwidth=-1 :sout=#duplicate{dst=std{access=http,mux=ts,dst=:1234}}
:exit