中国教育和科研计算机网 作者:邹仁明
网络电视服务在校园网应用中相当普遍,利用网络看电视已成为 广大学生收看电视的主要途径。管理员如何监控网络电视的运行状况、了解网络电视的服务质量,如何让用户实时查看节目内容、方便收看电视节目?笔者认为,网 络电视墙可以方便实现这些需求,网络电视墙服务能够定期采集所有电视节目的画面,以网页形式将节目画面组合起来,用户通过浏览电视墙网页来了解节目内容, 然后点击画面即可方便收看节目(图1为中国农业大学网络电视墙的用户展示页面)。电视墙节目画面可以弹出节目播放窗口,用VLC媒体播放器插件就可以自动 播放电视节目。下面简单介绍网络电视墙的建立过程,希望对管理员有所帮助。
中国农业大学网络电视墙的用户展示页面
采集电视节目画面
网络电视墙的运行环境为Windows 2003和VLC 1.0.2媒体播放器(软件及参考文档从VLC官方网站下载http://www.videolan.org/)。利用VLC媒体播放器的后台抓屏功能来 定期采集电视节目的播放画面,比如:网络电视节目源地址为udp://@225.1.1.1:4000,采集时间是5秒,采集画面放在目录 c:\tvwall下,画面文件命名为tv1.png,其文件类型为png。VLC命令画面采集方法是:
vlc -V dummy --intf=dummy --dummy-quiet --video-filter=scene --no-audio --scene-path=c:\tvwall\ --scene-format=png --scene-prefix=tv1 --scene-replace --run-time=5 --scene-ratio=24 "udp://@225.1.1.1:4000" vlc://quit
VLC命令选项 -V dummy --intf=dummy --dummy-quiet 表示VLC播放器后台运行,否则桌面会出现VLC播放窗口。
VLC命令选项 --run-time=5 vlc://quit 表示运行抓屏命令5秒后,VLC播放器退出。
编写节目画面采集批处理,批处理文件名为c:\tvwall\tv1.bat,网站发布目录为 c:\wwwdoc。采集前先清除过时的节目画面,并临时采用节目故障文件noTV.png替换已发布的画面文件。采集成功后将新采集的画面文件复制到网 站发布目录,节目采集脚本如下:
echo snapshot TV1
del c:\tvwall\tv1.* /q
C:\tvwall\noTV.png c:\wwwdoc\tv1.png /y
"C:\Program Files\VideoLAN\VLC\vlc" -V dummy --intf=dummy --dummy-quiet --video-filter=scene --no-audio --scene-path=c:\tvwall\ --scene-format=png --scene-prefix=tv1 --scene-replace --run-time=5 --scene-ratio=24 "udp://@225.1.1.1:4000" vlc://quitcopy copy
c:\tvwall\tv1.png c:\wwwdoc\ /y
利用操作系统的任务计划,每隔10分钟运行一次节目采集批处理脚本,实现 电视画面的自动采集,任务计划命令行的创建方法是:
schtasks /create /sc minute /mo 10 /tn "SnapshotTV1" /tr c:\tvwall\tv1.bat
制作与发布电视墙网页
利用Windows 2003系统自带的IIS服务器来实现网络电视墙的发布服务。电视墙网页以表格形式将生成的电视画面排列起来,分别为电视画面做网页链接,即链接到相关电 视节目的播放页面。在电视墙网页的头部加上网页控制项:去除浏览器网页缓存,浏览器每隔10分钟自动更新网页内容。节目播放窗口由窗口打开方法定制浏览器 窗口,嵌入节目播放网页。电视墙网页的主要内容如下:
<html><head>
<meta http-equiv="expires" content="0">
<META HTTP-EQUIV='Refresh' CONTENT='600'>
<META HTTP-EQUIV='Cache-Control' content='no-cache'>
<META HTTP-EQUIV='Pragma' CONTENT='no-cache'>
</head><body>
<table width="810" border="0" align="center" bordercolor="#0000FF" bgcolor="#99FF99">
<tr>
<td width="400"><a class=nav onclick="window.open('tv01.htm','newwin','status=no,scrollbars=0,resizable=0,width=715,height=600');return false;" href="#"><img src="tv1.png" alt="凤凰资讯" width="200" height="150" border="0"></a></td>
……
</tr>
</table></body></html>
节目播放网页 tv01.htm嵌入了VLC播放器插件,指定相关电视节目源播放地址,添加播放、停止、全屏、音量调节按纽来控制节目播放,该网页的内容如下:
<HTML><BODY><SCRIPT LANGUAGE="JScript">
function updateVolume(deltaVol)
{
vlc.Volume += deltaVol;
volumeTextField.innerText = vlc.Volume+"%";
};
function doGo(targetURL)
{
var options = new Array(":input-repeat=0");
document.vlc.addTarget(targetURL,options, 4+8, -666);
//document.play();
};
</SCRIPT>
<table cellSpacing=0 cellPadding=0 width="715" border="0">
<tr> <td width="715">
<object id=vlc codebase="" height=576 width=715
classid=clsid:E23FE9C6-778E-49D4-B537-38FCDE4887D8 events="True">
<param name="Src" value="udp://@225.1.1.1:4000">
<param name="ShowDisplay" value="True">
<param name="Loop" value="False">
<param name="AutoPlay" value="true">
<embed src="" width="715" height="576"
loop="False" showdisplay="True" autoplay="False"></embed>
</object></td></tr>
<tr><td><center>
<INPUT type=button id="PlayOrPause" value=" 播放 " onClick='document.vlc.play();'>
<INPUT type=button value=" 停止 " onClick='document.vlc.stop();'>
<INPUT type=button value=" 全屏 " onClick='document.vlc.fullscreen();'>
<INPUT type=button value=" 音+ " onClick='document.vlc.Volume +=10;'>
<INPUT type=button value=" 音- " onClick='document.vlc.Volume -=10;'>
</center></td></tr>
</table></BODY></HTML>
若不想用网页插件方式播放电视节目,可在电视墙画面链接 中指定播放地址,由系统按流媒体类型选择媒体播放器,如:电视节目源为mms://video.bupt.edu.cn/BTV-4,系统会自动选择 Windows Media Player媒体播放器收看BTV-4,链接实现方法如下:
<a href="mms://video.bupt.edu.cn/BTV-4" target="_tvwall"><img src="btv4.png" alt="BTV-4" width="200" height="150" border="0"></a>
(作者单位为中国农业大学)