对于想架设自己的P2P媒体服务器的人来说,TVants是不错的选择,不管大家如何看待这个软件,我一直还是比较支持这个软件的,我所接触的一些开源的P2P媒体服务软件,要么不是功能不全面,或者开发滞后或者是其他原因未能采用。
首先需要说明的是: 这个手册不是给TVants的初学者的,所以本手册不会花费太多的时间阐述如何使用TVants来架设P2P媒体服务器,同样也不会花费时间去讲述如何搭建Windows Media Server和如何使用电视卡,如何采集电视信号等等。这是一篇简版的提供Web、节目列表、动态截图的P2P媒体服务的手册,这里只是提供一个思路,具体实现步骤比较麻烦,所以不详述,忘各位网友见谅,大家有兴趣可以上论坛来交流:)
转载请保留一下信息:
Zhankao WEN(温占考)
Email: wzk{AT}wenzk.net
榆树社区: http://www.wenzk.net
Blog: http://wenzk.cublog.cn
本文首发在 榆树社区论坛 http://www.wenzk.net/bbs 的 Windows系统 版本。
关于TVants的使用说明,可以在http://bbs.tvants.com上找到不少信息,关于如何使用TVants架设P2P服务器可以参考http://bbs.tvants.com/dispbbs.as ... p;ID=264&page=1 这篇文章好久没有更新了,新版本多了不少功能和选项,但是没有相关的文档说明,可以自己猜测+试验,如果实在搞不出来就放弃吧,对于数据库的接口,我也一直没有搞明白,上论坛问也没有人搭理,不过也是,人家愿意把Tracker贡献出来就不错了,还要求什么呢。
也可以参考这位兄弟写的一个手册,里面似乎介绍了如何架设一个P2P服务器 http://bbs.tvants.com/dispbbs.as ... ID=12843&page=1 ,这个帖子不错。
自从2006年6月使用TVants架设P2P媒体服务以来,一直希望能够得到官方的一些帮助,对Tracker提出了一些需求,但是始终没有人搭理,这个是我比较郁闷的,那时候TVants比较简单,只要是人就可以往你的Tracker上push节目,不经任何验证就可以被Search到,所有的节目都使用同一个公告【虽然官方那个时候可以使用不同的公告,但是我们不知道如何实现的】。后来,大概是06年12月份吧,推出一个版本,可以支持节目审核、不同节目使用不同的公告、节目四周还投放不同的广告,这个版本推出后,对我启发颇大,在这个版本的基础上,实现了单节目在线人数统计功能【通过web显示,直接用客户端搜索出来的不算】。
废话这么多之后先看看我的环境吧,拓扑图如下:
这幅图看上去似乎机器有点多,其实主要有3类机器:
TVants的Tracker服务器: 所有看节目的用户都连接这台机器,这台机器负责收集用户信息提供给其他用户,总之就是一个Windows XP + TVants软件,定期导出TVants的注册表。
Linux服务器: 这个机器串在TVants Tracker服务器前面,主要是为了TVants Tracker的安全,我一直不是很相信Windows的安全,或许是我不会配置吧,所以用Linux来保证她的安全,提供用于抓取节目列表,提供Web服务,统计在线人数,对所有节目进行截图等等工作,有的时候截图负载比较重,可以使用多来来协同工作。
Meida Server: 用户很明确了,主要就是用来提供媒体服务的。
Encoder Server: 用于采集视频信号的,功能很容易搞定哦。
下面来说明每个功能都是如何实现的吧:
1、本地提供的所有节目列表: 一开始想通过给官方建议,发行一个版本,可以设定 定期 把服务器端的数据: 节目名字 HASH 在线用户数 等信息导出到一个文本文件,这样便于大家写程序去读取这个文件,让用户可以在WEB上看到这些信息,到现在为止,我还在建议,但是始终没有人理会,后来我有2个解决办法:
I: 分析TVants的搜索功能,然后把结果搞出来,这样需要的那些信息都有了,包括在线用户,节目的质量等等都没有问题,因为我不太会sniffer和分析协议,所以这个方法我放弃了,有人能去搞更好了,我直接拿成果就可以了。
优点: 实时性强
缺点: 实现比较复杂
II: 发现注册表里面也有部分信息,当然了,没有在线用户数而已,那也凑合用吧。所以最后决定定期导出TVants的注册表来实现。
优点: 容易实现
缺点: 事实性差,好久才能更新注册表文件,所以节目的质量更新滞后。
2、关于在线用户数统计: 这个功能使用了TVants提供的每个节目可以提供不同的广告,主要是不同的节目banner广告可以使用不同的URL,利用这个功能就可以把每个不同的节目区别开来了,如: http://somehost/list.php?name=cctv5 这个表示cctv5的节目,这样在banner上使用Ajax技术就可以很轻松的统计当前CCTV5的在线人数了,具体list.php输出些什么内容可以根据不同的需求来搞定了,我这里用来输出当前节目的节目预告表,这样大家一边看节目的时候,还可以看到节目预告。
3、关于节目预告列表: 根据上述的name=cctv5可以收集到本站的一些节目列表,通过写程序,把CCTV5对应到央视网站的CCTV5的节目列表,定期下载当前的节目预告表,然后进行分析后保存到本地,再根据本地时间显示正在播放的节目。
4、屏幕的截图: 根据上面导出的注册表可以获得每个频道的节目源真实的地址,通过Linux下的Mplayer定期访问这个节目源,把内容输出成图片,然后存放于固定为止,命名为cctv5.jpg等等,这样截图也就搞定了,因为我不会搞Windows下的编程【其实Linux下的也不会,智慧写脚本而已】,所以我选择使用Linux下的Mplayer来截图,缺点: 在用很大的负载,所以我搞了大概3台机器来截80个节目的图片。
剩下的一些就是开发web的问题了,这里由于配置的难易程度不一样,所以不详细介绍每一个环节具体是如何实现的。有兴趣的可以单独交流。
目前存在问题: 节目列表更新滞后,特别是节目的质量有变化的时候,TVants需要很长时间才能更新注册表文件,自己有的想法是: 如何定期让TVants写一次注册表,在win下也不能使用kill -HUP,所以比较郁闷;另外一个方法就是建议官方把这些信息定期导出来,还在努力中。。。;最后一个办法就是搞清楚官方的数据库接口如何使用,由于文档完善,所以没有办法使用。
目前官方的文档相当的不全面了,对于Tracker的Cluster DB Datasource还有一些新加的功能都没有任何说明,有个 蚂蚁助手 稍微解释了一下 cluster 的用法,本人愚笨,未能理会,系统官方能多为想使用Tracker的人考虑考虑,听听大家的建议。毕竟P2P的很多,但是提供Tracker的似乎就只有TVants,不要让大家失望。
下面是一些截图:
目前我弄的那个站的首页【有点粗糙】:
单个节目列表:
播放器下面的banner:
查看全部回复
我也来说两句



