ISCNUTV 诞生记
上学期期末的时候晓找我说要做一个给IPV6电视直播的播放器。由于临近期末忙于复习,工程没有马上开始,暑假的时候又跑实习,一直拖到了开学。
找了个还算空闲的晚上,凑了凑代码,终于算是拼起播放器了。算了一下,前前后后包括和CS、晓的讨论时间,这个东西花了我将近一整天。虽然挺费时,不过总算是有点成就感,毕竟在这之前C#一直是用来写asp.net的,winform我还真没玩过,这也算是我发布的第一个winform了。
基于无知和对微软的支持,这个项目动用了.net framework 4.0。发布后试用的时候才想起win 7自带的是3.5版本,换句话说,要使用这个播放器,必须保证你的pc先安装了.net framework 4.0。这不得不说很失策,毕竟让用户多安装一个框架对于用户体验来说是个很大的打击。尝试过将项目转换为3.5版本,在得到一堆错误修改得不耐烦后终于放弃,只能安慰自己:好吧,或许很多win 7用户在安装其他软件时已经安装了。
对于一个播放器软件,最主要的部分当然就是播放器了(这话怎么听起来很废话)。原本打算用JAVA来编这个播放器的,后来发现在VS2010上,本来就有WMP的控件,这么一来就省事多了,只需拖一个控件出来,写几行代码,给播放器赋一个URL,也就能看电视了。
接下来的问题是如何实现这些URL的更新,事实上这种播放器华师之前有一个,不过据说地址都是写在程序里面的,日久天长,有些地址失效了却依旧留在程序里,有一些新地址被发现却无法更新到程序中,所以把地址写在程序中不是一个好办法。据CS的说法,这些地址可以从服务器上的MMS里得到,所以最佳的办法就是写一个脚本读MMS里面的地址然后返回给客户端。可惜搞了很久终究弄不明白怎么读MMS里面的地址,退而求其次,写了一个asp页面,直接读access里面的地址然后发送给播放器,这么一来的话,假如地址有更新,网协的伙计们随之更新到access数据库中,那么用户得到的地址,也就是最新的了。
由于我根本没有用网络看电视的习惯,事实上我AD也看不了,所以做这个播放器的过程中特意跑到剑魂那里参考之前那个播放器的外观,获得一个很总要的信息是之前的播放器尺寸是固定的,这在剑魂看来,是很不为用户着想的。为了解决这个问题,搜索了很久“控件 窗口 自适应”,发现都没说到要点。后来灵感突至,记起不久前做一个联通客服的页面,也要求页面大小自适应,最后的解决办法是用js获取浏览器大小,加加减减后赋值给各个div。在这个问题上应该也能用同样的思路解决,事实上的确是这样子,只要每次from resize时令WMP控件的width和height等于clientSize,播放器也就填满整个窗口并且可以随便缩放了。
再有一个问题是电视台列表的位置摆放,先前的播放器是固定位置,觉得不好,观看电视时可能会影响视线,参照迅雷等播放器软件,觉得使用隐藏菜单是个不错的选择。在程序上根据鼠标的位置控制panel的显现与隐藏并非难事,难的是虽然电视台列表在panel的正上方,但终究不是panel本身,所以在这种情况下当鼠标移到电视台列表上时,鼠标已经是移出了panel区域,列表也就隐藏了。这显然是不符合需求的。多次尝试后还是改用了按钮控制列表的显现和隐藏,我想假如以后我还有空闲修改这个程序的话,这个地方要重点处理。
附私人下载地址,欢迎使用。http://gzczy2010.web.17.datatm.com/tengs_project/ISCNUTV.rar